python2048游戏代码
时间: 2023-07-03 21:20:05 浏览: 76
以下是一个简单的Python实现2048游戏的代码:
```python
import random
# 初始化游戏面板
def init_board():
board = [[0 for _ in range(4)] for _ in range(4)]
add_random_number(board)
return board
# 随机在空白位置添加数字2或4
def add_random_number(board):
empty_cells = [(i, j) for i in range(4) for j in range(4) if board[i][j] == 0]
if not empty_cells:
return False
i, j = random.choice(empty_cells)
board[i][j] = random.choice([2, 4])
return True
# 翻转游戏面板
def flip_board(board):
return [row[::-1] for row in board]
# 转置游戏面板
def transpose_board(board):
return [list(row) for row in zip(*board)]
# 判断游戏是否结束
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 move(board, direction):
def move_left(row):
def merge(row):
for i in range(3):
if row[i] == row[i+1] and row[i] != 0:
row[i] *= 2
row[i+1] = 0
return row
row = [x for x in row if x != 0]
row = merge(row)
row += [0] * (4 - len(row))
return row
moves = {}
moves['LEFT'] = lambda board: [move_left(row) for row in board]
moves['RIGHT'] = lambda board: flip_board(moves['LEFT'](flip_board(board)))
moves['UP'] = lambda board: transpose_board(moves['LEFT'](transpose_board(board)))
moves['DOWN'] = lambda board: transpose_board(moves['RIGHT'](transpose_board(board)))
if direction not in moves:
return False
moved_board = moves[direction](board)
if moved_board != board:
board[:] = moved_board
add_random_number(board)
return True
# 打印游戏面板
def print_board(board):
print('\n'.join([''.join(['{:4}'.format(num) for num in row]) for row in board]))
# 运行游戏
def run():
board = init_board()
while True:
print_board(board)
if is_game_over(board):
print('Game over!')
break
direction = input('Enter direction: ').upper()
if direction not in ['LEFT', 'RIGHT', 'UP', 'DOWN']:
continue
move(board, direction)
if __name__ == '__main__':
run()
```
这个代码实现了2048游戏的基本逻辑,可以在控制台中运行。
阅读全文
相关推荐












