python 推箱子游戏代码
时间: 2023-09-05 12:13:43 浏览: 92
以下是一个简单的推箱子游戏的 Python 代码:
```
"""
Push Box Game
Author:
Date:
"""
MAP = [
['+', '+', '+', '+', '+', '+', '+', '+', '+', '+'],
['+', '.', '.', '.', '.', '.', '.', '.', '.', '+'],
['+', '.', '#', '#', '.', '#', '.', '.', '.', '+'],
['+', '.', '.', '.', '.', '.', '.', '#', '.', '+'],
['+', '.', '.', '.', 'B', '.', '.', '#', '.', '+'],
['+', '.', '.', '.', '.', '.', '.', '#', '.', '+'],
['+', '.', '#', '.', '.', '#', '#', '.', '.', '+'],
['+', '.', '.', '.', '.', '.', '.', '.', '.', '+'],
['+', '.', '.', '.', '.', '.', '.', '.', '.', '+'],
['+', '+', '+', '+', '+', '+', '+', '+', '+', '+']
]
def print_map():
for row in MAP:
for col in row:
print(col, end=' ')
print()
def move(x, y, dx, dy):
global MAP
if MAP[x+dx][y+dy] == '#': # 箱子后面是障碍物
return False
if MAP[x+dx][y+dy] == 'B': # 箱子后面有箱子
if not move(x+dx, y+dy, dx, dy):
return False
MAP[x][y], MAP[x+dx][y+dy] = MAP[x+dx][y+dy], MAP[x][y]
return True
def main():
while True:
print_map()
x, y = 1, 1
command = input("请输入移动方向(上/下/左/右):")
if command == 'q':
print("退出游戏")
break
elif command == 'w':
dx, dy = -1, 0 # 上
elif command == 's':
dx, dy = 1, 0 # 下
elif command == 'a':
dx, dy = 0, -1 # 左
elif command == 'd':
dx, dy = 0, 1 # 右
else:
print("无效的命令,请重新输入!")
continue
if MAP[x+dx][y+dy] == '.': # 移动
MAP[x][y], MAP[x+dx][y+dy] = MAP[x+dx][y+dy], MAP[x][y]
elif MAP[x+dx][y+dy] == '#': # 撞到障碍物
print("撞到障碍物,移动失败!")
elif MAP[x+dx][y+dy] == 'B': # 推箱子
if move(x, y, dx, dy):
print("推箱子成功!")
else:
print("推箱子失败,移动失败!")
else:
print("未知的地图元素,请重新输入!")
if __name__ == '__main__':
main()
```
这个代码实现了一个简单的推箱子游戏,使用了一个二维列表来表示游戏地图。玩家输入方向命令,程序根据当前位置的元素类型(空地、障碍物、箱子)执行不同的操作(移到空地、撞到障碍物、推箱子)。整个游戏的主逻辑在 `main()` 函数中实现。
阅读全文