2048小游戏python
时间: 2023-06-21 13:24:26 浏览: 26
这是一个简单的2048小游戏的Python代码示例:
```python
import random
# 定义游戏类
class Game2048:
def __init__(self):
self.grid = [[0] * 4 for _ in range(4)]
self.score = 0
self.add_random_num()
self.add_random_num()
# 随机在空白位置添加数字
def add_random_num(self):
empty_cells = [(i, j) for i in range(4) for j in range(4) if self.grid[i][j] == 0]
if empty_cells:
row, col = random.choice(empty_cells)
self.grid[row][col] = 2 if random.random() < 0.9 else 4
# 判断是否游戏结束
def is_game_over(self):
if not any(0 in row for row in self.grid):
for i in range(4):
for j in range(3):
if self.grid[i][j] == self.grid[i][j+1] or self.grid[j][i] == self.grid[j+1][i]:
return False
return True
return False
# 反转矩阵
def transpose(self):
self.grid = [list(row) for row in zip(*self.grid)]
# 矩阵向左移动
def move_left(self):
new_grid = []
for row in self.grid:
new_row = []
last_num = 0
for num in row:
if num == 0:
continue
if num == last_num:
new_row[-1] *= 2
self.score += new_row[-1]
last_num = 0
else:
new_row.append(num)
last_num = num
while len(new_row) < 4:
new_row.append(0)
new_grid.append(new_row)
self.grid = new_grid
# 矩阵向右移动
def move_right(self):
self.reverse()
self.move_left()
self.reverse()
# 矩阵向上移动
def move_up(self):
self.transpose()
self.move_left()
self.transpose()
# 矩阵向下移动
def move_down(self):
self.transpose()
self.move_right()
self.transpose()
# 反转矩阵
def reverse(self):
self.grid = [row[::-1] for row in self.grid]
# 打印游戏状态
def print_grid(self):
print("-" * 23)
for row in self.grid:
print("|", end="")
for num in row:
if num == 0:
print("{:^4}|".format(" "), end="")
else:
print("{:^4}|".format(num), end="")
print()
print("-" * 23)
print("Score:", self.score)
# 开始游戏
def start_game():
game = Game2048()
while True:
game.print_grid()
if game.is_game_over():
print("Game Over!")
break
direction = input("Enter direction: ")
if direction == "left":
game.move_left()
elif direction == "right":
game.move_right()
elif direction == "up":
game.move_up()
elif direction == "down":
game.move_down()
else:
print("Invalid direction!")
continue
game.add_random_num()
if __name__ == "__main__":
start_game()
```
这是一个简单的命令行游戏,可以通过输入left、right、up、down来控制方向。运行代码即可开始游戏。