Java课设_E20914123_E20914038

  • 格式:doc
  • 大小:239.07 KB
  • 文档页数:9

计算机科学与技术学院 软件工程

Java技术及其应用课程设计

常维军 E20914123 袁春晖 E20914038

题目:急速生存 1,选题依据 喜欢玩一些小游戏,由于专业的关系,不知不觉就想探究一下,这些游戏的原理是什么。随着专业课学习的深入,逐渐的理解了这些原理,计划理论结合实际,做一款小游戏。

2,详细设计 J2SE的Graphics2D功能可以满足一些小型游戏的需求。Java拥有自己的图形库,支持多线程等较多的工具包,可以实现一些简单的人工智能和游戏物体的碰撞检测。 2.1设计分析 游戏拥有一个主窗体,承载所有图形元素,运用观察者的设计模式,其他图形元素均具有该主窗体类(以下称为管理者)的引用。 所有图形元素都具有自己的类,成员变量和成员方法,与主类分开设计。此设计目的在于便于后期维护和修改。 游戏中敌机的AI由java.util.Random类实现。 游戏物体的碰撞检测可以用java.util.Rectangle实现。 游戏中物体的移动由线程控制,执行repaint()方法实现。 游戏重写了update()方法,利用双缓冲解决游戏物体闪烁的现象。 游戏后期为图形元素替换图片,可以用java中反射机制实现。

2.2界面设计 HEIGHT 2.3编码设计

WIDTH 游戏区域

敌方出现区域 游戏信息显示区域

RapidSurvialMananger:游戏管理者类 PaintThread:负责重画内部线程类 Fighter:战机类

BloodBar:血条类 Bomb:炮弹类

Explode:爆炸类 SuperLine:大决类 SuperStar:超星类 public static final int MAINWIDTH = 1200; //主窗口的宽度 public static final int MAINHEIGHT = 600; //主窗口的高度 public static final int MAINXPOINT = 30; //主窗口初始化x点的位置 public static final int MAINYPOINT = 50; //主窗口初始化y点的位置 public static Random r= new Random(); //添加随机数产生器,用于控制敌方的AI Image bufferImage = null; //双缓冲的缓冲图像,用双缓冲取消屏幕闪烁 public static void main(String[] args); //主线程入口 public void paint(Graphics g); //重写paint()方法 public void launchGameFrame(); //统一的主界面的调用函数 public void update(Graphics g); //重写update()方法,实现双缓冲取消图像闪烁的情况 public String showTime(); //显示时间

Class RapidSurvialManager

public static final int FWIDTH = 70; //战机宽度 public static final int FHEIGHT = 10;//战机高度 public static final int FXSPEED = 4; //战机在x方向上的速度 public static final int FYSPEED = 4; //战机在y方向上的速度 int x; //战机在x方向上的位置 int y; //战机在y方向上的位置 int w; //战机的宽度 int h; //战机的高度 Direction dir; //方向 RapidSurvialManager rsm; //持有RapidSurvialManager的引用 private boolean isUp = false; //键盘↑ 是否被按下,初始化为false private boolean isDown = false; //键盘↓ 是否被按下,初始化为false private boolean isRight = false; //键盘→ 是否被按下,初始化为false private boolean isLeft = false; //键盘← 是否被按下,初始化为false enum Direction {LTR, RTL}; //两个方向,LTR:从左向右,RTL:从右向左 boolean isEnemy; //区分敌我的量,是敌人:true,否则为false boolean isLive = true; //判读是否存活,活着:true,否则为false private int lifeValue = 10; //我方战机的生命值 int speed; //产生一个速度值 BloodBar bb = new BloodBar(); //可视的血量 static int isRelive = 0; //是否复活 private int superStarCounts = 1; //初始大决数

Class Fighter Fighter(int x , int y,boolean isEnemy); //构造函数 Fighter(int x, int y, boolean isEnemy, RapidSurvialManager rsm);//构造函数 public void setLifeValue(int lifeValue); //设置lifeValue值 public int getLifeValue(); //得到lifeValue值 public void setSuperStarCounts(int superStarCounts) ; //设置superStarCounts值 public int getSuperStarCounts(); //得到superStarCounts值 public void draw(Graphics g); //用此方画出战机 public void go(); //让敌军动起来的方法 public void keyPressed(KeyEvent e); //对按键被按下经行处理 public void keyReleased(KeyEvent e); //对按键被释放经行处理 private void setPostion(); //根据按键的组合确定下一次的位置 public Bomb fire(); //战机的开火处理 public SuperLine superFire(); //放大决的方法 public Rectangle getRect(); //得到自己的大小,用于碰撞检测 public boolean eat(SuperStar ss); //吃SuperStar的方法

Class Fighter(续)

public static final int BWIDTH = 20; //炸弹宽度 public static final int BHEIGHT = 5; //炸弹高度 public static final int BXSPEED = 10; //炸弹x方向上的速度 public static final int BYSPEED = 10; //炸弹y方向上的速度 int x; //炸弹的左上角 x点的位置 int y; //炸弹的左上角 y点的位置 int w; //炸弹的宽度 int h; //炸弹的高度 RapidSurvialManager rsm; //持有RapidSurvialManager的引用 Fighter.Direction dir; //炸弹的方向 boolean isLive = true; //是否有效 boolean isEnemy; //区分敌我的量 public static int sid = 0; //记录战果 public Bomb(int x, int y); //构造方法 public Bomb(int x, int y, RapidSurvialManager rsm); //构造方法 public void draw(Graphics g); //画出自己的方法 private void setPostion() ; //根据方向计算下一重画的位置 public Rectangle getRect(); //返回自己的大小 public boolean hitBomb(Bomb b); //此方法用于与敌机一个子弹的碰撞检测 public boolean hitBombs(List bombs); //此方法用于与敌机一群子弹的碰撞检测 public boolean hitFighter(Fighter f); //此方法用于与一个战机的碰撞检测 public boolean hitFighters(List enemys)//此方法用于与一群战机的碰撞检测

Class Bomb public static final int SSWIDTH = 20; //超星的宽度 public static final int SSHEIGHT = 20; //超星的高度 int x; //超星初始化x点坐标 int y; //超星初始化y点坐标 int w; //超星的宽度 int h; //超星的高度 int speed; //超星的移动速度 boolean isLive = true; //是否有效,是:true,否:false RapidSurvialManager rsm; //持有RapidSurvialManager的引用 Fighter.Direction dir; //方向 public void draw(Graphics g); //画方法 public void go(); //移动自己的方法 public Rectangle getRect(); //得到自己的大小

Class SuperStar

int x; //产生爆炸的x点坐标 int y; //产生爆炸的y点坐标 RapidSurvialManager rsm; //持有RapidSurvialManager的引用 boolean isLive = true; //是否有效,是:true,否:false int [] diameter = {4, 7, 12, 23, 34, 12, 6}; //模拟爆炸产生的半径 int step = 0; //爆炸的步数 public Explode(int x, int y, RapidSurvialManager rsm); //构造函数 public void draw(Graphics g); //画出自己的方法