python 计分限时打地鼠
时间: 2023-06-16 08:03:11 浏览: 80
好的,你需要一个计分器和一个计时器来实现这个小游戏。你可以使用 Pygame 库来创建游戏窗口和处理游戏事件。
以下是一个简单的示例代码:
```python
import pygame
import random
# 初始化 Pygame
pygame.init()
# 设置游戏窗口
WINDOW_WIDTH = 640
WINDOW_HEIGHT = 480
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption('打地鼠')
# 加载图片资源
MOUSE_IMAGE = pygame.image.load('mouse.png')
HAMMER_IMAGE = pygame.image.load('hammer.png')
# 设置字体
FONT = pygame.font.SysFont(None, 36)
# 初始化游戏变量
score = 0
time_left = 30
clock = pygame.time.Clock()
# 定义地鼠类
class Mouse(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = MOUSE_IMAGE
self.rect = self.image.get_rect()
self.rect.x = random.randint(0, WINDOW_WIDTH - self.rect.width)
self.rect.y = random.randint(0, WINDOW_HEIGHT - self.rect.height)
def update(self):
self.rect.x = random.randint(0, WINDOW_WIDTH - self.rect.width)
self.rect.y = random.randint(0, WINDOW_HEIGHT - self.rect.height)
# 定义锤子类
class Hammer(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = HAMMER_IMAGE
self.rect = self.image.get_rect()
self.rect.center = pygame.mouse.get_pos()
def update(self):
self.rect.center = pygame.mouse.get_pos()
# 创建精灵组
all_sprites = pygame.sprite.Group()
mice = pygame.sprite.Group()
hammers = pygame.sprite.Group()
# 创建地鼠和锤子
for i in range(10):
mouse = Mouse()
all_sprites.add(mouse)
mice.add(mouse)
for i in range(1):
hammer = Hammer()
all_sprites.add(hammer)
hammers.add(hammer)
# 游戏循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
# 检测是否击中地鼠
hits = pygame.sprite.spritecollide(hammer, mice, True)
if hits:
score += 1
mouse = Mouse()
all_sprites.add(mouse)
mice.add(mouse)
# 更新游戏状态
all_sprites.update()
# 绘制游戏界面
window.fill((255, 255, 255))
all_sprites.draw(window)
# 绘制得分和剩余时间
score_text = FONT.render('得分: {}'.format(score), True, (0, 0, 0))
window.blit(score_text, (10, 10))
time_text = FONT.render('时间: {}'.format(time_left), True, (0, 0, 0))
window.blit(time_text, (WINDOW_WIDTH - time_text.get_width() - 10, 10))
# 更新剩余时间
time_left -= clock.tick(30) / 1000.0
if time_left <= 0:
running = False
# 更新窗口
pygame.display.update()
# 游戏结束,显示得分
game_over_text = FONT.render('游戏结束,得分: {}'.format(score), True, (0, 0, 0))
window.blit(game_over_text, ((WINDOW_WIDTH - game_over_text.get_width()) / 2, (WINDOW_HEIGHT - game_over_text.get_height()) / 2))
pygame.display.update()
# 等待退出游戏
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
```
你需要准备一张地鼠的图片和一张锤子的图片,并将它们保存为 `mouse.png` 和 `hammer.png`。
在代码中,我们定义了一个 `Mouse` 类和一个 `Hammer` 类,分别代表地鼠和锤子。我们使用 `pygame.sprite.Sprite` 类作为它们的基类,并重写了 `__init__` 方法和 `update` 方法。在 `__init__` 方法中,我们加载了图片,并设置了精灵的初始位置。在 `update` 方法中,我们随机更新了精灵的位置。
我们使用 `pygame.sprite.Group` 类来管理所有的精灵,并分别创建了 `mice` 和 `hammers` 两个精灵组。
在游戏循环中,我们首先处理了事件。当鼠标点击时,我们检测是否击中了地鼠,并更新得分和添加新的地鼠。
然后,我们更新了所有精灵的状态,并绘制了游戏界面、得分和剩余时间。
最后,当剩余时间为零时,游戏结束,我们显示得分,并等待退出游戏。
你可以根据自己的需要调整游戏窗口大小、地鼠和锤子的数量、得分和时间的位置等。
阅读全文