Tank游戏详细设计说明

软件详细设计说明

本游戏主要用上的类包括:游戏窗口类(GameFrame )、游戏入口类(Runner )、Tank 类(坦克抽象类)、玩家坦克类(PlayerTank )、敌人坦克类(EnemyTank )。子弹类(Missile )、Direction (方向枚举类)、Explode (爆炸类)、Obstacle (障碍物抽象类)、Wood (木头类)、Stone (石头类)、TankTool(道具抽象类) 、Crystal (水晶类)、Crown(皇冠类) 。

类间关系:

PlayerTank 、EnemyTank 继承Tank 类

Wood 、Stone 继承 Obstacle 类

Crystal 、Crown 继承TankTool 类

类的详细设计:

Tank (坦克类) 抽象类

属性:

int x,y; //所在参考坐标

int oldX,oldY; //上一次的所在坐标

public static final int WIDTH =50; //默认宽度

public static final int HEIGHT =50;//默认高度

int width=WIDTH ;// 坦克图像的长和宽

int height=HEIGHT ;

int xSpeed = 10; //坦克每次水平运动的像素(速度)

int ySpeed = 10; //坦克每次垂直运动的像素(速度)

Direction dir=Direction.D ; //方向

Direction ptDir=Direction.D ; //炮筒方向

boolean bL,bU,bR,bD; //记录对应方向按钮是否按下, 缓冲键盘 按键录入信号不均匀 boolean live = true ; //是否活着

int life =100; //坦克生命值

GameFrame gf; //游戏类引用,持有本游戏对象

int team ; //所属队伍编号,0为玩家,1为敌方(2以上可以扩展为其他队伍)

抽象方法:

public abstract void draw(Graphics g); //画坦克

public abstract void move(); //移动坦克

public abstract void fire(); //开炮

public abstract void beHit(); //被击中

一般方法:

//与其他坦克相碰撞

public void collidesOtherTank(List tanks)

//获得坦克碰撞类

public Rectangle getRect()

PlayerTank (玩家坦克类,继承了Tank)

属性:

private int jump = 0; //记录坦克行走时,出现动态效果

private boolean isJump = false ; //记录当前是否跳起(解决跳动不太自然的现象)

private int jumpFrequency =6 ;//跳的频率

方法:

public void draw(Graphics g)

//移动

public void move()

//根据键盘按键,坦克作出准备移动的反应 public void keyPress(KeyEvent e) //根据按键,产生下次移动的方向 void locateDirection() public void keyReleased(KeyEvent e)

//发炮

public void fire()

//被打中 public void beHit()

EnemyTank (继承Tank )

属性:

private static Random r = new Random();//随机数产生器

private int step = r .nextInt(3)+3;//随机移动步数

方法:

public void draw(Graphics g) //画坦克方法

public void move()//坦克移动方法

public void moveRandom()//随机移动

public void moveTrace()//追踪玩家坦克移动 1.91 或者远离玩家,选择逃跑 void locateDirection()//根据所按的方向键,改变方向值

public void fire()/开炮方法

public void beHit()//被打中

Obstacle 类 (抽象类、所有障碍物的父类)

属性:

int x,y; //障碍物的参考坐标

int width,height;//障碍物的 长宽

boolean live=true ; // 障碍物是否活着

方法:

public abstract void draw(Graphics g); //画出自己

public abstract void beCollidesByTank(Tank tank); //被一台坦克碰撞 public void beCollidesByTanks(List tanks) //被一系列坦克碰撞 /被一系列子弹碰撞

public abstract void beCollidesByMissile(List missiles); public Rectangle getRect(){//取得碰撞类

石头类(继承障碍物)

属性:

public static Image image //展示的图片

public Rectangle getRect()//取得碰撞类

方法:

public void draw(Graphics g)

public void beCollidesByMissile(List missiles)//被一系列子弹打中

public void beCollidesByTank(Tank tank) //被碰中

public void beBreak()//石头被破坏

木头类(继承障碍物)

属性:

boolean live //木头是有生命的

public Image //展示图片

方法:

public Rectangle getRect()//取得碰撞类 public void draw(Graphics g) public void beCollidesByMissile(List missiles) //被子弹击中 public void beCollidesByTank(Tank tank) //被坦克碰上 public void beBreak(){//被破坏掉,产生爆炸

TankTool (抽象类,所有游戏道具的父类)

属性:

int x,y ;//道具所在的坐标

int width,height; //道具的长宽

boolean live = true ;

GameFrame gf;

方法:

public TankTool(int x,int y,GameFrame gf)

public TankTool(int x, int y, int width,int height,GameFrame gf)

abstract public void draw(Graphics g); //画出道具方法

abstract public void eatByTank(PlayerTank tank); //被玩家坦克吃掉的方法 public Rectangle getRect()

abstract public void eatByTank(PlayerTank tank); //被玩家坦克吃掉的方法 public Rectangle getRect()

Crystal(水晶类,继承游戏道具)

属性:

public static Image [] liveCrystal //展示的图片数组

方法:

public void draw(Graphics g) { public void eatByTank(PlayerTank tank) { //被玩家吃掉

Crown (王冠类、继承游戏道具)

属性:

public static Image[] liveCrystal //展示图片数组

方法:

public void draw(Graphics g)

public void eatByTank(PlayerTank tank) //被玩家吃掉

内部

private class GoldTimer implements Runnable//状态持续时间,计时器

Direction 方向枚举类

public enum Direction {

U , D , L , R , STOP ;

}

Explode(爆炸类)

属性:

private int x, y;// 爆炸出现的位置

private int step;// 爆炸的步骤

private boolean disappera = false ; // 记录爆炸是否消失

private int [] birdth = { 5, 10, 30, 50, 55, 30, 10, 5 }; // 敌人出生时的背景

private int type = 0; // 爆炸 类型: 0->大爆炸, 1->小爆炸 2->敌人出生时候的动画 1.3 type=3 石头爆炸 type=4 木头爆炸

public Image[] curExplode

public Image[] explodeImages

public Image[] explodeStone

public Image[] explodeWood

方法:

public void draw(Graphics g) // 画爆炸方法

Missile (子弹类)

属性:

private int x, y; Direction dir; public int xSpeed = 18; public int ySpeed = 18; public int width = 8; public int height = 8; GameFrame gf; private boolean live = true ; private int team;

方法:

public Missile(Tank tank) //构造方法

public void draw(Graphics g) {// 画出子弹 本身

private void move()//子弹移动

public Rectangle getRect()//返回子弹碰撞类

public boolean hitTank(Tank t) //击中一个敌人

public void hitTanks(List tanks) //打中多个敌人

public void hitMissile(Missile m ) //打中一个子弹

public void hitMissiles(List missiles) //打中多个子弹 public void beHit(){//被打中

Runner(游戏运行入口类)

public static void main(String[] args) {

}

GameFrame gf = new GameFrame(); gf.startToPlay();

GrameFrame (游戏窗口类)

属性:

int GAME_WIDTH; // 游戏窗口宽度

int GAME_HEIGHT; // 游戏窗口高度

int GAME_LOC_X; //游戏窗口水平坐标

int GAME_LOC_Y ; //游戏窗口纵坐标

int GAME_BACKGROUND;// 游戏背景粒度

boolean canFire; // 标记玩家坦克在当前瞬间是否能发炮

long fireFrequency; // 每隔 1000 毫秒才能发射子弹

boolean start; // 表示游戏是否进行

boolean pause; //标识是否暂停游戏

boolean canBoss; // 0.92 标记玩家坦克当前是否能 释放Boss 技能

long bossFrequency; // 0.92 每隔 bossFrequency 毫秒才能释放 Boss技能 long curBossTime; // 0.92 用于累计boss 键时间量 当累积到bossFrequency 时,可以发动boss 键技能

int numOfWar; // 游戏关卡数

int numOfStone; // 游戏的石头数目

int numOfWood; // 游戏的木头数目

int numOfEnemy;// 本关敌人总数量

int numOfCurrentEnemy;// 每个时刻只能出现的敌人数

int intelligence; // 1.21智能系数,值越高,敌人坦克越智能

int score = 0; // 1.4 游戏累计积分

int eacheScore = 170; // 1.4每个敌人所值分数

PlayerTank playerTank // 玩家坦克

List missiles;// 子弹容器

List enemyTanks;// 敌方坦克 容器

List explodes;// 爆炸对象的容器

List obstacles;// 障碍物的容器

List tools;// 道具的容器

内部类:

// 刷新游戏界面的线程类

private class PaintThread implements Runnable

// 监听游戏按钮的类

private class GameControl extends KeyAdapter

// 发动Boss 键的线程

private class BossThread implements Runnable

// 监听子弹发射速度的线程类

private class FireControlThread implements Runnable

// 监听boss 键冷却时间的线程, 1.81

private class BossControlThread implements Runnable

// 负责创建敌人的线程

private class CreateEnemyThread implements Runnable

// 1.4控制通关,或者重置游戏的线程

private class ClearThread implements Runnable

方法:

// 重新游戏释放资源

public void reStart()

// 通关

public void passGame()

// 开始游戏

public void startToPlay() //重写paint

public void paint(Graphics g) // 重写update 方法

public void update(Graphics g)

软件详细设计说明

本游戏主要用上的类包括:游戏窗口类(GameFrame )、游戏入口类(Runner )、Tank 类(坦克抽象类)、玩家坦克类(PlayerTank )、敌人坦克类(EnemyTank )。子弹类(Missile )、Direction (方向枚举类)、Explode (爆炸类)、Obstacle (障碍物抽象类)、Wood (木头类)、Stone (石头类)、TankTool(道具抽象类) 、Crystal (水晶类)、Crown(皇冠类) 。

类间关系:

PlayerTank 、EnemyTank 继承Tank 类

Wood 、Stone 继承 Obstacle 类

Crystal 、Crown 继承TankTool 类

类的详细设计:

Tank (坦克类) 抽象类

属性:

int x,y; //所在参考坐标

int oldX,oldY; //上一次的所在坐标

public static final int WIDTH =50; //默认宽度

public static final int HEIGHT =50;//默认高度

int width=WIDTH ;// 坦克图像的长和宽

int height=HEIGHT ;

int xSpeed = 10; //坦克每次水平运动的像素(速度)

int ySpeed = 10; //坦克每次垂直运动的像素(速度)

Direction dir=Direction.D ; //方向

Direction ptDir=Direction.D ; //炮筒方向

boolean bL,bU,bR,bD; //记录对应方向按钮是否按下, 缓冲键盘 按键录入信号不均匀 boolean live = true ; //是否活着

int life =100; //坦克生命值

GameFrame gf; //游戏类引用,持有本游戏对象

int team ; //所属队伍编号,0为玩家,1为敌方(2以上可以扩展为其他队伍)

抽象方法:

public abstract void draw(Graphics g); //画坦克

public abstract void move(); //移动坦克

public abstract void fire(); //开炮

public abstract void beHit(); //被击中

一般方法:

//与其他坦克相碰撞

public void collidesOtherTank(List tanks)

//获得坦克碰撞类

public Rectangle getRect()

PlayerTank (玩家坦克类,继承了Tank)

属性:

private int jump = 0; //记录坦克行走时,出现动态效果

private boolean isJump = false ; //记录当前是否跳起(解决跳动不太自然的现象)

private int jumpFrequency =6 ;//跳的频率

方法:

public void draw(Graphics g)

//移动

public void move()

//根据键盘按键,坦克作出准备移动的反应 public void keyPress(KeyEvent e) //根据按键,产生下次移动的方向 void locateDirection() public void keyReleased(KeyEvent e)

//发炮

public void fire()

//被打中 public void beHit()

EnemyTank (继承Tank )

属性:

private static Random r = new Random();//随机数产生器

private int step = r .nextInt(3)+3;//随机移动步数

方法:

public void draw(Graphics g) //画坦克方法

public void move()//坦克移动方法

public void moveRandom()//随机移动

public void moveTrace()//追踪玩家坦克移动 1.91 或者远离玩家,选择逃跑 void locateDirection()//根据所按的方向键,改变方向值

public void fire()/开炮方法

public void beHit()//被打中

Obstacle 类 (抽象类、所有障碍物的父类)

属性:

int x,y; //障碍物的参考坐标

int width,height;//障碍物的 长宽

boolean live=true ; // 障碍物是否活着

方法:

public abstract void draw(Graphics g); //画出自己

public abstract void beCollidesByTank(Tank tank); //被一台坦克碰撞 public void beCollidesByTanks(List tanks) //被一系列坦克碰撞 /被一系列子弹碰撞

public abstract void beCollidesByMissile(List missiles); public Rectangle getRect(){//取得碰撞类

石头类(继承障碍物)

属性:

public static Image image //展示的图片

public Rectangle getRect()//取得碰撞类

方法:

public void draw(Graphics g)

public void beCollidesByMissile(List missiles)//被一系列子弹打中

public void beCollidesByTank(Tank tank) //被碰中

public void beBreak()//石头被破坏

木头类(继承障碍物)

属性:

boolean live //木头是有生命的

public Image //展示图片

方法:

public Rectangle getRect()//取得碰撞类 public void draw(Graphics g) public void beCollidesByMissile(List missiles) //被子弹击中 public void beCollidesByTank(Tank tank) //被坦克碰上 public void beBreak(){//被破坏掉,产生爆炸

TankTool (抽象类,所有游戏道具的父类)

属性:

int x,y ;//道具所在的坐标

int width,height; //道具的长宽

boolean live = true ;

GameFrame gf;

方法:

public TankTool(int x,int y,GameFrame gf)

public TankTool(int x, int y, int width,int height,GameFrame gf)

abstract public void draw(Graphics g); //画出道具方法

abstract public void eatByTank(PlayerTank tank); //被玩家坦克吃掉的方法 public Rectangle getRect()

abstract public void eatByTank(PlayerTank tank); //被玩家坦克吃掉的方法 public Rectangle getRect()

Crystal(水晶类,继承游戏道具)

属性:

public static Image [] liveCrystal //展示的图片数组

方法:

public void draw(Graphics g) { public void eatByTank(PlayerTank tank) { //被玩家吃掉

Crown (王冠类、继承游戏道具)

属性:

public static Image[] liveCrystal //展示图片数组

方法:

public void draw(Graphics g)

public void eatByTank(PlayerTank tank) //被玩家吃掉

内部

private class GoldTimer implements Runnable//状态持续时间,计时器

Direction 方向枚举类

public enum Direction {

U , D , L , R , STOP ;

}

Explode(爆炸类)

属性:

private int x, y;// 爆炸出现的位置

private int step;// 爆炸的步骤

private boolean disappera = false ; // 记录爆炸是否消失

private int [] birdth = { 5, 10, 30, 50, 55, 30, 10, 5 }; // 敌人出生时的背景

private int type = 0; // 爆炸 类型: 0->大爆炸, 1->小爆炸 2->敌人出生时候的动画 1.3 type=3 石头爆炸 type=4 木头爆炸

public Image[] curExplode

public Image[] explodeImages

public Image[] explodeStone

public Image[] explodeWood

方法:

public void draw(Graphics g) // 画爆炸方法

Missile (子弹类)

属性:

private int x, y; Direction dir; public int xSpeed = 18; public int ySpeed = 18; public int width = 8; public int height = 8; GameFrame gf; private boolean live = true ; private int team;

方法:

public Missile(Tank tank) //构造方法

public void draw(Graphics g) {// 画出子弹 本身

private void move()//子弹移动

public Rectangle getRect()//返回子弹碰撞类

public boolean hitTank(Tank t) //击中一个敌人

public void hitTanks(List tanks) //打中多个敌人

public void hitMissile(Missile m ) //打中一个子弹

public void hitMissiles(List missiles) //打中多个子弹 public void beHit(){//被打中

Runner(游戏运行入口类)

public static void main(String[] args) {

}

GameFrame gf = new GameFrame(); gf.startToPlay();

GrameFrame (游戏窗口类)

属性:

int GAME_WIDTH; // 游戏窗口宽度

int GAME_HEIGHT; // 游戏窗口高度

int GAME_LOC_X; //游戏窗口水平坐标

int GAME_LOC_Y ; //游戏窗口纵坐标

int GAME_BACKGROUND;// 游戏背景粒度

boolean canFire; // 标记玩家坦克在当前瞬间是否能发炮

long fireFrequency; // 每隔 1000 毫秒才能发射子弹

boolean start; // 表示游戏是否进行

boolean pause; //标识是否暂停游戏

boolean canBoss; // 0.92 标记玩家坦克当前是否能 释放Boss 技能

long bossFrequency; // 0.92 每隔 bossFrequency 毫秒才能释放 Boss技能 long curBossTime; // 0.92 用于累计boss 键时间量 当累积到bossFrequency 时,可以发动boss 键技能

int numOfWar; // 游戏关卡数

int numOfStone; // 游戏的石头数目

int numOfWood; // 游戏的木头数目

int numOfEnemy;// 本关敌人总数量

int numOfCurrentEnemy;// 每个时刻只能出现的敌人数

int intelligence; // 1.21智能系数,值越高,敌人坦克越智能

int score = 0; // 1.4 游戏累计积分

int eacheScore = 170; // 1.4每个敌人所值分数

PlayerTank playerTank // 玩家坦克

List missiles;// 子弹容器

List enemyTanks;// 敌方坦克 容器

List explodes;// 爆炸对象的容器

List obstacles;// 障碍物的容器

List tools;// 道具的容器

内部类:

// 刷新游戏界面的线程类

private class PaintThread implements Runnable

// 监听游戏按钮的类

private class GameControl extends KeyAdapter

// 发动Boss 键的线程

private class BossThread implements Runnable

// 监听子弹发射速度的线程类

private class FireControlThread implements Runnable

// 监听boss 键冷却时间的线程, 1.81

private class BossControlThread implements Runnable

// 负责创建敌人的线程

private class CreateEnemyThread implements Runnable

// 1.4控制通关,或者重置游戏的线程

private class ClearThread implements Runnable

方法:

// 重新游戏释放资源

public void reStart()

// 通关

public void passGame()

// 开始游戏

public void startToPlay() //重写paint

public void paint(Graphics g) // 重写update 方法

public void update(Graphics g)


相关文章

  • 苏利民论文
  • 坦克大战 班级:41361 学号:[1**********]9 姓名:苏利民 摘要 本论文第一章是介绍国内外游戏发展状况,第二章介绍一些游戏编程技术的原理,第三 章是坦克大战的总体设计,对游戏有一个 总体设计,第四章介绍了自己的设计,游戏具 ...查看


  • 船舶轮机英语单词总结
  • 船舶轮机英语单词总结 A layer of lubricant 润滑层 abrasive 有磨蚀的 accommodation 住舱 accommodation ladder 舷梯 accommodation 居住舱室 Accomplish ...查看


  • 欧美游戏常用英文缩写的汉语翻译 1
  • Meets noye 缩写 英文全文 中文解释 LFG Looking For Group 寻找队伍 GLF Group Looking For 队伍找寻(队员) CYA See You again 再见 TY Thank You 谢谢你 ...查看


  • 化工专业英文词汇大全
  • 化学专业课程中英文对照 普通化学 General Chemistry 分析化学 Analytical Chemistry 有机化学 Organic Chemistry 物理化学 Physical Chemistry 谱学导论 Introdu ...查看


  • 油类记录簿注意事项
  • 远洋货船在填写油类记录簿时存在的问题 1.很多船舶的‚油类记录簿‛填写时存在揩.擦.涂.改现象 ‚油类记录簿‛是船上的法定文本之一,必须严格.认真.正确.及时地记录,不得揩.擦.涂.改,用涂改液也不行.有记错或漏写,应将错误字句划一横线删去 ...查看


  • 生死四人组2秘籍在游戏的主菜单选项里启用控制台
  • 生死四人组2秘籍在游戏的主菜单选项里启用控制台(进入选项→鼠标/键盘→允许使用开发者控制台→选"已启用"),然后按"tab"键上面的"`"键启动控制台,在里面依次输入: sv_ch ...查看


  • 毕业设计小论文
  • 三容系统智能数字滤波器设计 电气工程学院电子信息科学与技术专业:何强 指导老师:张虹 摘要:多容器流程系统是过程控制中的一种典型的被控对象,生产实践中有着广阔的应用背景.在检测的过程中,由于工况复杂,很容易产生测量噪声,从而使基于系统状态常 ...查看


  • 美国百来福家用电热水器安装使用说明书
  • 国百来福家用电热水器安装使用说明书 本热水器必须按照当地有关规定和本安装说明书进行安装,否则保质期无效.由于没有遵守本<安装使用说明书>所造成的损失,制造商不承担任何责任.在开始安装使用前,请务必阅读本<安装使用说明书&g ...查看


  • 化工设备设计计算过程中应注意的问题_邵拥军
  • 化工设备设计计算过程中应注意的问题 邵拥军*逯凯霄 天津市普莱特科技发展有限公司华北制药集团爱诺有限公司 河北工业大学化工学院 天津300384 石家庄052165天津300130 张文林 摘要关键词 总结应用SW6-1998软件进行设备计 ...查看


热门内容