用python3.9制作一个推箱子
时间: 2024-05-11 10:14:35 浏览: 3
很高兴为您提供Python 3.9制作推箱子游戏的代码。以下是代码:
```python
import numpy as np
# 定义游戏地图
MAP = np.array([
['#', '#', '#', '#', '#', '#', '#', '#', '#', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', '#', '#', '#', '#', '#', '#', '#', '#', '#']
])
# 定义箱子和目标地点
BOX = 'B'
TARGET = 'T'
# 定义玩家和玩家目前的位置
PLAYER = 'P'
player_position = (1, 1)
# 定义箱子和目标地点的位置
boxes_positions = [(2, 2), (4, 4), (6, 6)]
targets_positions = [(2, 6), (4, 2), (6, 4)]
# 定义游戏结束条件
GAME_OVER = False
# 定义移动函数
def move_player(dx, dy):
global player_position
x, y = player_position
x += dx
y += dy
if MAP[x][y] == '#':
return
if (x, y) in boxes_positions:
bx, by = x + dx, y + dy
if MAP[bx][by] == '#' or (bx, by) in boxes_positions:
return
boxes_positions.remove((x, y))
boxes_positions.append((bx, by))
player_position = (x, y)
# 定义游戏循环
while not GAME_OVER:
# 清屏
print('\033c')
# 更新地图
MAP = np.array([
['#' if (i, j) in boxes_positions else ' ' if (i, j) != player_position else PLAYER for j in range(10)]
for i in range(10)
])
for i, j in targets_positions:
if MAP[i][j] != BOX:
break
else:
GAME_OVER = True
# 打印地图
for row in MAP:
print(' '.join(row))
# 等待玩家输入
move = input('请输入移动方向(WASD):').lower().strip()
if move == 'w':
move_player(-1, 0)
elif move == 'a':
move_player(0, -1)
elif move == 's':
move_player(1, 0)
elif move == 'd':
move_player(0, 1)
```
这是一个基本的推箱子游戏,可以通过控制台进行玩耍。在游戏中,玩家可以使用WASD键来控制玩家移动,将箱子推到目标地点即可获胜。希望这能帮助到您。