2048小游戏的python代码
时间: 2023-08-28 09:04:48 浏览: 48
下面是一个简单的 2048 小游戏的 Python 代码示例:
```python
import random
# 初始化棋盘
def init_board():
board = [[0 for i in range(4)] for j in range(4)]
add_random_tile(board)
add_random_tile(board)
return board
# 在随机位置添加一个方块
def add_random_tile(board):
x = random.randint(0, 3)
y = random.randint(0, 3)
while board[x][y] != 0:
x = random.randint(0, 3)
y = random.randint(0, 3)
board[x][y] = 2
# 在棋盘上移动方块
def move(board, direction):
if direction == 'left':
for i in range(4):
board[i] = slide(board[i])
board[i] = merge(board[i])
board[i] = slide(board[i])
elif direction == 'right':
for i in range(4):
board[i] = slide(board[i][::-1])[::-1]
board[i] = merge(board[i][::-1])[::-1]
board[i] = slide(board[i][::-1])[::-1]
elif direction == 'up':
for i in range(4):
col = [board[j][i] for j in range(4)]
col = slide(col)
col = merge(col)
col = slide(col)
for j in range(4):
board[j][i] = col[j]
elif direction == 'down':
for i in range(4):
col = [board[j][i] for j in range(4)][::-1]
col = slide(col)
col = merge(col)
col = slide(col)
for j in range(4):
board[j][i] = col[::-1][j]
return board
# 将方块向左滑动
def slide(row):
return [i for i in row if i != 0] + [0 for i in range(row.count(0))]
# 将相同数字的方块合并
def merge(row):
for i in range(3):
if row[i] == row[i+1] and row[i] != 0:
row[i], row[i+1] = row[i]*2, 0
return row
# 判断游戏是否结束
def game_over(board):
for i in range(4):
for j in range(4):
if board[i][j] == 0:
return False
if j < 3 and board[i][j] == board[i][j+1]:
return False
if i < 3 and board[i][j] == board[i+1][j]:
return False
return True
# 打印棋盘
def print_board(board):
for row in board:
print(row)
# 主函数
def main():
board = init_board()
print_board(board)
while not game_over(board):
direction = input("Enter direction: ")
board = move(board, direction)
add_random_tile(board)
print_board(board)
print("Game Over")
if __name__ == '__main__':
main()
```
可以直接运行代码,控制台会输出棋盘和游戏过程,直到游戏结束。注意,此代码仅提供了基本的游戏逻辑和控制台显示,如果想要实现更完整的游戏,需要进一步完善代码。