first commit
This commit is contained in:
commit
f35d6af543
1 changed files with 114 additions and 0 deletions
114
main.py
Normal file
114
main.py
Normal file
|
|
@ -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
|
||||
Loading…
Add table
Reference in a new issue