Pygame实现射击鸭子游戏3-2
2 鸭子类Target的创建
2.1 __init__()函数
Target类的__init__()函数代码如图5所示。
图5 __init__()函数代码
其中,第18行将Target类声明为pygame.sprite.Sprite类的子类;第19行代码中,__init__()函数的img_path参数表示鸭子图片的文件名,x和y表示鸭子起始位置的横纵坐标;第20行代码调用pygame.sprite.Sprite类的__init__()进行初始化操作;第21行代码导入鸭子图片;第22行代码获取鸭子图片的位置和大小;第23行代码根据指定的位置设置鸭子的起始位置。
2.2 update()函数
Target类的update()函数代码如图6所示。
图6 update()函数代码
Target类的update()函数的作用是让鸭子游动起来。鸭子是从屏幕左边向右边水平移动的,所以只需要改变其横坐标即可,纵坐标可以不变。第25行代码通过rect.move_ip()方法改变鸭子的横坐标,random.randint(0,10)表示鸭子的速度是一个0-10之间的随机数;第26-27行代码判断鸭子是否已经游到屏幕的右侧边缘,如果已经游到边缘,则将其左上角的横坐标rect.left设置为0,表示将其位置恢复到屏幕左侧边缘。
3 实例化瞄准镜类及创建相应的精灵组
实例化瞄准镜类及创建相应的精灵组的代码如图7所示。
图7 实例化瞄准镜类及创建相应的精灵组的代码
其中,第42行代码实例化了瞄准镜类Crosshair,其实例名为crosshair,“crosshair_blue_small.png”是瞄准镜的文件名;第43行代码通过pygame.sprite.Group()创建了精灵组crosshair_group;第44行代码将实例crosshair加入到精灵组crosshair_group中。
4 实例化鸭子类及创建相应的精灵组
实例化鸭子类及创建相应的精灵组的代码如图8所示。
图8 实例化鸭子类及创建相应的精灵组的代码
其中,第46行代码创建用于保存鸭子精灵的精灵组target_group;第47行使用for循环创建TARGET_NUM个鸭子;第48-49行代码随机设置鸭子的横纵坐标;第50行代码实例化鸭子类,“duck_yellow.png”是鸭子图片的文件名;第51行代码将创建的鸭子实例精灵加入到精灵组中。
5 导入背景
导入背景的代码如图9所示。
图9 导入背景的代码
其中,第39行代码通过pygame.image.load()导入背景图片;第40行代码将背景图片设置为屏幕大小,pygame.transform.scale()函数的作用是设置图片大小,bg_img表示要设置的图片,(SCREEN_WIDTH, SCREEN_HEIGHT)表示要设置的大小,即为屏幕的宽度和高度。