项目坦克大战设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《JA V A程序开发课程设计》项目设计

项目名称:TankWar 软件

专业:软件工程班级:13软工1班姓名:毛晨光学号:24

一、需求分析:

基本功能:

1.玩家控制的坦克能够四处移动并且打击敌方坦克;

2.敌方坦克能够随机四处移动并且打击玩家控制的坦克;

3.玩家控制的坦克拥有血量,而敌方坦克没有;

4.坦克受到攻击时血条会缩短;

5.敌方坦克被消灭完之后,提示游戏胜利;

6.用户方坦克被消灭后提示游戏结束;

特色功能:

1.坦克具有图片,不单单只是个圈圈。

2.增加了血包功能,地图上会随机出现一个血包,我方坦克开过会增加

血量。

二、系统设计:

类:实现游戏界面地图的初始化。

类:绘制和重绘功能。

:监听用户的键盘输入。

类:实现坦克的初始化,绘制,移动,发射等功能。

:实现敌方坦克的初始化,绘制,移动,发射等功能。

类:实现炮弹的初始化,绘制,移动,攻击功能。

类:实现爆炸的初始化。绘制功能,爆炸效果由绘制半径从小到大再到小的圆实现。

类:包含枚举。

类:用于实现血包的功能。

三、功能实现。

一.绘制地图功能:

public class TankMap extends Frame{

tart();

}

制坦克功能:public class Tank {

方坦克的绘制方法

public class EnemyTank extends Tank{

弹绘制方法public class Shell {

ntersects())){

ntersects())){

"hittanks");

(false);

=false;

Explor ex=new Explor(x-3,y-3,;

return true;

}

}

return true;

}

}

五.爆炸类源代码:

public class Explor {

举方向源代码

package tank;

机血包产生的方法

public class Blood

{

public final int WIDTH=30,HEIGHT=30;

public int x= new Random().nextInt(800),y= new Random().nextInt(600);

TankMap tm;

public void draw(Graphics g)

{

ImageIcon icon=new ImageIcon("");

Image tankImage=();

(tankImage,x,y,null);

}

public boolean bloodb(Tank t){ if&&().intersects()))

{

if()<=60)

{

"blood up");

()+40);

}

else

{

"blood up");

(100);

}

}

return false;

}

public Rectangle getRec(){

return new Rectangle,,,;

}

}

四、总结。

1.如何解决地图频闪的问题

用双缓冲机制来画出屏幕,双缓冲机制是通过虚拟出一张图片,

将屏幕画在这张虚拟的图片上,在将这张虚拟的图片呈现在屏幕

上。

2.如何确定炮弹击中坦克

炮弹类和坦克类里都有一个getRec()方法来获取炮弹和坦克的

当前位置,当炮弹的getRec()与坦克的getRec()相交,则判

定炮弹击中坦克。

3.如何限制坦克在地区上行驶,不会跑出规定的区域

当坦克移动超出地图大小,则立马让坦克返回到地图边缘加坦克

大小的位置。

4.如何自行设置发射炮弹的按键

在坦克类中原本是监听f键,当f键按下后发射炮弹,只需要修改

监听的键就可以改变发射炮弹的按键。

5.如何处理多个炮弹的产生、消失

炮弹类有个方法isLive(),当用户按下f键或者地方坦克随机数

达到要求是isLive()为true,开始画炮弹,即炮弹产生。当炮弹

的getRec()与普通墙、金属墙、坦克的getRec()相交,或者

子弹移动出地图外,isLive()为faise,则立马从地图上remove

炮弹,即炮弹消失。

五、软件说明书

首先打开eclipse,然后将坦克大战的文件夹导入进去,然后运行程序,上下左右键控制坦克的移动,开火,己方坦克遇到敌方坦克的炮弹会

扣血,当血量扣光是会跳出Game over字样,表示游戏结束。

相关文档
最新文档