欢迎来到天天文库
浏览记录
ID:39454603
大小:463.12 KB
页数:37页
时间:2019-07-03
《Java坦克大战游戏设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Java大作业报告(截止5月20日)北方民族大学大作业报告(游戏程序设计)系(部、中心)计算机科学与工程学院姓名王鑫学号20122201专业软件工程 班级2012级软件三班课程名称Java语言程序设计作业题目名称《简易版坦克大战游戏程序设计》起止时间2014年4月21日——2014年5月21日成绩 指导教师签名贾艳波、林淑飞 Java大作业报告(截止5月20日)简易版坦克大战游戏程序设计一、游戏的基本规则坦克种类分为敌方坦克和我方坦克,敌方有n辆蓝色坦克(n值可以自己设定),我方有一辆红色坦克,我方坦克发射子弹,击中敌人坦克后,敌方坦
2、克消失,并产生爆炸效果,同理,敌方坦克击中我之后,我方坦克消失并爆炸。游戏结束。二、主要实现思想和算法gui图形界面显示:界面的显示是通过TankGame类(继承了JFrame)和MyPanel(继承了JPanel)类实现。其中,MyPanel重写了paint方法,利用画笔Graphics绘制活动区域、坦克和子弹。画坦克的思想:选择一个参考点,如右图,首先参照参考点,画出参考点左边的矩形,然后参照参考点分别画出中间的正方形,圆形,直线和右边的矩形。这些形状组合起来就形成了一辆坦克。然后将画坦克的步骤封装成一个方法。我的坦克发射子弹的思
3、想:首先创建一个Shot类,他拥有坐标(根据坦克的坐标换算得到)、方向、速度和是否存活的属性,因为,子弹的坐标要不断的改变,所以将它做成一个线程。然后,在我的坦克里面定义了一个vactor(因为他是线程安全的)类集框架存放我的坦克的子弹。然后在pannel的paint方法中绘制。让MyPanel实现KeyListener接口,将TankGame注册让MyPanel监听,这样的话我按下j键,就在vactor里面添加一个子弹,然后让Shot实现Runnable接口,然后重写run方法,在run方法中通过改变子弹的坐标实现子弹的运动。我的坦
4、克移动的思想:让MyPanel实现KeyListener接口,将TankGame注册让MyPanel监听,这样我按下相应的键,就相应的改变坦克的坐标,利用repaint重新绘制坦克。敌人坦克移动的思想:将敌人的坦克做成一个线程,然后在run方法中改变坦克坐标,重绘坦克。里随机数生成不同的方向,从而让敌人的坦克自主选择方向移动。实现动态画面的思想:将MyPanel做成一个线程,然后将repaint函数方将run函数中,这样repaint函数就会被不断的调用,从而不断地刷新画面,达到动态效果。判断子弹是否击中坦克的算法:获得子弹的坐标和坦
5、克的坐标,如果子弹坐标进入坦克坐标范围,就判为击中。让已经死亡的坦克和子弹消失的方法:被击中的坦克的isLive和子弹isLive的设置为false,这样,在绘制的时候会首先判断要绘制对象的isLive的值,如果为true才绘制,这样死亡的坦克和子弹就消失了。让敌人坦克和子弹自动移动的思想:将敌人坦克和子弹做成一个线程,然后分别在各自的run函数中添加一个修改坐标的程序段。然后在MyPanel中启动对应的线程。坐标不断的自动修改,另一方面,paint函数不断的重新绘制,从而让坦克和子弹自动的移动了起来。让坦克和子弹在规定的区域内移动的
6、方法:通过比较坦克坐标和区域坐标范围,如果坦克坐标达到区域坐标范围边界,就不让坦克的坐标继续修改,从而将坦克控制在规定的范围。通过比较子弹坐标和区域坐标范围,如果子弹坐标超出区域坐标范围,就将子弹的isLive置为false,这样在paint函数中就不再绘制这个子弹了,从而超出区域的子弹就消失了。Java大作业报告(截止5月20日)显示爆炸效果的方法:首先我准备了一张爆炸的图片,然后创建一个爆炸的类Bomb,它拥坐标属性,和生命值属性。还有减少生命的方法,当子弹击中坦克后,就坦克的坐标传递给Bomb,当做Bomb的坐标,然后开始绘制炸
7、弹,同时让炸弹的生命不断减小,paint函数根据炸弹不同的生命值绘制不同大小的爆炸效果,不同的爆炸效果组合起来就形成了一个完整的爆炸。三、游戏软件系统的设计Java大作业报告(截止5月20日)四、程序关键类的实现Tank类,拥有坐标X,Y和方向,速度属性,以及对应的set和get方法。还有判断坦克是否死亡的isLive属性。Hero类,继承了Tank类,有子弹属性,有shotEnemy方法,和上下左右移动的方法Shot类,实现了线程接口,run方法里面放置了修改子弹坐标和判断子弹是否处境的算法。有坐标、速度、方向、和是否活着的属性。J
8、ava大作业报告(截止5月20日)炸弹类,有坐标、生命值和是否存活的属性。有生命减少的方法。EenmyTank类,继承了Tank类,实现了线程接口,在run方法中添加了修改坦克坐标的程序段,从而让坦克自动移动。MyPan
此文档下载收益归作者所有