影视网站建设方案北京seo推广外包
6 游戏配置设置
游戏配置设置的代码如图10所示。
图10 游戏配置设置的代码
其中,第32行代码初始化pygame;第33-34行代码设置了屏幕的宽度和高度;第35行代码设置了鸭子的数量;第36行代码创建屏幕;第37行代码设置屏幕的标题;第38行代码隐藏鼠标;第39-40行代码设置游戏的刷新率(帧率)。
注意1 pygame.init()代码位置必须在定义鸭子类的代码之前,因为在定义鸭子类的代码中有导入音频的代码,需要对音频进行初始化。
7 设置游戏背景
在while True循环中,使用图11所示代码设置游戏背景。
图11 设置游戏背景的代码
其中,screen是图10中创建的屏幕,bg_img是图9中导入的背景图片,bg_img已经设置为与屏幕一样大,因此其显示的起始位置为(0,0)。
8 通过精灵组更新并显示精灵
通过精灵组显示并更新精灵的代码如图12所示。
图12 通过精灵组显示并更新精灵的代码
其中,第62-63行代码更新并显示鸭子;第64-65行代码更新并显示瞄准镜。
9 设置游戏刷新率
设置游戏刷新率的代码如图13所示。
图13 设置游戏刷新率的代码
其中,fpsClock和FPS是图10中定义的变量。
相关链接3 游戏刷新率的相关资料,请参考
《Pygame实现动画效果2-2》
10 添加鼠标点击的响应
在游戏中,玩家通过点击鼠标左键进行射击,因此需要添加鼠标点击的响应,代码如图14所示。
图14 鼠标点击响应的代码
第60行代码判断玩家是否点击了鼠标左键;如果是,则第61行代码通过瞄准镜类的实例crosshair调用其shoot()方法,该方法如图3所示,首先播放射击音效,之后判断是否击中鸭子,并且使被击中的鸭子消失。
11 完整代码
打鸭子的完整代码如下所示。
import pygame
import os
from pygame.locals import *
import randompygame.init()
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
TARGET_NUM = 20
screen = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
pygame.display.set_caption('射击游戏')
pygame.mouse.set_visible(False)
FPS = 60
fpsClock = pygame.time.Clock()class Crosshair(pygame.sprite.Sprite):def __init__(self, img_path):super().__init__()self.image = pygame.image.load(img_path)self.rect = self.image.get_rect()self.gun_shot = pygame.mixer.Sound('gunshot.wav')def shoot(self):self.gun_shot.play()pygame.sprite.spritecollide(crosshair, target_group, True)def update(self):self.rect.center = pygame.mouse.get_pos()class Target(pygame.sprite.Sprite):def __init__(self, img_path, x, y):super().__init__()self.image = pygame.image.load(img_path)self.rect = self.image.get_rect()self.rect.center = (x, y)def update(self):self.rect.move_ip(random.randint(0,10),0)if self.rect.left > SCREEN_WIDTH:self.rect.left = 0
crosshair = Crosshair('crosshair_blue_small.png')
crosshair_group = pygame.sprite.Group()
crosshair_group.add(crosshair)target_group = pygame.sprite.Group()
for i in range(TARGET_NUM):x = random.randint(0, SCREEN_WIDTH)y = random.randint(0, SCREEN_HEIGHT)target = Target('duck_yellow.png', x, y)target_group.add(target)bg_img = pygame.image.load('bg_wood.png')
bg_img = pygame.transform.scale(bg_img, (SCREEN_WIDTH, SCREEN_HEIGHT))while True:for event in pygame.event.get():if event.type == QUIT:pygame.quit()os.sys.exit()if event.type == MOUSEBUTTONDOWN:crosshair.shoot()screen.blit(bg_img, (0, 0))target_group.update()target_group.draw(screen)crosshair_group.update()crosshair_group.draw(screen)pygame.display.update()fpsClock.tick(FPS)