用pygame写一个利用方向键控制一个数字移动的游戏,可设置背景
时间: 2024-02-09 13:12:45 浏览: 165
好的,以下是一个简单的利用方向键控制一个数字移动的游戏,可设置背景的代码,使用pygame库实现:
```python
import pygame
# 游戏窗口大小
WINDOW_WIDTH = 400
WINDOW_HEIGHT = 400
# 数字方块大小
BLOCK_SIZE = 50
# 数字方块颜色
BLOCK_COLOR = (200, 200, 200)
# 数字字体大小
FONT_SIZE = 30
# 数字字体颜色
FONT_COLOR = (0, 0, 0)
# 游戏数据
game_data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
# 空白方块位置
blank_pos = (2, 2)
# 背景图片路径
BACKGROUND_IMAGE = "background.png"
# 初始化pygame
pygame.init()
# 创建游戏窗口
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
# 加载数字字体
font = pygame.font.SysFont(None, FONT_SIZE)
# 加载背景图片
background = pygame.image.load(BACKGROUND_IMAGE)
# 绘制数字方块
def draw_block(number, x, y):
# 计算方块左上角位置
left = x * BLOCK_SIZE
top = y * BLOCK_SIZE
# 绘制方块
pygame.draw.rect(window, BLOCK_COLOR, (left, top, BLOCK_SIZE, BLOCK_SIZE))
# 绘制数字
text = font.render(str(number), True, FONT_COLOR)
text_rect = text.get_rect()
text_rect.center = (left + BLOCK_SIZE // 2, top + BLOCK_SIZE // 2)
window.blit(text, text_rect)
# 绘制游戏界面
def draw_game():
# 绘制背景图片
window.blit(background, (0, 0))
# 绘制数字方块
for y in range(3):
for x in range(3):
number = game_data[y][x]
if number != 0:
draw_block(number, x, y)
# 移动数字方块
def move_block(dx, dy):
global blank_pos
# 计算目标方块位置
x = blank_pos[0] + dx
y = blank_pos[1] + dy
# 判断是否可以移动
if x < 0 or x > 2 or y < 0 or y > 2:
return
# 交换空白方块和目标方块
game_data[blank_pos[1]][blank_pos[0]] = game_data[y][x]
game_data[y][x] = 0
blank_pos = (x, y)
# 加载游戏背景音乐
pygame.mixer.music.load("background_music.ogg")
pygame.mixer.music.play(-1)
# 游戏循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
# 处理键盘按下事件
if event.key == pygame.K_UP:
move_block(0, -1)
elif event.key == pygame.K_DOWN:
move_block(0, 1)
elif event.key == pygame.K_LEFT:
move_block(-1, 0)
elif event.key == pygame.K_RIGHT:
move_block(1, 0)
# 绘制游戏界面
draw_game()
pygame.display.update()
```
游戏规则:使用方向键控制空白方块的移动,将数字方块按照从小到大的顺序排列在左上角,即完成游戏。
阅读全文