项目-坦克大战-设计报告材料

  • 格式:doc
  • 大小:197.00 KB
  • 文档页数:23

下载文档原格式

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

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

项目名称:TankWar 软件

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

一、需求分析:

基本功能:

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

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

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

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

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

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

特色功能:

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

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

血量。

二、系统设计:

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

2.PainTread类:绘制和重绘功能。

3.DirectionHandler:监听用户的键盘输入。

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

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

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

7.Explor类:实现爆炸的初始化。绘制功能,爆炸效果由绘制半径从小

到大再到小的圆实现。

8.Direction类:包含枚举。

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

三、功能实现。

一.绘制地图功能:

public class TankMap extends Frame{

//定义地图的尺寸。

public static final int MAPWIDTH=800;

public static final int MAPHEIGHT=600;

//我方坦克

Tank t=null;

//定义随机出现的血包

Random r=new Random();

Image bufferImage=null;

public static java.util.Listshells=new ArrayList();

//地方坦克集合

public static java.util.List->

enemys=new ArrayList();

public static java.util.List bloods=new ArrayList();

//爆炸集合

public.static.java.util.Listexplors=new

java.util.ArrayList();

//敌方坦克数量默认10个

public int enemyCount=5;

//主方法

public static void main(String[] args) {

TankMap tv=new TankMap();

tv.init();

}

public void drawImage(){

}

//地图初始化方法

public void init(){

//初始化地图

this.setSize(MAPWIDTH,MAPHEIGHT);

this.setTitle("TankWar");

this.setVisible(true);

//添加键盘监听器

this.addKeyListener(new DirectionHandler());

//添加穿口关闭监听器

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent arg0){

System.exit(0);

}

});

//初始化我方坦克

t=new Tank(this);

//初始化敌方坦克

for(int i=0;i

{

enemys.add(new EnemyTank(40+30*i,80,Color.YELLOW)); }

//启动绘制线程

new Thread(new PaintThread()).start();

}

//@Override

public void paint(Graphics g)

{

//画地图

Color c=g.getColor();

g.setColor(Color.GREEN);

g.fillRect(0,0,MAPWIDTH,MAPHEIGHT);

g.setColor(Color.RED);

g.drawString("当前炮弹数目:"+shells.size(),20,40);

g.drawString("生命值:",20,60);

g.fillRect(65,55,t.getLife(),5);

g.setColor(c);

//画坦克

t.draw(g);

if(r.nextInt(10)==9 && bloods.size()==0) bloods.add(new Blood());

if(r.nextInt(60)==7 && bloods.size()==1) bloods.remove(0);

for(int i=0;i

EnemyTank et=enemys.get(i);

et.draw(g);

}

//画爆炸

for(int i=0;i

Explor e=explors.get(i);