From f35d6af543dc5bcd44d0261eec7b2f5940be1d8b Mon Sep 17 00:00:00 2001 From: Reduan204 Date: Sun, 26 Jul 2026 11:02:18 +0000 Subject: [PATCH] first commit --- main.py | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..914cf82 --- /dev/null +++ b/main.py @@ -0,0 +1,114 @@ +import random + + +grid = [ + [0, 2, 0, 4], + [0, 0, 8, 0], + [2, 0, 0, 2], + [0, 0, 0, 2] +] + + +def print_grid(grid): + for row in grid: + print(" | ".join(str(cell) for cell in row)) + print("-" * 15) + +def get_move(): + while True: + move = input("Move (w/a/s/d): ") + if move in ["w", "a", "s", "d"]: + return move + print("Invalid! Use w, a, s, or d.") + +def slide_merge(line): + new_line = [x for x in line if x != 0] + for i in range(len(new_line) - 1): + if new_line[i] == new_line[i + 1]: + new_line[i] = new_line[i] * 2 + new_line[i + 1] = 0 + new_line = [x for x in new_line if x != 0] + new_line += [0] * (4 - len(new_line)) + return new_line + +def move_up(grid): + for col in range(4): + column = [grid[row][col] for row in range(4)] + new_column = slide_merge(column) + for row in range(4): + grid[row][col] = new_column[row] + +def move_down(grid): + for col in range(4): + column = [grid[row][col] for row in range(4)] + new_column = slide_merge(column[::-1])[::-1] + for row in range(4): + grid[row][col] = new_column[row] + +def move_left(grid): + for row in range(4): + grid[row] = slide_merge(grid[row]) + +def move_right(grid): + for row in range(4): + grid[row] = slide_merge(grid[row][::-1])[::-1] + +def check_win(grid): + for row in grid: + for cell in row: + if cell == 2048: + return True + return False + +def check_game_over(grid): + for row in grid: + for cell in row: + if cell == 0: + return False + + for row in grid: + for i in range(3): + if row[i] == row[i + 1]: + return False + + for col in range(4): + for row in range(3): + if grid[row][col] == grid[row + 1][col]: + return False + + return True + +def add_random_tile(grid): + empty_cells = [] + for row in range(4): + for col in range(4): + if grid[row][col] == 0: + empty_cells.append((row, col)) + + if len(empty_cells) == 0: + return + + row, col = random.choice(empty_cells) + grid[row][col] = 2 if random.random() < 0.9 else 4 + +print_grid(grid) + +while True: + direction = get_move() + if direction == "w": + move_up(grid) + elif direction == "s": + move_down(grid) + elif direction == "a": + move_left(grid) + elif direction == "d": + move_right(grid) + add_random_tile(grid) + print_grid(grid) + + if check_win(grid): + print("You win!") + break + if check_game_over(grid): + print("Game over!") + break