refactor(game): merge

This commit is contained in:
Kristofers Solo 2024-01-03 17:59:14 +02:00
parent f5d990b1fd
commit 7372b25479

View File

@ -65,21 +65,20 @@ class Game2048:
if not np.array_equal(self.board, tmp_board): if not np.array_equal(self.board, tmp_board):
self.add_random_tile() self.add_random_tile()
def merge(self, row: np.ndarray) -> np.ndarray: def merge(self, row: np.ndarray) -> bool:
row = row[row != 0] done = False
merged_row = np.zeros_like(row) for row in range(self.size):
j = 0 for col in range(self.size - 1, 0, -1):
for i, _ in enumerate(row): if (
if i < len(row) - 1 and row[1] == row[i + 1]: self.board[row, col] == self.board[row, col - 1]
merged_row[j] = 2 * row[i] and self.board[row, col] != 0
j += 1 ):
elif row[i] != 0: self.board[row, col] *= 2
merged_row[j] = row[i] self.score += self.board[row, col]
j += 1 self.board[row, col - 1] = 0
done = True
return np.concatenate( return done
(merged_row, np.zeros(self.size - len(merged_row))), axis=0
)[: self.size]
def display(self) -> None: def display(self) -> None:
for row in self.board: for row in self.board: