2048代码
时间: 2023-07-02 16:20:14 浏览: 146
以下是一个简单的 Python 2048 游戏代码:
```python
import random
# 初始化游戏面板
def init_board():
board = [[0 for x in range(4)] for y in range(4)]
return board
# 在空白区域随机生成一个数字
def add_random(board):
empty = [(x, y) for x in range(4) for y in range(4) if board[x][y] == 0]
if empty:
x, y = random.choice(empty)
board[x][y] = 2 if random.random() < 0.9 else 4
return board
# 判断游戏是否结束
def game_over(board):
for row in board:
if 0 in row:
return False
for i in range(3):
if row[i] == row[i + 1]:
return False
for col in range(4):
for row in range(3):
if board[row][col] == board[row + 1][col]:
return False
return True
# 合并数字
def merge(row):
new_row = [i for i in row if i != 0]
for i in range(len(new_row) - 1):
if new_row[i] == new_row[i + 1]:
new_row[i], new_row[i + 1] = new_row[i] * 2, 0
new_row = [i for i in new_row if i != 0]
return new_row + [0] * (4 - len(new_row))
# 向左移动
def move_left(board):
new_board = []
for row in board:
new_row = merge(row)
new_board.append(new_row)
return new_board
# 向右移动
def move_right(board):
new_board = []
for row in board:
new_row = merge(row[::-1])[::-1]
new_board.append(new_row)
return new_board
# 向上移动
def move_up(board):
new_board = []
for col in range(4):
new_col = merge([board[row][col] for row in range(4)])
for row in range(4):
new_board[row][col] = new_col[row]
return new_board
# 向下移动
def move_down(board):
new_board = []
for col in range(4):
new_col = merge([board[row][col] for row in range(3, -1, -1)])[::-1]
for row in range(4):
new_board[row][col] = new_col[row]
return new_board
# 显示游戏面板
def show_board(board):
for row in board:
print(row)
# 开始游戏
def play():
board = init_board()
board = add_random(board)
board = add_random(board)
show_board(board)
while not game_over(board):
direction = input("Enter direction (W/A/S/D): ")
if direction == "W":
board = move_up(board)
elif direction == "A":
board = move_left(board)
elif direction == "S":
board = move_down(board)
elif direction == "D":
board = move_right(board)
board = add_random(board)
show_board(board)
print("Game Over!")
play()
```
这个 2048 游戏代码使用了矩阵来表示游戏面板,使用了随机数来在空白区域生成数字。它包含了向左、向右、向上和向下移动数字的函数,以及判断游戏是否结束的函数和显示游戏面板的函数。