欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Pygame实现射击鸭子游戏3-1

Pygame实现射击鸭子游戏3-1

2025/3/12 23:12:39 来源:https://blog.csdn.net/hou09tian/article/details/146145343  浏览:    关键词:Pygame实现射击鸭子游戏3-1

基于pygame的打鸭子游戏如图1所示。

图1 打鸭子游戏

从图1中可以看出,玩家通过鼠标控制瞄准镜的移动,点击鼠标左键射击鸭子。而鸭子则从屏幕左边向右边游动,当游到屏幕右侧边界后,重新回到屏幕左侧继续游动。

游戏需要创建两个类,一个是瞄准镜类,另一个是鸭子类。

1 瞄准镜类Crosshair的创建

在pygame编程框架代码的基础上,创建瞄准镜类Crosshair。

1.1 __init__()函数

瞄准镜类Crosshair的__init__()函数代码,如图2所示。

图2 __init__()函数代码

其中,第5行代码表示瞄准镜类Crosshair的父类是pygame.sprite.Sprite,即瞄准镜类是“精灵类”的子类;第6行开始定义__init__()函数,该函数的参数img_path表示瞄准镜图片的文件名;第7行代码调用其父类即pygame.sprite.Sprite的__init__()函数,实现初始化操作;第8行代码通过pygame.image.load()函数导入瞄准镜图片;第9行代码获取图片的位置及大小;第10行代码通过pygame.mixer.Sound()实例化了音频类的对象gun_shot,对应的音频文件是“gunshot.wav”,当玩家点击鼠标左键进行射击时,会有射击的音效。

相关链接1 pygame.sprite.Sprite类及__init__()函数的相关资料,请参考

《Pygame中Sprite类的使用6-1》

1.2 shoot()函数

瞄准镜类Crosshair的shoot()函数代码,如图3所示。

图3 shoot()函数代码

当玩家点击了鼠标左键后,调用该函数播放射击的音频并且判断是否击中了鸭子。其中,第14行代码通过类属性gun_shot播放射击音频,gun_shot即为图2第10行中导入的音频实例;第15行代码通过pygame.sprite.spritecollide()函数判断是否击中了鸭子,也就是对瞄准镜精灵与鸭子精灵进行碰撞检测,第一个参数crosshair是瞄准镜类的实例,第二个参数是鸭子类的精灵组target_group,该函数的作用是判断crosshair与target_group精灵组中的任一精灵发生是否发生碰撞,因为击中鸭子后,鸭子会消失,第三个参数要设置为True,表示当发生碰撞时,删除target_group精灵组中被碰撞的精灵。

相关链接2 精灵组的相关资料,请参考

《Pygame中Sprite类的使用6-3》

1.3 update()函数

瞄准镜类Crosshair的update()函数代码,如图4所示。

图4 update()函数代码

该函数的作用是当玩家移动鼠标时,瞄准镜跟着鼠标一起移动,达到鼠标控制瞄准镜的目的。第16行代码中,将瞄准镜的中心位置rect.center设置为鼠标的位置,pygame.mouse.get_pos()函数的作用就是获取鼠标的位置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com