




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、录01251第一章绪论课题研究的背景如今我们的生活节奏越来越快,每个人的生活压力也在不断变大,长期紧绷 着神经容易产生心理和生理上的双重伤害,人们需要在工作和学习之外放松自己, 玩玩游戏正是放松自己的方式之一.坦克大战,一个众所周知的小游戏,曾经在红白机时代风行一时.其界面简 单,耐玩,关卡多,可玩性高,没有局限的年龄层.Java是现在全球最时髦的开发工具之一,它拥有庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能, 拥有一个虚拟机,总之,Java 的出现,确实给整个程序界带来了巨大的冲击,也许现在还无法准确评估 Java为 整个IT业带来的影响,但是有一点毋庸置疑一Jav
2、a将不可预防的影响一带程序员.使用Java作为开发工具,来做坦克大战这个小游戏,是一种很理性的选择.Java游戏可以在本地桌面系统下运行,也可以在 WebM览器下运行.我在大学四年中学到了很多计算机的知识,JAVA语言,软件工程,数据结构, 软件工程等课程.如今我将用我所学的知识来完成一个坦克大战游戏,来锻炼自 己的动手水平,独立作出一个小程序.课题研究的任务本文中所做的主要工作如下:(1) 介绍了制作坦克大战游戏的意义和目的.(2) 设计坦克大战游戏各个类,实现各类效果和目标.(3) 分析并解决游戏中的假设十技术问题.(4) 完成坦克大战游戏,进行测试并分析结果.第二章系统分析课题的可行性分
3、析1、课题要求(1) 与实践活动和相关的文件和资料由教师提供.(2) 本课题要求学生有熟练的Java开发水平,有较强的自学水平.(3) 具体问题再做详细调查研究并与指导老师面谈.2、可行性分析技术可行性:游戏对机器没有多大要求,现在无论什么电脑,只要能安装J2SDK就能在电脑上开发这款游戏.制作出来的游戏可以在本地桌面运行,也可 在WE引运行,现在JAVA语言非常成熟,完全能够完成这个游戏.经济可行性:开发这个游戏除了消耗自己的时间和精力以外,不需要其他的 资金问题,完成后放到网上开放下载,无需任何费用,有兴趣的人可以自己下载 来玩.需求分析在游戏中需要实现的功能:(1) 能够通过键盘自由限制
4、坦克移动和发射子弹;(2) 敌方坦克能够随机移动和随机发射子弹;(3) 子弹和不同阵营坦克碰撞后会产生爆炸;(4) 消灭敌方坦克后会有个计分板记录玩家得分(5) 游戏进行到一半时可以暂停退出,下次翻开游戏时选继续游戏可以继续 之前的游戏.第三章系统总体设计游戏总体流程设计开始新游戏时,先进行初始化,然后调用敌方坦克类和我方坦克类,实现键 盘监听功能,战场显示所有坦克的移动,发射子弹.判断子弹和敌方坦克的碰撞, 调用爆炸类,调用记录类,修改玩家总得分.图总体流程图游戏界面设计(1) 开始菜单界面左上角设置个游戏菜单,里面含有“开始新游戏、“继续游戏、“存盘退出、“退出游戏这几个下拉选项,玩家可通
5、过这些选项限制游戏的开始, 存盘,与结束图开始菜单(2) 战场窗口中间是坦克大战的战场,里面显示敌我双方坦克,以及各自发出的子 弹,坦克的一切行为都会显示在战场上.图战场(3) 坦克剩余数战场正下方显示我方坦克剩余生命和敌方坦克剩余数量.图坦克剩余数(4) 玩家总成绩战场右边显示玩家击毁敌方坦克所得到的的总成绩.图玩家总成绩第四章游戏详细设计各个类的设计(1) 坦克类是系统中最主要的一个类,坦克的届性:速度(X轴和Y轴速度),坦 克的大小,坦克所在坐标,坦克的方向,坦克存活与否.这些届性都有一个初始 化值,游戏一开始就可以运行.设计过程中,坦克出现的位置是由坦克的坐标而定.玩家的位置由键盘监听
6、 方向,根据指定方向以一定的速度前进一一这个速度是全局静态变量,当没有键 盘限制的时候,坦克就会保持静止.敌方的坦克是用随机数来限制方向和路径的. 通过TouchotherEnemy()来判断是否碰撞到别的敌方坦克.我方坦克的方向和子弹发射都是由键盘来限制,所以在坦克类里用 keypressed ()方法来接受键盘的按键监听,接受到相应的信息后,例如接到X,那么表示发射子弹,此时就要调用坦克类里的fire ()方法.接受到方向键,那么会对坦克坐标做出相应的变化.图坦克类图红色我方坦克黄色敌方坦克(2) 子弹类需要依附坦克类,每个坦克都可以发射子弹,子弹的方向和速度都在 子弹类里.当子弹碰到敌方
7、坦克或跑出战场后,子弹线程便会结束.图子弹类图红色我方子弹黄色敌方子弹(3) 爆炸类是取决子弹类.每当子弹碰到敌方坦克时,子弹线程结束,并调用爆炸类,爆炸类会读取坦克即时的坐标,并用连续的三张图片显示出爆炸效果.图爆炸类程序的其他设计(1)图形用户界面要用抽象窗口工具 AWff日Swing来实现,在选择开始新游戏前, 实现屏幕中央关数的闪屏效果.class StartPanel extends JPanel implements Runnable(int time=0;public void paint(Graphics g)(g);(0, 0, 900, 600);if(time%2=0)(
8、;(new Font("宋体,30);("stage:1, 400, 250);Overridepublic void run() (程序不能由其程序员来测试.测试是为了找错.从心理学角度上讲,程序员对自己做的程序会觉得不会有多少错误.而且如果程序员的理解错误,程 序员自己测试肯定是查不出错误的.2. 在程序测试时,测试人员应有正确的输入和明确的输出结果.3. 程序测试需要合理的输入数据,也要不合理的输入数据.保存素有的测试案例,并作为一个软件组件.花费相当多的精力来射击测试 用例.不加以保存,一旦程序错误修正或改进需要重新测试,就要重复上述工作. 这是不是太浪费了,人们一
9、般不愿重新设计测试用例,测试时难免会没有第一次 测试那么认真.这往往无法发现因修改而产生的缺陷.程序中有错误的概率和在那段程序中已经发现的错误成比例.程序中的错误 总是一起出现,对这种现象,现在还没有令人满意的解释.但这样的现象说明, 为了提升测试的效率,应当特别对待那些容易出错的程序段.测试方案进行通过测试在软件测试过程中,我们要明白软件能够做什么,不会去测试额外的功能. 因此用最简单的测试方案,来检测软件根本功能的运行.进行有效类测试在保证软件能够正确运行之后,就能用各种“非正常操作和数据来暴露缺 陷.纯粹是为了破坏软件而设计的测试.测试用例翻开坦克大战的运行文件,可看到新开启的窗口如下.
10、图开始窗口翻开游戏下拉选框,可看到“开始新游戏、“退出游戏、“存盘退出、“继续游 戏这几个选项.图开始选项框点击开始新游戏即可开始游戏,并且能听到游戏开始的声音,能看到界面上显示 出来的信息,通过上下左右可以操作我方坦克的移动,按住方向键不动,坦克会 不停的向那个方向移动.图坦克的移动按X键可以发射子弹,子弹会击毁地方坦克,图为敌方坦克爆炸.图坦克的爆炸 我方坦克最多发射5发子弹,必须等子弹消失后才能再次发射子弹.图坦克的子弹系统可以保存退出,记录坦克的坐标,玩家总成绩.图存盘退出经过这两个月的学习,研究和开发,坦克大战游戏的根本功能已经实现出来 玩家可以通过操作坦克去击毁敌方坦克,游戏开始有
11、游戏音效,坦克被击毁时有 爆炸效果,可以存盘和读档.由于自己知识上的欠缺,最开始设想的一些内容无 法实现,但还是可以根本完成坦克大战的功能.通过这次坦克大战的毕业设计我学到了许多知识,第一次独立完成了一个小 工程,过程中碰到了一些麻烦和缺乏,都在同学和老师的帮助下一一找到了解决 的方法.从碰到难题,到自己查书,到与同学讨论,再到向老师请教,使得我的 毕业设计不断的完善,并且学到了珍贵的知识.参考文献1 Java 语言编程根底教程一一宋振会编着,活华大学出版社20052 Java语言程序设计一一郎波 编着,活华大学出版社20053 Java核心技术卷I :根底知识Cay、Gary Cornell
12、 编着,机械工业出版社20214 Java 游戏设计2荣钦科技编着,活华大学出版社5 Java JDK 实例宝典一一夏先波编着,电子工业出版社20076 Java 面向对象编程孙卫琴编着,电子工业出版社20067 Java 编程思想第4版一一美埃克尔 编着,陈昊鹏 译,机械工业出 版社20078 Java 编程模式与范例一一严桂兰刘波 刘甲 编着,机械工业出版社20029 优秀动漫游戏系列教材一交互式漫游动画-Virtools+3dsMaXS拟一一罗建勤张明编着202110 锐风行技法3ds Max/After Effects电视品牌形象包装完全解码一一肖艺孙春星 雷荣祖 编着,人民邮电出版社
13、2021.11 Java典型应用彻查1000例-图形与网络游戏开发DVD 一贾蓉生 胡大源 林金池 编着,科学出版社2021致谢经过两个多月的辛苦忙碌,本次毕业设计完成了,由于经验匮乏和业务逻辑 不熟悉,难免会有很多考虑不周到和不完善的地方,但在指导老师和同学的帮助 下许多问题都得以解决,在此本人要特别感谢他们对我的帮助.首先我的毕业设计能够顺利完成,和李林老师的全力指导和热心帮助是分不 开的,无论是在初期的设计阶段还是后期的运行阶段都得到了李林老师的鼓励和 帮助,在毕业设计过程中,给我提示游戏设计的逻辑思路;给我提供参考书籍; 给我提供了很多技术资料.在碰到问题时,总是鼓励我迎难而上.特别是
14、论文格 式的修改,让我明白了一个标准的论文,其格式的重要性,哪怕是一个标点符号 都要严格要求.没有李林老师的帮助,我是做不出这次毕业设计的.其次我还要感谢大学四年来的所有老师,为我们打下的根底.以前总觉得学 习的课程用处不大,但当自己真正去完成一个设计的时候,才觉察每门课程的重 要性.然后我要感谢我的几位同学,在毕业设计的开发过程中,但我遇到难题时,他 们给予我支持,鼓励和帮助,帮助查阅资料,与我共同解决难题.通过这次毕业设计,不仅完成了我的学业,更重要的是让我从开始的需求分 析到具体功能的实现,再到最终的测试和维护的软件工程有了进一步的的理解, 这种思维方法对我的思想产生了极大的影响.我的动
15、手水平和独立解决问题的能 力得到了很大的锻炼和提升.我还要感谢学校提供这次毕业设计的时机,让我在学业即将结束的时候有认 识自己的时机,意识到自己的优势和缺乏,在这次毕业设计中明白了责任的重要 性,从而提升了自己的责任心.最后,感谢辩论组对我的毕业设计的考核,如能够得到辩论老师们的认可, 即是对我的学习和工作最大的鼓励.你们的客观评价和建议一定牢记于心,在今 后的工作中,更加严格要求自己.附录一坦克大战中的类敌人坦克类package myTankGame;import .*;import .*;class AePlayWave extends Thread (private String fil
16、ename;public AePlayWave(String wavfile) (filename = wavfile;public void run() (File soundFile = new File(filename);AudioInputStream audioInputStream = null;try (audioInputStream = (soundFile); catch (Exception e1) ();return;AudioFormat format = ();SourceDataLine auline = null;info = new , format);tr
17、y (auline = (SourceDataLine) (info);(format); catch (Exception e) ();return;();int nBytesRead = 0;byte abData = new byte512;try (while (nBytesRead != -1) (nBytesRead = (abData, 0,;if (nBytesRead >= 0)(abData, 0, nBytesRead); catch (IOException e) ();return; finally ();();etImage("");ima
18、ge2=().getImage("");image3=().getImage("");把该炸弹从bombs向量中去掉if=0)(b);etX(),.getY(), g,.getDirect(), 1);/再画出敌人的子弹(/取出子弹if(,3, 3);else(/如果敌人坦克子弹死亡就从Vector中去掉/写一个函数专门判断子弹是否击中坦克public boolean hitTank(Shot s,Tank et)(boolean bl=false;/判断该坦克的方向switch(/如果敌人坦克的方向是上或者下case 0:case 2:if>&a
19、mp;&<+40&&>&&<+60)(/击中/子弹死亡=false;/坦克死亡=false;bl=true;/创立一颗炸弹,Bomb b=new Bomb,;/ 放入 Vector(b);break;case 1:case 3:if>&&<+60&&>+14&&<+14+40)(/击中=false;/坦克死亡=false;bl=true;/创立一颗炸弹,Bomb b=new Bomb,+14);/ 放入 Vector(b);break;return bl;/判断我的
20、子弹是否击中敌人坦克public void hitEnemyTank()/取出子弹/判断子弹是否有效(是否活着)if=true)/取出每个坦克.与他判断 for(int j=0;j<();j+)(/取出坦克EnemyTank et=(j);if=true)(if(myShot, et)();();/判断敌人子弹是否击中我的坦克public void hitHeroTank()(/取出每一个敌人的坦克for(int i=0;i<();i+)(/取出坦克EnemyTank et=(i);/取出每一颗子弹 (/取出子弹if(if(enemyShot, hero)(/画坦克的函数(扩展)p
21、ublic void drawTank(int x,int y,Graphics g,int direct,int type)(/判断是什么类型的坦克switch(type)(case 0:;break;case 1:break;/判断方向/向上if(direct=0)(x, y, 10, 60,false);(x+10, y+10, 20, 40, false);(x+30, y, 10, 60, false);(x+10, y+20, 18, 20);(x+18, y, 3, 30);else if(direct=1)/ 向右(x-10, y+14, 60, 10,false);(x-10
22、+10, y+14+10, 40, 20, false);(x-10, y+14+30, 60, 10, false);(x-10+20, y+14+9, 18, 20);(x-10+30, y+14+18, 30, 3);else if(direct=2)/ 向下(x, y, 10, 60,false);(x+10, y+10, 20, 40, false);(x+30, y, 10, 60, false);(x+10, y+20, 18, 20);(x+18, y+30, 3, 30);else if(direct=3)/ 向左(x-10, y+14, 60, 10,false);(x-10+10, y+14+10, 40, 20, false);(x-10, y+14+30, 60, 10, false);(x-10+20, y+14+9, 18, 20);(x-10, y+14+18, 30, 3);/ ();Overridepublic void keyTyped(KeyEvent e) (/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师招聘之《幼儿教师招聘》题库高频难、易错点100题模拟试题及答案详解【新】
- 渔业养殖保险服务创新创业项目商业计划书
- 网络安全事件响应团队创新创业项目商业计划书
- 乳品品牌营销创新创业项目商业计划书
- 2025年教师招聘之《小学教师招聘》试题一及完整答案详解(易错题)
- 2025内蒙古呼伦贝尔陆港国际有限公司市场化选聘总经理、副总经理备考及1套参考答案详解
- 教师招聘之《小学教师招聘》考前冲刺分析及完整答案详解【网校专用】
- 押题宝典教师招聘之《小学教师招聘》模考模拟试题附参考答案详解【典型题】
- 2025年教师招聘之《幼儿教师招聘》每日一练试卷附参考答案详解(典型题)
- 反诈考试题库及答案
- 2025年市级科技馆招聘笔试重点
- 2025西电考试题及答案
- 泡茶的步骤课件
- 2025年先兆流产的护理查房
- 人教版(2024)八年级上册数学全册教案
- 2025年部编版新教材语文九年级上册教学计划(含进度表)
- (高清版)DB11∕T 2440-2025 学校食堂病媒生物防制规范
- GB/T 7324-2010通用锂基润滑脂
- 土地管理法(1986年版)
- 动物遗传学第十章遗传病的传递方式.ppt
- 延期缴纳税款申请报告申请延期缴纳税款报告2p.doc
评论
0/150
提交评论