基于python的飞机大战游戏设计.docx
《基于python的飞机大战游戏设计.docx》由会员分享,可在线阅读,更多相关《基于python的飞机大战游戏设计.docx(11页珍藏版)》请在课桌文档上搜索。
1、基于python的飞机大战游戏设计摘要:基于Python软件的面向对象编程思想设计飞机大战游戏,玩家操作飞机发射子弹,通过左右移动来躲避子弹;敌机位于屏幕顶部左右匀速移动,并且随机向玩家飞机发射子弹。实践表明,该游戏操作简单灵活,具有趣味性。关键字:Pyrthon;飞机大战游戏;PygameDesignofAircraftWarGameBasedonPythonAbsrtact:Basedontheobject-orientedprogrammingideaofPythonsoftware,theaircraftwargameisdesigned.Playersoperatetheaircra
2、fttofirebullets,andavoidbulletsbymovingleftandright;theenemyaircraftislocatedatthetopofthescreen,movingleftandrightataconstantspeed,andrandomlyfirebulletsattheplayer,saircraft.Practiceshowsthatthegameissimple,flexibleandinteresting.Keywords:Pyron;airplanewargame;pyGame目录一、飞机大战游戏总体设计2(一)总体设计原则1(二)系统总
3、体设计2(三)准备工作2二、飞机大战游戏功能实现3(-)显示玩家飞机3(二)玩家飞机发射子弹3(三)敌人飞机3三、优化程序代码4(-)抽取子弹基类(二)抽取飞机基类4结语20参考文献22PythOn是一种开源的简单易学的高级语言,应用场景涉及到Web应用开发、操作系统管理、科学计算、游戏等领域。飞机大战是一款飞行射击类游戏,游戏方法是玩家操作飞机与敌机在空中战斗。本文主要介绍用Python软件实现飞机大战游戏。游戏的整个界面是一张背景图片,游戏中用到的其他角色同样都对应着相应的图片,这些图片需要借助Pygame模块搭载窗口以显示J。在窗口中,对象显示的位置通过坐标标注。其中,窗口的左上角坐标为
4、(0,0),石轴向右延伸坐标数值增大,y轴向下延伸坐标数值增大。所有的游戏元素都参考这个坐标系,对象在窗口的移动就是坐标位置的变化。1飞机大战游戏总体设计Ll总体设计原则主要设计原则如下:(1)简单性。在实现软件的功能的同时,尽量让软件操作简单易懂;(2)针对性。基于Python软件,实现飞机大战游戏的各种要求;(3)一致性。类型、变量和其他元素的命名规则保持一致;完成同样的功能应该尽量使用同样的元素;界面元素的外观风格、摆放位置在同一个界面和不同界面之间是一致的。1.2系统总体设计系统中只有玩家一种用户,不必进行身份验证等操作。玩家点击应用图标直接进入开始界面。整个游戏的操作包括:显示玩家飞
5、机、控制移动方向;显示玩家发射子弹(子弹移动);显示敌人飞机,控制敌人飞机移动、敌人飞机发射子弹。1.3准备工作1.3.1添加pygame模块pygame是一套用来开发游戏的Python模块,该模块允许在Python程序中创建功能丰富的游戏和多媒体程序。Pycha珊作为一款开发Python的编辑器,它不仅可以帮助开发人员提高开发效率,而且包含了像pygame这样功能丰富的第三方模块。在PyCharm中添加pygame模块,在程序中导人pygame模块进行测试,编译器编译通过,就证明成功导入了模块。1. 3.2搭建游戏界面飞机大战游戏的整个场景都需要一个窗口作为载体,展示游戏中的画面。为了让整个
6、游戏的角色和背景的风格统一,准备了一张背景图片。在开发中,导入Pyg砌e模块,就能直接调用模块中的方法。1. 3.3检查键盘的输入当敌人飞机发射子弹的时候,玩家飞机需要使用键盘适时地调整位置,以躲避子弹的攻击。在PythOn程序中,移动鼠标、敲击键盘等人机交互的动作属于事件,它交由pygame的event模块进行控制。event模块采用列表形式存储的事件,可以通过get函数来获取。如果要获取键盘和鼠标产生的事件,就使用for循环遍历事件列表,取出每个事件与event.type(事件的类型)进行对比。如果event.type的值为QUit,说明用户使用鼠标点击了窗口右上角的关闭按钮,此时就要退出
7、程序;如果event.type的值为KeydOWn,说明用户使用了键盘,此时就要明确按下的是哪个键。在While循环中,已经显示了游戏的背景图片。这时,在程序中需要检测是否有事件发生,比如按下键盘等。如果没有事件发生,就执行更新操作,如果有事件发生,就先处理键盘事件以后再更新。2飞机大战游戏功能实现2. 1显示玩家飞机,控制移动方向在窗口中要显示玩家飞机,可以根据玩家飞机图片的名称创建图像,再把这些图像显示到屏幕上设定的位置。玩家飞机左右移动功能,可以通过改变坐标戈的值实现,飞机向左移动减小坐标石的值,反之则增大戈的值。新建一个PythonFi1e,取名为planew.在Plane.Py文件中
8、,导入Pygalne模块,之后定义一个表示玩家飞机的类HeroPIane。程序设计中,定义为display、move一1eft和move一right三种方法。其中,display用于在默认的位置显示玩家飞机;moveleft用于让飞机向左移动;moveri曲t用于让飞机向右移动。在Stan函数中创建飞机对象,并且显示到窗口中。在Whiletme语句中,根据玩家按下的按键来调用相应的方法,以控制飞机移动的方向。当按“卜”键或者“A”键时,控制玩家的飞机向左移动,当按“_+”或者DI,键时,控制玩家的飞机向右移动。野飞机大战-X2.2玩家飞机发射子弹2.2.1显示子弹当按空格键时,代表玩家飞机要发
9、射一枚子弹,此时需要在玩家飞机的头部位置生成一颗子弹对象。飞机左右移动到任意位置,只要按空格键,子弹生成的初始位置永远会位于玩家飞机的头部。新建一个PythOnFile,取名“bullet“。在bul-let.Py文件中,导人模块,之后定义一个表示子弹的类。代码如下:classBul1et(object):definit一(seif,x,y,Screen):seII.x=x+40semy=y-20seII.screen=screensemi砌ge=pygame.image.IOad(./feij/bulkt一3.班”).convert()def.display(seif):semscreen,
10、blit(seif.iamge,(semx,seif.y)按空格键发射子弹,代码如下:hemPlalle.Iauncn-bullet()运行程序,按下空格键以后,玩家飞机的头部显示了待发射的子弹。此时,无论飞机移动到哪个位置,生成的新的子弹永远会位于其顶部。&-mfi-XIScorer313%52. 2.2子弹移动每执行一次Whi1e循环,就会调用一次dis-play方法,让子弹再次显示到屏幕上。由于屏幕刷新的速度特别快,肉眼是无法捕捉到的。利用程序的这个特点,每刷新一次屏幕,就让子弹显示的位置上移几个单位,从而形成向上发射子弹的动画效果。如果无限制地往列表中添加子弹对象,终究会耗尽设备的内存
11、,所以,一旦子弹离开屏幕可视范围时;就把子弹对象从列表中删除。在BUIICt类中添加一个judge方法,用于反馈子弹是否发射到屏幕以外的情况,若子弹图像的y值小于0,则表示子弹移出了屏幕,返回Tme;反之则返回False.在HeroPlane类的display方法中,定义一个存放待删除子弹对象的列表。从列表中取出每个带删除的子弹对象进行判断,如果子弹对象已经发射到屏幕的外面,就添加到刚定义的列表中,然后清空列表中所有被删除的子弹对象。具体代码如下:defdisplay(seif):seif.screen,blit(semimage,(semx,seif.y)neen一del-Iist-fori
12、teminse噱bul1吼一1ist:i“tem.judge():need一del一1ist.append(item)fjfdel一iteminneed一del一1ist:seif.bull吼一1ist.remove(del一item)forbuIIetinsembuIIel一1ist:bul1et.display()bul1et.move()2. 3敌人飞机2. 3.1显示敌人飞机跟玩家飞机类似,在plane.py文件中定义一个表示敌人飞机的EnemyPIarle类。敌人飞机应该有默认的位置、呈现图像的窗口、存放子弹的列表这些属性。然后来到main函数的While循环语句中,在创建HerOP



- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 python 飞机 大战 游戏 设计

链接地址:https://www.desk33.com/p-90230.html