用pygame制作一个数字推盘小游戏
时间: 2024-05-23 14:13:21 浏览: 97
好的,下面是一个简单的数字推盘小游戏的代码示例,使用 Pygame 库实现。
首先,需要安装 Pygame 库。可以使用以下命令进行安装:
```
pip install pygame
```
然后,创建一个名为 `number_puzzle.py` 的 Python 文件,并将以下代码复制到文件中:
```python
import pygame
import random
# 游戏区域大小
WIDTH = 400
HEIGHT = 400
# 方格大小
CELL_SIZE = WIDTH // 4
# 颜色定义
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (128, 128, 128)
# 初始化 Pygame
pygame.init()
# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Number Puzzle")
# 加载数字图片
numbers = []
for i in range(1, 16):
image = pygame.image.load(f"images/{i}.png").convert_alpha()
image = pygame.transform.scale(image, (CELL_SIZE, CELL_SIZE))
numbers.append(image)
# 加载空白图片
blank_image = pygame.image.load("images/blank.png").convert_alpha()
blank_image = pygame.transform.scale(blank_image, (CELL_SIZE, CELL_SIZE))
# 创建数字列表
numbers_list = [i for i in range(1, 16)]
blank_index = 15
random.shuffle(numbers_list)
# 游戏循环标志
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_UP:
if blank_index >= 4:
numbers_list[blank_index], numbers_list[blank_index - 4] = numbers_list[blank_index - 4], numbers_list[blank_index]
blank_index -= 4
elif event.key == pygame.K_DOWN:
if blank_index <= 11:
numbers_list[blank_index], numbers_list[blank_index + 4] = numbers_list[blank_index + 4], numbers_list[blank_index]
blank_index += 4
elif event.key == pygame.K_LEFT:
if blank_index % 4 != 0:
numbers_list[blank_index], numbers_list[blank_index - 1] = numbers_list[blank_index - 1], numbers_list[blank_index]
blank_index -= 1
elif event.key == pygame.K_RIGHT:
if blank_index % 4 != 3:
numbers_list[blank_index], numbers_list[blank_index + 1] = numbers_list[blank_index + 1], numbers_list[blank_index]
blank_index += 1
# 绘制游戏界面
screen.fill(WHITE)
for i in range(16):
x = (i % 4) * CELL_SIZE
y = (i // 4) * CELL_SIZE
if i == blank_index:
screen.blit(blank_image, (x, y))
else:
screen.blit(numbers[numbers_list[i] - 1], (x, y))
if numbers_list[i] != i + 1:
pygame.draw.rect(screen, GRAY, (x, y, CELL_SIZE, CELL_SIZE), 3)
# 更新屏幕
pygame.display.flip()
# 退出 Pygame
pygame.quit()
```
在代码中,首先定义了游戏区域的大小、方格大小和颜色等常量。然后使用 Pygame 加载数字图片和空白图片,并创建数字列表并打乱顺序。在游戏循环中,处理键盘事件,并根据空白方格的位置更新数字列表。最后绘制游戏界面并更新屏幕。
需要注意的是,该示例中使用了 15 张数字图片和 1 张空白图片,需要将这些图片保存在名为 `images` 的文件夹中。
可以使用以下命令运行游戏:
```
python number_puzzle.py
```
效果如下图所示:
![number_puzzle.png](https://i.loli.net/2022/01/04/kwJdR7K3xQG6Mcp.png)
阅读全文