当前位置:首页 > JAVA语言写的坦克大战详细说明书
陕西国防学院
《Java语言》课程期末实训
题 目坦克大战
学 院电子信息学院 专 业软件技术 班 别软件3132班 学 号3531323X 姓 名 小智
2015年3月6日
一、 课程题目
? 坦克大战(Java版本)
实现一个java版本的坦克大战游戏
【功能提示】
1. 游戏要有图形用户界面,界面能够反映游戏所有的细节。 2. 界面中要有坦克,墙,树林,河流。
3. 界面中要有一个“家”,“家”被攻击中则输了游戏。 4. 坦克分两种,敌方和我方。
5. 墙也分为两种,可以穿透的普通墙,不可以穿透的铁墙。 6. 树和河流均只有一种,树林坦克可以通过。 7. 坦克可以发射子弹,敌我方的子弹属性一样。
8. 我方子弹可以杀死敌方坦克,敌方子弹也可以杀死我方坦克,但需要多枪子
弹才可以杀死。
9. 敌方之间不可以杀死对方。
10. 子弹击中坦克要有爆炸,但击中墙不能爆炸。 11. 我方可以吃血包增加生命。
12. 游戏可以暂停,重新开始,游戏帮助等功能。具体如下图: 13.
二、 题目分析与设计
? 需求分析
1. 设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表
现出来,界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。 2. 界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家”。 3. 坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方
坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到后自动调换方向。
4. 树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的
元素,使得游戏更加贴切人性化。树的数目不限,以游戏整体界面清晰美观来决定数目。
5. 河流:界面中要包括河流,河流作用与树林相同,同样河流的数目
不限,以游戏界面整体美观度来决定数目。
6. 墙:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时
会损坏,而铁墙可以阻碍子弹的穿越。两方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越铁墙而使得游戏无法进行下去。
7. “家”:用户方除了有一辆自己的坦克外还有一个要保护的家,家由
普通墙体包围,家受到子弹攻击后游戏立即结束,用户方则输了本局游戏。
8. 子弹:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线
移动,直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到一颗子弹攻击会爆炸从而导致死亡,死亡后坦克消失。用户方受到子弹攻击后会减少寿命,且受到四次攻击则死亡,此时如还有敌方坦克存在,则用户方输掉本次游戏。
9. 爆炸:当子弹射击到坦克身上时,要产生爆炸效果。
10. 方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹
的方向从属于坦克的方向。
? 具体设计
以下的论述均根据上面需求分析的顺序来安排: 1. 图形用户界面
图形用户界面要用到Java课程里的第六章的知识,需要用到抽象窗口工具集即AWT和Swing来设计实现,由于游戏需要有功能按键来控制
游戏的重新开始,退出,暂停,帮助等,所以在实现过程中,设计菜单项。
坦克,河流,树,家,墙等都是调用各自类里面的draw函数来画出来,最后new一个图形面板出来,把所有的元素都add进面板就可以了。界面的构造在程序中由TankClient类的构造方法来完成,即没构造一个用户类都会产生这样一个包含各种游戏元素在内的界面。由于画面是静止的,而我们游戏的画面要求是动态的,游戏中的坦克和子弹都是在不断的动,可穿透的普通墙体也在“动”,所以对于画面,必须要不断的更新,重画才能产生动态的效果。
在程序中,此部分功能也是由TankClient类里的update函数和framPaint函数共同实现,将“动”的元素进行重画,而不动的元素如菜单项就不用重画,所以这也是为什么把菜单项设计进TankClient类的构造方法中。当然,图形用户界面中也包括对各种界面元素的大小,位置和颜色等设计,细节问题这里就不赘述。 2. 界面中的元素
界面中的元素都是在构造界面的时候用界面实例对象的add方法加入进去的,且“动”的元素要不断更新重画。
共分享92篇相关文档