import random
import os
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
def print_board(board):
clear_screen()
print("2048 Game")
for row in board:
print("\t".join(str(cell) if cell != 0 else '.' for cell in row))
print()
def add_new_tile(board):
empty_cells = [(i, j) for i in range(4) for j in range(4) if board[i][j] == 0]
if empty_cells:
i, j = random.choice(empty_cells)
board[i][j] = 2 if random.random() < 0.9 else 4
def move_left(board):
for i in range(4):
row = [cell for cell in board[i] if cell != 0]
for j in range(len(row) - 1):
if row[j] == row[j + 1]:
row[j] *= 2
row[j + 1] = 0
row += [0] * (4 - len(row))
board[i] = row
def move_right(board):
for i in range(4):
row = [cell for cell in board[i] if cell != 0]
for j in range(len(row) - 1, 0, -1):
if row[j] == row[j - 1]:
row[j] *= 2
row[j - 1] = 0
row = [0] * (4 - len(row)) + row
board[i] = row
def move_up(board):
for j in range(4):
col = [board[i][j] for i in range(4) if board[i][j] != 0]
for i in range(len(col) - 1):
if col[i] == col[i + 1]:
col[i] *= 2
col[i + 1] = 0
col += [0] * (4 - len(col))
for i in range(4):
board[i][j] = col[i]
def move_down(board):
for j in range(4):
col = [board[i][j] for i in range(4) if board[i][j] != 0]
for i in range(len(col) - 1, 0, -1):
if col[i] == col[i - 1]:
col[i] *= 2
col[i - 1] = 0
col = [0] * (4 - len(col)) + col
for i in range(4):
board[i][j] = col[i]
def is_game_over(board):
for i in range(4):
for j in range(4):
if board[i][j] == 0:
return False
if i < 3 and board[i][j] == board[i + 1][j]:
return False
if j < 3 and board[i][j] == board[i][j + 1]:
return False
return True
def main():
board = [[0] * 4 for _ in range(4)]
add_new_tile(board)
add_new_tile(board)
while True:
print_board(board)
if is_game_over(board):
print("Game Over!")
break
move = input("Enter move (w/a/s/d): ").strip().lower()
if move == 'w':
move_up(board)
elif move == 'a':
move_left(board)
elif move == 's':
move_down(board)
elif move == 'd':
move_right(board)
else:
print("Invalid move!")
continue
add_new_tile(board)
if __name__ == "__main__":
main()
2048Python游戏源码
于 2025-01-27 14:24:12 首次发布