项目-坦克大战-设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.List
//地方坦克集合
public static java.util.List
enemys=new ArrayList
public static java.util.List
//爆炸集合
public.static.java.util.List
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);