基于Python的射击小游戏开发

收藏关注不迷路


前言

    本文使用python语言中的pygame模块进行游戏程序设计与实现,游戏中设计可以控制的火箭,利用火箭发射子弹击落飞船,同时也可以躲避袭来的飞船。火箭总共有三次生命,若被击中,生命则减少一次,火箭发射子弹时可以打掉袭来的飞船,但飞船是根据时间下降的,如一直躲避不进行射击,那么最后会因飞船降落到底而丢失一条命。三次生命都丢失,则代表游戏结束。游戏功能分别是记分功能:能够通过击落飞船来获取分数,击落的飞船越多分数则会越高;记录功能:在游戏的右上角有所标识来存储记录所玩的次数;记时功能:在一次生命结束之前进行下一把游戏时,飞船的降落速度会有所增加。
  市场上的小游戏有很多,但是利用python语言所做的游戏却是较少,本文是利用python语言完成的一款射击类小游戏。虽然能够正常的运行,但是还存在一些不足,比如游戏存档,在每一次新游戏的开始时都没有办法接着上一次的游戏记录来进行比较 ;对于画面可以通过提高帧数,修改分辨率以及清晰度来进行进一步优化;在游戏过程中也可以添加背景音乐,火箭的移动声音,子弹与飞船相互碰撞的爆炸声等等,在今后的工作中也会对此游戏进行一些完善。
关键词:python;pygame;射击游戏

一、功能介绍

   按照实际的操作,对于各个功能分别进行描述。游戏中有自己控制的火箭,火箭可以发射子弹,也可以躲避袭来的飞船。若被击中,则生命则减少一次,总共有三次生命,火箭发射子弹时可以打掉袭来的飞船,但飞船是根据时间下降的,如一直躲避不进行射击,那么最后会因飞船降落到底而丢失一条命。三次命都丢失,则代表游戏结束。游戏采用分模块编写方式,这样可以快捷的更改游戏内容及某一特定功能,以及以后的发布的活动都只需要更改相应模块的代码。设计游戏功能是要对屏幕尺寸、显示模式以及鼠标指针、键盘的设定;对于一些游戏当中所需要的图像文件也要及时读取,与此同时也要创建游戏对象集并且添加游戏对象;在游戏运行时要不断进行更改,把击落的飞船及时进行删除

功能设计

  游戏当中为了能够把设计变为现实,要打好提前量,先明确游戏的玩法和主要功能有哪些。游戏当中有一个可以被控制的火箭,每次游戏火箭都有三次生命,火箭也可以发射子弹,通过子弹飞船进行射击,假如飞船被子弹全部击落,说明游戏胜利可进行下一把,如果没有全部击落飞船,最终飞船会与火箭相互碰撞,此时生命减少一个,当三次生命都没有则代表着游戏失败。游戏的主要功能有:
  1.记分功能:当按空格键发射子弹射击到飞船图标时,就说明我们击中目标并且可以进行得分,击杀的目标越多,分数越高。记分分为每一条生命内所击落目标得到的分数和每一条生命得到的分数的累加和。
  2.记录功能:每次进入游戏会有三条生命,如果输掉游戏就会减少一条命。左上角的图标代表还有几次生命。右上角的分数下面的数字代表三次机会当中总共玩了多少次,会对每一条生命所玩的次数进行记录。
  3.记时功能:如果一直躲避不进行射击,最后会因为飞船持续下降导致失去一次生命机会。并且每一条生命没有结束之前的下一把游戏都会比一开始的速度快一点,飞船的降落速度会有所增加。

二、开发环境

    Pygame意味着快乐的写软件,它可以使用opengl, directx, windib, X11, linux frame buffer等其他不同的后台,包括ASCII的绘画后台[9] ,同样也经常出现在Linux系统和windows系统当中。这也是为什么游戏开发可以采取不同的技术后台。在运用pygame写软件时不必需OpenGL很多人都阻碍在OpenGL的安装上,这样是不可行的,一定
要对OpenGLOpenGL进行安装处理。对于使用多核CPU伴随着双核CPU的普及以及8核CPU,这样更加便宜更加便捷,也可以通过使用多核CPU做更多功能;实现C语言程序和python GIL交互。对于核心函数可以使用最优化的C语言或者汇编语言来写。可以在很多操作系统上来写Pygame。Pygame非常简单并且很容易使用,如果仅仅只是想展示图片、获得摇杆输入,或者播放音乐,不要编写一个GUI界面,最少数量的代码完成最强大的功能。

————————————————

三、程序流程设计

3.2系统流程图

本文的设计思路如图4.1所示。本文作为射击类小游戏,具有记时、记录、记分功能,在一定时间内打不完全部
的飞船则失去一次生命,而赢了则会继续出现新的目标重新开始一局,同时在把飞船击败时会记分,每一局都会出
现不同的分数,最终会汇聚成一个总分。
在这里插入图片描述

图4.1 游戏设计思路

4.3 界面设计

可以通过 Director导演来获取到当前界面getVisibeSize(),从而获取到整个界面的大小;当我们获取到他的Size之后就可以开始我们界面搭建了,首先我们要创建一个Sprite类的一个图片当作背景。我们首先将这个火箭的AnchorPoint锚点位置设置为中心,然后我们就可以开始设置他的Position坐标了,因为我们前面已经知道了这个界面的width宽和height高了,我们就可以直接把他的x跟Y的坐标设置成width和height的一半,也就是当前界面的正中心位置。背景创建好了之后我们就要来创建背景上面的Button按钮及LOGO的摆放。Button的创建需要传递两张图片,一张代表点击前的状态,一张是点击后的状态。如果你只传了一个图片的话,他的点击状态都会默认为是这个不会改变。我们需要在开始界面创建两个Button飞船,一个代表开始游戏BtStart,一个代表结束游戏BtEnd。当所需要的两个按钮创建好了之后,可以点击开始游戏按钮PLAY,此时直接跳转到游戏页面。
  界面当中存在一个play的按钮,左上角是每一局的三次机会,正中间是记分的标志,右上角分别为每一条命所得的分数以及一条命中玩了几次。如图4.2游戏开始界面所示。
在这里插入图片描述

图4.2 游戏开始界面

四、系统实现

在这里插入图片描述
在这里插入图片描述

五 目 录

第1章 绪 论1
1.1 本文的目的及意义1
1.2 国内外研究现状1
1.3 本文完成的工作2
1.4本文的组织结构2
第2章 相关技术介绍4
2.1 Python介绍4
2.2 Pygame介绍5
2.3 开发环境7
2.3.1 软件环境7
2.3.2 硬件环境7
2.4 环境配置7
第3章 需求分析9
3.1 功能需求分析9
3.2 性能需求分析9
3.2.1 数据精准度9
3.2.2 最低配置9
3.2.3 推荐配置10
第4章 游戏设计11
4.1 设计思路11
4.2 功能设计11
4.3 界面设计12
4.4 内容设计13
4.4.1 创建游戏对象13
4.4.2 位置的移动13
4.4.3 删除移动位置的数组14
第5章 游戏实现15
5.1 登陆界面15
5.2 游戏界面15
5.3 建立对象16
5.4 角色生命17
5.5 总分记数18
第6章 结论与展望20
6.1 结论20
6.2 展望20
参考文献21
致 谢22

猜你喜欢

转载自blog.csdn.net/QQ2743785109/article/details/133716294