基于Python的Dodger游戏设计与开发毕业论文
2020-03-26 14:49:28
摘 要
本文共分为5部分来介绍dodger游戏的设计与实现。
第一部分介绍了dodger游戏的发展背景以及开发该类型游戏的目的和意义,并分析了国内外游戏发展现状;第二部分介绍了dodger游戏的总体设计方案;第三部分介绍了dodger游戏的详细设计方案以及具体的实现步骤;第四部分介绍了dodger游戏的测试方案以及参数调优;第五部分是完成了dodger游戏后的总结与感悟,还有一些对dodger游戏的设想与展望。
关键词:dodger游戏;python;pygame;碰撞检测;面向对象
Abstract
This paper is divided into 5 parts to introduce the design and implementation of the dodger game.The first part introduces the development background and significance of the dodger game.In addition,it also analyzes the development status of the foreign games.The second part introduces the overall design of the dodger game.The third part introduces the detailed design scheme and specific implementation steps of the dodger game.The fourth part introduces the testing scheme and parameter tuning of the dodger game.The fifth part is the summary and comprehension after the completion of the dodger game, as well as some ideas and prospects for the dodger game.
Key Words:dodger game;python;pygame;collision checking;Object oriented
目 录
第1章 绪论 1
1.1本文研究背景与意义 1
1.1.1 dodger游戏发展背景 1
1.1.2开发dodger游戏的意义 2
1.2国内外游戏发展现状分析 2
1.3本文的主要研究内容 3
第2章 dodger游戏的总体设计 4
2.1开发平台的选择 4
2.2功能设计 4
2.2.1基础模块设计 5
2.2.2道具模块设计 6
2.2.3积分模块设计 7
2.3技术方案设计 8
第3章 dodger游戏的详细设计与实现 10
3.1基于面向对象的游戏程序框架构建 10
3.2关键数据结构 11
3.3碰撞检测实现 11
3.3.1矩形的碰撞检测实现 12
3.3.2圆形的碰撞检测实现 13
3.3.3复杂图形的碰撞检测实现 14
3.3.4 dodger游戏的碰撞检测实现 14
3.4素材制作 15
3.5音效等多媒体信息处理 16
3.6核心功能模块设计 16
3.6.1游戏帧数控制 18
3.6.2道具模块实现 18
3.6.3游戏流程控制 18
3.6.4积分排行榜实现 19
3.7 dodger游戏的优化 20
第4章 dodger游戏的测试与分析 21
4.1游戏参数的调整 21
4.2边界值测试 21
4.3游戏元素碰撞测试 21
第5章 总结与展望 23
5.1本文总结 23
5.2未来展望 23
参考文献 24
致 谢 25
第1章 绪论
在这个经济社会快速发展的年代,人们的生活节奏变得越来越快,所面临的各种压力也越来越大。在这样的情况下,游戏如救世主般的出现了,它为人们提供了一种很好的休闲娱乐方式,缓解了生活所带来的压力。近年来,我国的游戏产业发展迅猛,影响力深入人心,游戏的受众群体不再局限于青少年,越来越多的“高龄”玩家也加入到了游戏队列,开启奇妙的游戏体验之旅。可见,人们不再以偏见的眼光看待游戏,更多的是关注游戏的积极面。在这样的时代背景下,游戏行业蓬勃发展,然而所面临的挑战也变得越来越多,开发出一款让用户满意的高品味游戏变得越来越难。
每款游戏产品都综合了许多复杂的设计,包含视觉(图像)、听觉(声音)和逻辑(程序),所以开发一款游戏并非易事。现如今,我国的游戏事业相比于国外仍处于落后状态,作为计算机专业的学生,我们可以尝试去开发一款小游戏,并从中锻炼自己的程序设计及算法运用的能力。若将来有幸成为一名游戏开发工程师,我们应积极地为国内的游戏开发事业做出贡献。
本文选择了dodger游戏作为研究课题,dodger游戏属于休闲益智类小游戏,玩家参与其中不仅能够提高自身反应速度,还能得到充分的休闲娱乐,实属顺应了当下游戏发展的潮流。
1.1本文研究背景与意义
1.1.1 dodger游戏发展背景
历史记载最早的电子游戏诞生于1952年,是一款井字棋游戏,特别之处是它运行在真空管计算机上,可谓是游戏界的鼻祖。直到70年代,电子游戏才真正以一种商业娱乐媒体被引入,得以在大众间普及。谈到游戏的发展史,不得不提任天堂的FC游戏。任天堂的FC全称为Family Computer,是日本任天堂公司1983年生产的游戏主机,现在很多游戏的前身就是来自于FC。FC为游戏产业做出了相当大的贡献,甚至可以说FC游戏机是日本游戏产业的起点。FC也曾在80年代风靡中国大陆,那个时候很多人管它叫红白机。FC上出了非常多的经典游戏,例如魂斗罗、超级玛丽、坦克大战、沙罗曼蛇、热血格斗等等,其中不乏一些dodger元素,就拿沙罗曼蛇来说,游戏的核心就是控制飞机躲避障碍和敌人的攻击,由此可见游戏开发者对于dodger元素的喜爱。
直到现在,游戏产业的发展依然呈现进步的趋势,更多游戏厂商奋力研发自己的产品,百家争鸣。游戏产业发展至今虽然只有 30 年左右的时间,却已经成为全球娱乐市场的主流,游戏软件的销售量更是与日俱增,甚至超过悠久历史的电影与音乐产业。在这样的时代背景下,dodger游戏依然占有一席之地,就拿手游来说,打飞机、神庙逃亡、天天酷跑等dodger元素的游戏,依然能够吸引大众的眼球,甚至成为玩家们的休闲娱乐首选。可以说,dodger游戏永远不会过时,在以后的发展道路上依然能够绽放出光芒。
1.1.2开发dodger游戏的意义
dodger元素一直以来都是游戏开发者所青睐的元素,dodger游戏属于休闲益智类游戏,它容易上手,易于被玩家所接受。玩家在游戏过程中,能够锻炼自身的反应速度,在紧张刺激的氛围中感受dodger游戏所带来的兴奋、愉悦。神庙逃亡是近年来较为优秀的dodger类型游戏,玩家扮演一名探险家,摆脱恶魔的追击,在整个游戏过程中,必须不停奔跑与敌人拉开距离,也要时刻注意避开前方的障碍。就是这样一款看似简单的游戏,竟风靡了全球,下载安装量超过了5亿,可见玩家们对dodger类型游戏的热爱。令人惋惜的是,国产dodger类型游戏很少能够登上国际大舞台,作为计算机专业的学生,可以尝试去开发一款dodger小游戏,从中锻炼自己的程序设计及算法运用的能力,若将来有幸成为一名游戏开发工程师,应积极地为国内的游戏开发事业做出贡献。
1.2国内外游戏发展现状分析
现如今,国内游戏产业的状况不容乐观,相比于国外,问题层出不穷。首先是缺乏创新,抛去山寨游戏不谈,国产游戏的选材往往一味模仿国外的优秀游戏,就拿最近流行的“吃鸡”类游戏来说,国内的几个游戏大厂都陆续推出了自己的“吃鸡”游戏,但给玩家的总体感觉都是换汤不换药。国产游戏最青睐的是武侠题材,但除此之外,很难找到更多新颖题材了。相比之下国外的许多魔幻题材游戏都给玩家带来了震撼,矮人、兽人、精灵、魔法等是在单机游戏大作经常能够看到的字眼,西方的游戏开发者将当地的神话融入到了游戏中,并在此基础上重构出游戏独有的世界观,玩家在体验游戏的过程中,身临其境,化身为一名勇敢的战士,享受游戏背景故事下的奇幻旅程。可以说,国外的许多游戏已经成功打动了玩家的心,甚至成为了玩家津津乐道的话题。不知道什么时候,国内的游戏开发者才能将自己的独特创意搬上舞台,不再去模仿国外的游戏,打造出具有东方特色的大型游戏。
其次是国内游戏研发技术水平较低。游戏引擎最早出现在上个世纪90年代,它是在游戏发展到一定程度之后才产生的。从20世纪90年代初开始,欧美等发达国家就开始大力发展游戏引擎,目前较为出名的寒霜(Frostbite)、虚幻引擎(Unreal Engine)、Unity3D等均出自欧美的游戏公司。而国内只有少数几家公司具有自主研发的游戏引擎,大多数游戏公司仍然需要引进国外的游戏引擎。国内开发者常常面临着虽有好创意,技术上却不支持去实现的遗憾。
1.3本文的主要研究内容
本文主要研究如何用python语言开发一款dodger游戏。pygame是python语言的一个模块,专为电子游戏设计而生,包含图像、声音,并提供了一些游戏编程常用的接口,将其运用于dodger游戏开发中再适合不过。本文从游戏素材的制作到游戏逻辑的实现,详细说明了各个细节上的解决方案。
第2章 dodger游戏的总体设计
2.1开发平台的选择
dodger游戏开发平台的选择如下:
(1)能够运行windows系统的中配PC机
(2)windows 10专业版 64位操作系统
(3)pycharm集成开发环境
(4)pygame游戏编程模块
(5)git版本控制工具
首先PC机一台是必须的,在操作系统上我选择了windows 10专业版,相比于linux系统,它具有完善的图形化界面,操作简便,对于初级开发者来说再适合不过。此外软件开发离不开IDE,PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。所以我选择PyCharm作为集成开发环境。pygame模块为python游戏开发提供了很好的支持,里面的许多函数库都是游戏开发经常使用到的,它能够提高我们的游戏开发效率。最后版本控制工具也是非常重要的,相比于svn而言,git的许多优势使其更受大家的欢迎,所以我选择了git。有了git的支持,开发流程就更有条理,每个阶段所完成的任务都可以加以记录,BUG的查找也变得更加轻松。
2.2功能设计
dodger游戏是一款人机对战游戏。dodger游戏的主题元素是躲避,所以首先要有基础模块,将游戏的躲避元素体现出来。单纯的躲避元素会使得游戏缺乏趣味性,所以要对基础模块进行进一步的功能拓展,在这里我引入了道具元素。最后还要完善用户体验方面的需求,积分模块就展现了玩家的游戏成就。
图2.1 dodger游戏功能设计图
2.2.1基础模块设计
dodger游戏大体上分为这三要素:文本、声音和图像,文本用来展示菜单以及玩家的积分统计情况;声音在特定的情景播放以加强游戏效果;图像以动画形式呈现。游戏界面设计为600X600大小的正方形板块,游戏内的元素都拥有各自的图像,通过程序逻辑能够控制游戏元素的运动和交互。打开游戏后,进入到游戏准备界面,其中包含了游戏的操作说明。玩家敲击空格后,则正式开始游戏。游戏开始后,玩家可以通过键盘控制主角的移动,主角一开始出现在游戏界面的最下方,而敌人则从游戏界面最上方向下滑落,试图攻击主角。玩家必须不停的操作主角去避开下落的敌人,或采用其它手段来化解敌人的攻击。此外,游戏界面上方还会以文本显示当前游戏状态,包括积分、生命剩余数、道具剩余数。
在整个游戏过程中,敌人出现的频率会越来越高,速度也会变得越来越快,玩家的分数越高,游戏难度也变得越大。最后,玩家将无法承受敌人的猛烈进攻,宣告游戏结束。dodger游戏没有胜利一说,比的是谁能坚持得更久,拿到更高的分数。玩家若能拿到第一名,会得到系统的赞扬,并进入结局界面,这样也算是顺利“通关”了。
图2.2 dodger游戏界面
2.2.2道具模块设计
游戏吸引人之处在于它的趣味性,若dodger游戏仅仅有着简单的“躲避”元素,将会显得非常单调。为了改变这样的状况,增加一些有趣的玩法就显得非常重要了。
游戏中存在玩家和敌人两大元素,根据以往的游戏经验,要使游戏变得更加有趣,可以增加道具元素。在dodger游戏中,设定了5种类型的道具,分别是子弹、定时器、炸弹、头盔、生命。子弹顾名思义,可以增加玩家随身的子弹数量,对敌人进行射击即可消灭敌人;定时器的作用是使敌人的行动在一定时间内变得缓慢;炸弹作为玩家的储藏道具,可以随时使用,消灭当前屏幕内的所有敌人,在关键时刻能起到很好的作用;头盔可以使玩家进入一段时间的无敌状态,在这段时间内,玩家可以随意撞击并消灭敌人;生命则是判断游戏是否结束的条件,玩家捡到生命后,便多了一次游戏机会,此外玩家在丢失一条生命后,会进入3秒钟的“透明”状态,在此状态下与敌人碰撞将不计损失。
有了道具的功能,玩家在游戏过程中就可以采取更多的策略。比如游戏初期难度较小时,玩家可以不停的收集道具,以备之后的不时之需。随着游戏难度加大,敌人出现频率变高,不免会出现玩家被逼入死角的情况,此时可以通过子弹或者炸弹来解围。在生命或无敌道具出现时,玩家可以想尽一切办法去争取,毕竟这两种道具带来的收益很大。除了以上的建议以外,玩家也可以制定自己的战略体系,但目的只有一个,就是坚持更久,获得更高的分数,冲击第一名。道具功能使游戏元素变得更加丰富,容错率也得到了提升,给用户带来了更好的体验。
2.2.3积分模块设计
每个玩家都有一颗好胜的心,而量化每局dodger游戏战果的最好方法就是积分统计。玩家坚持得越久,获得的积分越高。dodger游戏将玩家每局的积分做了排名统计,游戏结束后,列出排行榜前10名。若玩家有幸获得第一名,会得到系统的表扬,并进入游戏结尾界面,谓之“通关”。玩家为了“通关”,在每局游戏中不断超越自己,锻炼自身反应能力,制定不同的策略,体会游戏带来的乐趣,这也是积分模块设计的意义。
图2.3 积分排行榜界面
2.3技术方案设计
在正式的编码阶段中,pygame模块的运用尤为重要。pygame模块中包含了一些基本的数据类型:Rect对象表示一个矩形空间的位置和大小,用它来描述游戏元素的位置再适合不过;Surface对象是带颜色的像素的区域,可以使用它来对游戏元素进行绘制;pygame.event模块为用户提供了键盘、鼠标或其他类型的输入,以响应用户的操作请求;pygame.font模块拥有一个Font数据类型,用于表示pygame中的文本的字体;pygame.time模块中的Clock对象有助于避免程序运行得过快,它使得游戏运行有了帧的概念。不同的子模块完成不同的程序功能,结合起来就能构建出完整的游戏。
游戏包含文字、声音和图像。为了展示游戏得分,可以创建Font对象,传入字体大小等参数,并对其进行实时更新;音频文件主要使用ogg格式文件,使用Python工具类将其加载到游戏即可;游戏中的角色包含玩家和敌人,它们都有着独特的形象,为了在游戏界面中显示,我们需将它们的图像存储在PNG格式的文件中,游戏开始后使用Python工具类将其加载到游戏中,并使用pygame模块的相应功能使其运动,实现动画效果。
此外,游戏素材的制作也显得非常重要,例如游戏背景图大小必须和游戏界面一致,此时可以使用美图秀秀软件来转换图片的分辨率,还有图片里的一些细节修改,也可以完成。在音频上,pygame对ogg格式有着较好的支持,可以使用迅捷视频转换器将mp3等格式的音频转换成ogg格式。
图2.4 pygame模块划分
第3章 dodger游戏的详细设计与实现
3.1基于面向对象的游戏程序框架构建
面向对象是一种软件开发方法,它也可以运用到游戏开发中。面向对象的核心思想是一切事物皆对象,通过面向对象的方式,可以将事物抽象成为对象,这样更有利于对复杂系统的分析、设计与编程。此外,通过面向对象的封装技术,代码编写起来就可以像搭积木一样,快速而有序。
要将面向对象的思想应用于dodger游戏,首先要思考的是,dodger游戏里的什么事物能够抽象成对象?既然说一切事物皆对象,那就应该把所有的游戏元素都抽象成一个个对象。首先是游戏主角,将其抽象成为对象后,它就拥有了自己的属性,包括图片、位置、速度、子弹剩余数、生命剩余数、炸弹剩余数等。此外,主角拥有自己的功能,将其定义为方法,包括移动、绘制、射击、变为无敌状态、变为透明状态等;敌人也可以抽象为对象,它拥有图片、速度、大小、位置等属性,功能上包括移动、绘制、消亡等;此外,道具也是一个重要对象,它包括图片、位置、种类、速度等属性,功能上包括移动、绘制等;玩家发射后散布在游戏界面上的子弹也可以看做是对象,它拥有自己的图片、速度、位置等属性,只不过我们还得在主角对象里加上一个字段,用来保存所有散布在游戏界面上的子弹对象。
接下来,创建名为gameElement.py的文件,其中包含游戏元素类的代码段。下图是dodger游戏的目录结构:
图2.4 dodger游戏目录结构
这样一来,我们在dodger.py主程序中就可以通过创建游戏元素对象,并调用相应方法来实现一些功能设计,逻辑上显得清晰明了,编码时也更加得心应手、游刃有余。
3.2关键数据结构
dodger游戏中应用得最多的数据结构就是列表。列表(list)是处理一组有序项目的数据结构,一旦你创建了一个列表,就可以在列表里添加、删除或者搜索项目。列表是可变的数据类型,并且是可以嵌套了。游戏界面上的敌人、道具和子弹都是使用列表进行存储的,这样的好处很多,例如在检测主角和敌人是否产生碰撞时,我们只需把主角和敌人列表里的所有条目依次进行判断就可以了。另外,在每轮循环中,我们都要检查敌人和道具列表,找出出界的元素,将其从列表里删除。由此可见列表功能的强大及其重要性。
下面是玩家和敌人碰撞检测的代码段,其中就包含了列表的遍历和删除用法:
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示:
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。