用pygame写一个单数字推盘游戏
时间: 2023-09-24 22:02:35 浏览: 174
好的,以下是一个简单的单数字推盘游戏的代码,使用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)
# 初始化pygame
pygame.init()
# 创建游戏窗口
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
# 加载数字字体
font = pygame.font.SysFont(None, FONT_SIZE)
# 绘制数字方块
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():
# 绘制数字方块
for y in range(3):
for x in range(3):
number = game_data[y][x]
if number != 0:
draw_block(number, x, y)
# 绘制空白方块
draw_block("", blank_pos[0], blank_pos[1])
# 移动数字方块
def move_block(x, y):
global blank_pos
# 计算移动方向
dx = x - blank_pos[0]
dy = y - blank_pos[1]
# 判断是否可以移动
if abs(dx) + abs(dy) != 1:
return
# 交换空白方块和目标方块
game_data[blank_pos[1]][blank_pos[0]] = game_data[y][x]
game_data[y][x] = 0
blank_pos = (x, y)
# 游戏循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.MOUSEBUTTONDOWN:
# 处理鼠标点击事件
mouse_x, mouse_y = pygame.mouse.get_pos()
x = mouse_x // BLOCK_SIZE
y = mouse_y // BLOCK_SIZE
move_block(x, y)
# 绘制游戏界面
window.fill((255, 255, 255))
draw_game()
pygame.display.update()
```
游戏规则:点击数字方块,将其移动到空白方块的位置,最终将数字方块按照从小到大的顺序排列在左上角,即完成游戏。
阅读全文