Java飞机大战游戏(需求分析+代码+图片)

shoot射击游戏项目一

1.需求分析:

运行项目,看结果:

A:小敌机,大敌机,蜜蜂,--------敌人

英雄机发射子弹

B:

子弹击中小敌机----玩家得分 1分

子弹击中大敌机----玩家得分 5分

子弹击中小蜜蜂-----玩家得 1生命或者火力值30

C:

英雄机的火力值变为0 的时候,就变成单倍火力

火力值变为0 的时候,变为双倍火力;依此减少2

D:碰撞

敌人与英雄机发发生碰撞,碰撞之后,英雄机的生命值减少,变位0的时候,游戏结束

2.计数分析

设计类:

A:找对象:6个对象

英雄机,小敌机,大敌机,蜜蜂,子弹,天空

B:抽类

Hero/Airplane/BIgAirplane/Bee/Bullet/Sky

C:设计成员变量和方法

shoot射击游戏项目二

1.需求分析:

A:设计一个父类、超类:并且让6个对象继承超类,测试

B:给超累添加构造方法;让六个对像分别调用超类

C: 设置对象数组,进行测试

D:在六各子类,派生类中重写

E:画窗体

2.技术分析:

重写和重载:

重写:(Override)

  • 发生在父子类中,方法名形同,参数列表相同,方法体不同;
  • 遵循“运行期绑定”,看对象的类型来调用方法;

重载:(Overload)

  • 发生在一个类中,方法名相同,参数列表不同,方法体不同:
  • 遵循“编译器绑定”,看参数,引用类型绑定法;

shoot射击游戏项目三

A:给类中添加修饰符

B:给6个派生类中添加图片属性

1):6个类种添加Static

2)在父类中添加静态方法Loadlmage()添加图片

3):六个派生类中static代码块调用Loadlmage()方法

2:技术实现:

修饰符

y/n   	    public	  protected	  default	  private
同一个类  	  y   	      y    	      y   	   y   
同一个包中不同类 y   	  y    	     y   	       
不同包类  	  y   	      y    	       	       
不同胞中的类  y   	         	       	       

Shoot射击游戏四

1.需求分析

A:将窗体大小设置成常量

B:画对象:

想画对象先获取图片,针对每个对象能够获取到图片,

获取到图片的行为事共有的,设计到父类中;

每个对象得到图片的行为是不一样的,设计了抽象的方法----getImage();

在不同状态下,得到不同的图片;

状态:设计到父类中,设计常量:Life DEAD; REMOVE

默认状态:state=LIFE

获取图片的同时,需不需要判断当前的装态???? y

每个对象都需要判断。设计到超类,父类中;

而每个对象判断行为都是不一样的,设计普通方法即可;

-----FlyObject:isLife()/isDead()/isRemove()

C:在6个子类中重写getImage()方法

  • Sky:直接返回即可
  • 子弹Bullet:如果是存活的返回images即可
    如果是over的删除即可
  • 英雄机:如果是存活,返回imgaes[0]/images[1]
  • 小敌机:如多存活,返回images[0]
    如果over,images[1]—images[4]进行切换,切换完毕,到了images[4]后进行删除

D:得到不同状态下的图片,进行开始画出来;

画对象的行为是共有的,所以涉及到超类中;

每个对象画的方式都是一样的,所以设计为【普通方法】

E:测试,调用即可

设计规则:

  • 将所有子类所共有的行为和属性,可以设计到超累中;抽共性
  • 所有子类的行为都是一样的,设计为普通方法;所有子类的行为都是不一样的—设计成抽象方法

Shoot射击游戏五

1.需求分析

A:敌人入场

  • 产生敌人:在ShootMain类中nextOne()

  • 需要定时加载敌人----enterAction()实现敌人入场;

  • 每400毫秒,获取到敌人,扩容,将敌人添加到数组最后一位

  • 英雄机中发射子弹,hero类设计有一个方法来实现子弹的发射----shoot()

  • run()方法中,子弹发射shootAction()

  • 每400毫秒。获取到子弹数组,扩容,将子弹数组添加到

C:飞行物移动

D:英雄机随鼠标移动

  • 在hero()中设计方法:moveto()实现英雄机的移动
  • 在ShootMain中建立监听机制,检测鼠标移动

E:删除越界飞行物

  • 在Flyobject中设计一个方法outOfBounds()—检测是否越界
  • 在run()方法中,写一个方法outOfBountAction()删除飞行物越界
  • 遍历敌人,子弹数组,如果对象不越界,那么将存放到不越界的数组中,将不越界的数组复制到敌人,子弹数组

F:设计接口

  • 击中小敌机+大敌机-----得1 分 或者3分
  • 击中蜜蜂----随机得生命或者活力值

Shoot射击游戏六

子弹与敌人碰撞:

  • 设计到父类中,hit()方法,实现检测子弹与敌人大声碰撞
  • 在父类中设计一个goDead()实现飞行物over
  • 在Hero类种设计实现addLife(),addDoubleFire()
  • 通过AirPlane和BigAirplane中的接口来实现玩家得分
  • 通过Bee中的接口来实现玩家获得奖励

代码实现

子弹:

package cn.tedu.shoot;

import java.awt.image.BufferedImage;

/**
 * 子弹
 * @author Administrator
 *
 */
public class Bullet extends FlyingObject{

	private static BufferedImage images;
	//静态代码块
	static {
		images = loadImage("bullet.png");
	}
	
	private int speed;//速度
	/**构造方法*/
	public Bullet(int x, int y){
		super(8, 14, x, y);
		speed = 2;
	}
	/**子弹的移动*/
	public void step(){
		this.y
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值