python推箱子游戏代码
时间: 2023-07-09 13:42:48 浏览: 137
以下是一个基于Pygame的简单的推箱子游戏代码:
```python
import pygame
import sys
# 初始化Pygame
pygame.init()
# 定义游戏界面大小
size = width, height = 800, 600
# 定义颜色
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
blue = (0, 0, 255)
# 设置游戏界面
screen = pygame.display.set_mode(size)
pygame.display.set_caption('推箱子游戏')
# 定义游戏地图
map_data = [
'##########',
'# #',
'# @ #',
'# #',
'# #### #',
'# #### #',
'# #',
'# #',
'# #',
'##########',
]
# 定义游戏角色
player_pos = [2, 2]
box_pos = [4, 4]
# 加载游戏图片
player_img = pygame.image.load('player.png').convert_alpha()
box_img = pygame.image.load('box.png').convert_alpha()
wall_img = pygame.image.load('wall.png').convert_alpha()
target_img = pygame.image.load('target.png').convert_alpha()
# 定义游戏循环
while True:
# 监听游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
# 获取按键
key = event.key
# 移动角色
if key == pygame.K_UP:
if map_data[player_pos[1] - 1][player_pos[0]] != '#':
player_pos[1] -= 1
if player_pos == box_pos:
if map_data[box_pos[1] - 1][box_pos[0]] != '#':
box_pos[1] -= 1
elif key == pygame.K_DOWN:
if map_data[player_pos[1] + 1][player_pos[0]] != '#':
player_pos[1] += 1
if player_pos == box_pos:
if map_data[box_pos[1] + 1][box_pos[0]] != '#':
box_pos[1] += 1
elif key == pygame.K_LEFT:
if map_data[player_pos[1]][player_pos[0] - 1] != '#':
player_pos[0] -= 1
if player_pos == box_pos:
if map_data[box_pos[1]][box_pos[0] - 1] != '#':
box_pos[0] -= 1
elif key == pygame.K_RIGHT:
if map_data[player_pos[1]][player_pos[0] + 1] != '#':
player_pos[0] += 1
if player_pos == box_pos:
if map_data[box_pos[1]][box_pos[0] + 1] != '#':
box_pos[0] += 1
# 绘制游戏界面
screen.fill(white)
for y, row in enumerate(map_data):
for x, col in enumerate(row):
if col == '#':
screen.blit(wall_img, (x * 50, y * 50))
elif col == '@':
screen.blit(target_img, (x * 50, y * 50))
elif col == '.':
screen.blit(box_img, (x * 50, y * 50))
else:
screen.blit(player_img, (x * 50, y * 50))
# 判断游戏是否胜利
if player_pos == box_pos and map_data.count('.') == 0:
font = pygame.font.SysFont('SimHei', 50)
text = font.render('你赢了!', True, red)
screen.blit(text, ((width - text.get_width()) // 2, (height - text.get_height()) // 2))
pygame.display.update()
# 退出Pygame
pygame.quit()
```
为了让这个代码运行,需要准备以下图片文件:
- `player.png`:游戏角色的图片
- `box.png`:游戏箱子的图片
- `wall.png`:游戏墙壁的图片
- `target.png`:游戏目标的图片
将这些图片文件和上述代码放在同一文件夹中,并运行代码即可开始游戏。
阅读全文