1、Java 程序开发实训综合实训报告题目: 坦克大战系统 姓名: 方庆 学号: 2010203206 班级: 10 软件(2)班 一、 系统实现的主要功能及运行结果截图选择的语言的原因游戏本身是一种娱乐方式,带给人无尽的乐趣,而且游戏行业的发展也将是带动周边行业的发展。同样对做出游戏的人的要求也会越来越高一满足游戏爱好者的要求。本次期末设计就是设计一种娱乐性较强的小游戏坦克大战,说到大战其实是不敢当的。但游戏基本拥有可玩性。java 语言是一种跨平台,适合与分布计算环境的面向对象编程语言,java 主要用在 web 开发,手机游戏及一些平台游戏的开发,他有很好的跨平台性。所以本次的设计坦克游戏选
2、择的是java。系统软件的软件环境1.网络服务器操作系统:Window 是 XP 以上2.开发工具:Eclipse3 运行环境:J2sdk4.编程语言:java 语言。人机对战模式功能1.能够发射子弹打击敌人 2.敌人能够移动 3.能够模拟爆炸 4.能够产生障碍5 能够增长生命 6.能够使用超级子弹坦克可以发射子弹玩家坦克被击中血量减少。被击中的坦克发生爆炸并且吃血块可以加血量。玩家坦克可以从把方向发射超级子弹自己的 TankHealth 为=0 时, 。说明玩家坦克已死亡。游戏结束本系统的坦克大战是基于 java 语言设计的开发,具有较高的人工智能和相对的图形处理。游戏可一人作战每次电脑方有
3、 10 辆坦克,此一举消灭全部的敌方坦克为目的。在这过程中坦克有机会得到血块来添加自己的生命值。从而变得强大。也利用 wall 来形成阻击敌人。游戏拥有开挂的功能。可以穿过墙体来攻击敌方坦克。还给玩家坦克置了超级炮弹。从八个方向同时射出炮弹来摧毁敌方坦克。主要功能简单罗列如下:1.屏幕左上方显示游戏的状态,当玩家方坦克全数为 0 是游戏结束2.敌方坦克只在空地上行走,不可通过 Wall3.游戏打坏敌方坦克后,可随机位置随机出现血块奖励。坦克经过该位置可获得相应的生命值加成。4.玩家坦克的游戏资格和电脑坦克不同。TankClient 类设计流程开始初始化坦克玩家坦克由键盘控制发射炮弹碰撞检测坦克
4、爆炸判断胜负结束游戏系统类关联图TankClient 类此类主要功能是利用 java 中包来实现的坦克游戏的主主窗口,以及对其他类调用和实例化Blood 类此类主要定义坦克的生命值,有可以控制玩家坦克加血等操作方法。Missile 类此类主要的是游戏中的炮弹类,其中有炮弹的大小以及移动等成员。BaoZha 类此类定义的是坦克被攻击的爆炸,其中有坦克击毁的图形变化等成员。Tank 基本类功能分析Tank 类中,封装了一些变量属性,包括坦克自己的大小。运动速度方向控制、生死控制、好坏控制。Tank 类中没有 main 函数,不是主类,它当中只封装一些变量属性和静态方法,被 TankClient 类
5、调用来实现坦克的一系列动作 Tank类主要方法如下:1.getRect()方法public Rectangle getRect() Return new Rectangle(x,y this.WIDTH,this.HEIGHT)Rectangle 类是碰撞检测的辅助类,通过得到子弹 x,y 的坐标。检测是否碰撞.2.draw()方法:负责将所有的活动在屏幕上画出来;3.move()方法:主要负责坦克的移动,包括八个方向的控制以及坦克一个移动速度;4.boolean()方法:设定键盘事件。控制坦克移动5.KeyRelesed()方法:处理按键抬起事件,安“J”键时,发射普通炮弹。抬起“K”键发射
6、超级炮弹6.locationDirection()方法:定义炮筒的方向,可以向八个方向发射炮弹7.fire()方法:处理发送子弹的方法;Missile 类的基本功能分析Missile(子弹)类和 Tank 类一样,只封装一些变量属性和静态方法,主要包括:子弹的大小,运动的速度,Missile 类持有一个 TankClient 类的引用tc,TankClient 类要执行发射炮弹操作是调用 Missile 类中的方法。Missile类中的方法主要如下:1.draw()方法:负责画出子弹的所有活动2.move()方法:先判断方向在移动。并且给一定的移动速度。3.个头 Rect 方法:负责取得子弹的
7、方形,为碰撞做准备;4.hitTank()方法:检测子弹是否撞到坦克撞到返回 ture,否则返回 false。BaoZha 类的基本功能分析BaoZha(爆炸)类也是封装自己的变量和方法的外部包装类,没有 main 方法,供 TankClient 主类需要时调用它的 draw()方法,当子弹击中坦克是需要产生爆炸。下面是爆炸的图片:二、 综合实训过程中遇到的问题及解决方法遇到的问题:炮弹不消失坦克出界解决方案:加入控制炮弹生死的量 live(Missile)当炮弹死去的就不需要对其重画当炮弹飞出边界就消失但炮弹死亡就从界面上消失三、 本次综合实训中的收获及体会学习 java 两个学期来,有自己
8、的一些见解。Java 是面向对象的,具有平台无关性,现在被广泛应用很多领域。也是因为老师在开始讲课是给我们讲解过,所以有兴趣去学习 java 程序设计。首先要明白 Java 体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA) 。J2SE,Java 2 Platform Standard Edition,我们经常说到的 JDK,就主要指的这个,它是三者的基础,属于桌面级应用开发,这部分如果学得好很容易拓展 J2EE 和 J2ME。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式 Java,如手机,PDA 等等。J2EE,Ja
9、va 2 Platform,Enterprise Edition,就是所谓的企业级 Java,适合企业的大型应用开发。我感觉学习 java 应该是循环渐进,有始有终,按部就班,脚踏地.java是一门有着阶梯性的一门语言,如果要学习它.我觉得最好还是按照 java 的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到更少的麻烦.感觉 java 是一门更倾向于网络的语言.不要上来就学习 JSP,这样不好,因为这没有基础.在以后的学习中很可能遇到很多的麻烦,这就不好了.信心,恒心,毅力是最重要的.这是我们必须具备的心理素质.要是学习这门语言开始的时候很有兴趣,遇到苦难就退缩,这样最终会
10、放弃学习 java,没有经历风雨怎么见彩虹.编程就是有的时候就是那么.会遇到很多的困惑.但是一旦你弄懂了,或者是你把问题解决了,你会感到很兴奋,编程的快乐就在此了。多看看一些资料,多多的向高手请教,这样才好.要学会总结和领会.,当然,学习 java 一个人有一个人的想法,也有自己的独学习方法.总之适合自己的就是最好的,要听老师讲的,理解他的思路,然后试着写老师讲的代码,不会的时候可以看看老师的代码,关键是要知道代码为什么这样写,还要学会检查异常,解决异常,这一点也很重要。我觉得我学习这么多天,就是写代码,改错。代码写的多了,自然就知道该怎么写了。本系统基本实现了坦克游戏的可玩性,希望自己以后多
11、做这方面的练习四、 对本课程教学的建议从打开始我们软件(2)班的所有同学都上过魏晓东老师您的课。现在又有你教的 java 课。说是对本课程教学的一点建议。其实还真的找不出本课程中教学中老师您教学的任何毛病。只能说说我对 java 课程学习的一些要求及和别人分享下 java 学习中的一点心得 。在课程教学中,我们要跟上老师的步伐。要积极在老师的分享 java 题目中理解。并且能向更高层攀爬。要积极的抄写代码。也正如老师说的。在抄写代码的过程中学会理解。然后把书或资料蒙上,也能写出来。这样就可以在学习中进步,才能更好的在学习 java 中发展下去。其次要多问问老师及同学,这是在所有学习知识中不可缺
12、少的一部分。我们之所以能学习。那不是天生的,而是一步一步的在不断听取别人意见中改变的。所以这样的要求也是不可或缺的。这也不需要我多加申明。我想每个人都有不一样的经历但有相同的体会。还有下面我想对学校课程安排上的一些建议。就是在我们安排的课程表上你会发现所有的 java 课都在同一天的下午。4 节连堂感觉压力很大。而且都是上机课。这让我们身上在加了一座山。这对本来视力不太好的我也是一个打击。我想对老师也是一种考验。不仅要考虑我们的感受。想我们能不能接受这课程的内容,还有就是自己精力的问题,给谁都会很疲惫的。在这里祝愿所有老师身体健康。所以建议学校不要安排课程在一起太多。还有就是希望注重学生综合素质的培养。我想这里我多说无意。学校应该有自己安排培养的一套计划。同时我希望在 java 学习中能适当的培养团队的精神。老师可以安排几个人一组一段时间完成一些小的程序作为作业。这样为以后工作提供帮助。也培养了同学之间的感情。最后在这里谢谢老师。您辛苦了。