python实现2048小游戏
时间: 2023-07-11 09:52:17 浏览: 32
好的,这是一个简单的 Python 实现 2048 小游戏的代码:
```python
import random
# 初始化游戏棋盘
def init_board():
board = [[0 for i in range(4)] for j in range(4)]
return board
# 在空白位置随机生成一个新数字
def add_number(board):
empty_spots = []
for i in range(4):
for j in range(4):
if board[i][j] == 0:
empty_spots.append((i, j))
if empty_spots:
spot = random.choice(empty_spots)
board[spot[0]][spot[1]] = 2
return board
# 在控制台中打印游戏棋盘
def print_board(board):
for i in range(4):
for j in range(4):
print(board[i][j], end='\t')
print()
# 移动所有数字到指定方向
def move(board, direction):
if direction == 'left':
for i in range(4):
board[i] = merge(board[i])
elif direction == 'right':
for i in range(4):
board[i] = merge(board[i][::-1])[::-1]
elif direction == 'up':
board = transpose(board)
for i in range(4):
board[i] = merge(board[i])
board = transpose(board)
elif direction == 'down':
board = transpose(board)
for i in range(4):
board[i] = merge(board[i][::-1])[::-1]
board = transpose(board)
return board
# 将游戏棋盘转置
def transpose(board):
return [list(x) for x in zip(*board)]
# 将一行或一列中的数字合并
def merge(line):
merged = [0, 0, 0, 0]
j = 0
for i in range(4):
if line[i] != 0:
if merged[j] == 0:
merged[j] = line[i]
elif merged[j] == line[i]:
merged[j] *= 2
j += 1
if j == 4:
break
merged[j] = line[i]
else:
j += 1
if j == 4:
break
merged[j] = line[i]
return merged
# 判断游戏是否结束
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 game_loop():
board = init_board()
board = add_number(board)
board = add_number(board)
print_board(board)
while not is_game_over(board):
direction = input('Enter direction (left/right/up/down): ')
board = move(board, direction)
board = add_number(board)
print_board(board)
print('Game over!')
# 启动游戏
game_loop()
```
希望对你有帮助!