- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 大作业报告 (截止5 月20 日)
北方民族大学
大作业报告
(游戏程序设计)
系 (部、中心) 计算机科学与工程学院
姓 名 王鑫 学 号
专 业 软件工程 班 级 2012级 软件三 班
课程名称 Java语言程序设计
作业题目名称 《 简易版坦克大战游戏程序设计》
起止时间 2014年4月21 日——2014年5 月21 日
成 绩
指导教师签名 贾艳波 、林淑飞
Java 大作业报告 (截止5 月20 日)
简易版坦克大战游戏程序设计
一、游戏的基本规则
坦克种类分为敌方坦克和我方坦克,敌方有n 辆蓝色坦克 (n 值可以自己设定),我方有一
辆红色坦克,我方坦克发射子弹,击中敌人坦克后,敌方坦克消失,并产生爆炸效果,同理,
敌方坦克击中我之后,我方坦克消失并爆炸。游戏结束。
二、主要实现思想和算法
gui 图形界面显示:界面的显示是通过TankGame 类 (继承了JFrame)和MyPanel (继承了
JPanel)类实现。其中,MyPanel 重写了paint 方法,利用画笔Graphics 绘制活动区域、坦
克和子弹。
画坦克的思想:选择一个参考点,如右图,首先参照参考点,画出
左边的矩形,然后参照参考点分别画出中间的正方形,
圆形,直线和右边的矩形。这些形状组合起来就形成了 参考点
一辆坦克。然后将画坦克的步骤封装成一个方法。
我的坦克发射子弹的思想:首先创建一个Shot 类,他拥有坐标(根据坦克的坐标换算得到)、
方向、速度和是否存活的属性,因为,子弹的坐标要不断的改变,所以将它做成一个线程。
然后,在我的坦克里面定义了一个vactor (因为他是线程安全的)类集框架存放我的坦克的
子弹。然后在pannel 的paint 方法中绘制。让MyPanel 实现KeyListener 接口,将TankGame
注册让MyPanel 监听,这样的话我按下j 键,就在vactor 里面添加一个子弹,然后让Shot
实现Runnable接口,然后重写run 方法,在run 方法中通过改变子弹的坐标实现子弹的运动。
我的坦克移动的思想:让MyPanel 实现KeyListener 接口,将TankGame 注册让MyPanel 监
听,这样我按下相应的键,就相应的改变坦克的坐标,利用repaint 重新绘制坦克。
敌人坦克移动的思想:将敌人的坦克做成一个线程,然后在run 方法中改变坦克坐标,重绘
坦克。里随机数生成不同的方向,从而让敌人的坦克自主选择方向移动。
实现动态画面的思想:将MyPanel 做成一个线程,然后将repaint 函数方将run 函数中,这
样repaint 函数就会被不断的调用,从而不断地刷新画面,达到动态效果。
判断子弹是否击中坦克的算法:获得子弹的坐标和坦克的坐标,如果子弹坐标进入坦克坐标
范围,就判为击中。
让已经死亡的坦克和子弹消失的方法:被击中的坦克的isLive 和子弹isLive 的设置为false,
这样,在绘制的时候会首先判断要绘制对象的isLive 的值,如果为true才绘制,这样死亡的
坦克和子弹就消失了。
让敌人坦克和子弹自动移动的思想:将敌人坦克和子弹做成一个线程,然后分别在各自的
run 函数中添加一个修改坐标的程序段。然后在MyPanel 中启动对应的线程。坐标不断的自
动修改,另一方面,paint 函数不断的重新绘制,从而让坦克和子弹自动的移动了起来。
让坦克和子弹在规定的区域内移动的方法:通过比较坦克坐标和区域坐标范围,如果坦克坐
标达到区域坐标范围边界,就不让坦克的坐标继续修改,从而将坦克控制在规定的范围。通
过比较子弹坐标和区域坐标范围,如果子弹坐标超出区域坐标范围,就将子弹的isLive 置为
false,这样在paint 函数中就不再绘制这个子弹了,从而超出区域的子弹就消失了。
显示爆炸效果的方法:首先我准备了一张爆炸的图片,然后创建一个爆炸的类Bomb,它拥
Java 大作业报告 (截止5 月20 日)
坐标属性,和生命值属性。还有
您可能关注的文档
最近下载
- 沪教版七年级数学上学期考试满分全攻略第10章分式【单元提升卷】(沪教版)(原卷版+解析).docx VIP
- 学生心存感恩主题国旗下讲话稿.docx VIP
- 《妇幼保健学》课件——第十二章 围绝经期保健.pptx VIP
- 2024年全国职业院校技能大赛中职组(舞蹈表演赛项)考试题库(含答案)_已识别.pdf VIP
- 译林四上 Project1 教学课件.ppt VIP
- 乳腺癌的护理常规课件.pptx
- 2023年驾培相关项目运行指导方案.pdf VIP
- 个案工作 第八章-儿童辅导.pptx VIP
- 2024年山西航空产业集团有限公司人员招聘考试题库及答案解析.docx
- 运动解剖学(李世昌)第4章 消化系统.ppt VIP
文档评论(0)