import java.awt.image.BufferedImage; //英雄机 public class Hero extends FlyObject { int doubleFire; int life; int score; BufferedImage images[]; int index=0; public void move() {//用两张英雄机图片切换实现画面上的英雄机的移动 index++; image=images[index/images.length]; } }
Airplane:
FlyObject:代码实现:
根据游戏规则,打掉蜜蜂会有奖励,打掉敌机会得分
Airplane:图片,图片的宽和高,图片位置坐标(x,y),,每次移动y的距离
英雄机开始有三条命,当英雄机与敌机或小蜜蜂碰撞时,命-1。当命<=0时,游戏结束。
开始时界面为:
用自己鼠标控制的英雄机
父类FlyObject(飞行物):图片,图片的宽和高,图片位置坐标(x,y)和行为move(移动),因为move在每个子类中的行为不固定,所以必须写成抽象方法,有抽象方法这个父类必须为抽象类
//蜜蜂类 public class Bee extends FlyObject implements Award{ int awardType;//奖励类型 int xMove=3; int yMove=4; public int getAwardType() { return awardType; } public void move() { x+=xMove; y+=yMove; } }
Bullet:
Bullet:图片,图片的宽和高,图片位置坐标(x,y),每次移动y的距离当鼠标左键点击后游戏开始运行
再来介绍一下游戏的规则。
hero类中存在的属性:图片,图片的宽和高,图片位置坐标(x和y),命,活力值,得分。
子弹和敌机直线飞行,蜜蜂左右飞行
import java.awt.image.BufferedImage; public abstract class FlyObject { //因为是父类,为了让子类可以看见使用protected修饰 protected BufferedImage image; protected int height; protected int witch; protected int x; protected int y; public abstract void move(); }
Enemy:
分别有hero(英雄机类),Airplane(敌机类),Bee(蜜蜂类),Bullet(子弹类) 飞机大战的物体有:开发工具:eclipese 被英雄机打的敌机和蜜蜂
英雄机图片
根据上面抽象出来的四个类的属性,可以明显发现它们的属性有大部分的重叠。那么可以再根据上面的四个类再抽象出一个父类出来
开发环境:jdk1.7
public class Airplane extends FlyObject implements Enemy{ int yMove=4; public int getSCoer() { return SCOER; } public void move() { y+=yMove; } }
Bee:
再抽象出两个接口:Enemy(敌人接口),Award(奖励接口) 英雄机射出来的子弹英雄机射中敌机得40分。射中蜜蜂会有奖励:奖励分为奖励一条命和双倍火力值+40。当英雄机的双倍火力值大于0时,会发射两颗子弹同时火力值-2。
//敌人接口 public interface Enemy { int SCOER=40;//被射中得40分 public int getSCoer(); }
Award:
//奖励接口 public interface Award { int LIFE_AWAED=0; int DOUBLEFIRE_AWARD=1; int getAwardType(); }
hero:
public class Bullet extends FlyObject { int yMove=4; public void move() { y+=yMove; } }根据游戏规则,可以很轻易的总结出四个类。
做了一个飞机大战的小游戏,现在把这个思路总结以及代码分享出来。希望通过几篇博客后能让看到的人都可以实现自己飞机大战的游戏。