美文网首页
JAVA飞机大战(一)

JAVA飞机大战(一)

作者: 包佳奇 | 来源:发表于2018-03-02 11:00 被阅读2186次

分析:
飞机大战 首先对这个游戏分析,在屏幕上的物体都是飞行物,我们可以把建一个类,让其他飞行物继承这个类.游戏中应有英雄机(也就是自己控制的飞机)、敌人。而敌人应该分为打死给分的飞机(就是普通飞机),另一种就是打死有奖励的敌人。他们都应该是飞行物的子类,我们也可以为普通飞机和给奖励的敌人设一个接口让他们去实现接口,这样有利于以后的扩展。

一、创建飞行物父类

import java.awt.image.BufferedImage;
/** 飞行物父类 */
public class FlyingObject {

    protected BufferedImage image;//图片
    protected int width;//宽
    protected int height;//高
    protected int x;//x坐标
    protected int y;//y坐标
    
}

二、创建奖励的接口

/** 获取奖励 */
public interface Award {
    public int DOUBLE_FIRE = 0;//火力
    public int LIFE = 1;//命
    
    /** 获取奖励类型(上面的0或1) */
    public int getType();
    
}

三、创建敌人接口

/** 敌人 */
public interface Enemy {

    /** 得分 */
    public int getScore();
    
}

四、创建小蜜蜂类(继承飞行物父类,实现奖励接口)

/** 小蜜蜂: 是飞行物,也是奖励 */
public class Bee extends FlyingObject implements Award {

    private int xSpeed = 1;//x坐标移动速度
    private int ySpeed = 2;//y坐标移动速度
    private int awardType;//奖励的类型(0或1)
    
    /** 重写getType()获取奖励类型 */
    public int getType() {
        return awardType;//返回奖励类型
    }
}

五、创建子弹类(继承飞行物父类)

/** 子弹: 是飞行物 */
public class Bullet extends FlyingObject{

    private int speed = 3;//移动的速度
    
}

六、创建敌机类(继承飞行物父类,实现敌人接口)

/** 敌机: 是飞行物,也是敌人 */
public class Airplane extends FlyingObject implements Enemy {

    private int speed = 3; //移动的速度
    
    /** 重写getScore()得分 */
    public int getScore() {
        return 5;//一个敌机得5分
    }
}

七、创建英雄机类(继承飞行物父类)

import java.awt.image.BufferedImage;
/** 英雄机: 是飞行物 */
public class Hero extends FlyingObject{

    private int doubleFire; //火力值
    private int life; //命
    private BufferedImage[] images = {}; //图片数组
    private int index; //协助图片切换
    
}

八、创建主函数类并添加图片资源

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
/** 主程序类 */
public class ShootGame   {
    public static final int WIDTH = 400;  //窗口宽
    public static final int HEIGHT = 654; //窗口高

    public static BufferedImage background; //背景图
    public static BufferedImage start;      //启动图
    public static BufferedImage pause;      //暂停图
    public static BufferedImage gameover;   //游戏结束图
    public static BufferedImage airplane;   //敌机
    public static BufferedImage bee;        //小蜜蜂
    public static BufferedImage bullet;     //子弹
    public static BufferedImage hero0;      //英雄机0
    public static BufferedImage hero1;      //英雄机1
    static{ //初始化静态图片
        try{
            background = ImageIO.read(ShootGame.class.getResource("background.png"));
            start = ImageIO.read(ShootGame.class.getResource("start.png"));
            pause = ImageIO.read(ShootGame.class.getResource("pause.png"));
            gameover = ImageIO.read(ShootGame.class.getResource("gameover.png"));
            airplane = ImageIO.read(ShootGame.class.getResource("airplane.png"));
            bee = ImageIO.read(ShootGame.class.getResource("bee.png"));
            bullet = ImageIO.read(ShootGame.class.getResource("bullet.png"));
            hero0 = ImageIO.read(ShootGame.class.getResource("hero0.png"));
            hero1 = ImageIO.read(ShootGame.class.getResource("hero1.png"));
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {

        }
}

九、添加构造方法
1.敌机类

import java.util.Random;

public Airplane(){
        image = ShootGame.airplane; //图片
        width = image.getWidth();   //宽
        height = image.getHeight(); //高
        Random rand = new Random(); //随机数对象
        x = rand.nextInt(ShootGame.WIDTH-this.width); //x:0到(窗口宽-敌机宽)之间的随机数
        y = this.height; //y:负的敌机的高
    }

2.小蜜蜂类

import java.util.Random;

/** 构造方法 */
    public Bee(){
        image = ShootGame.bee; //图片
        width = image.getWidth();   //宽
        height = image.getHeight(); //高
        Random rand = new Random(); //随机数对象
        x = rand.nextInt(ShootGame.WIDTH-this.width); //x:0到(窗口宽-蜜蜂宽)之间的随机数
        y = this.height; //y:负的蜜蜂的高
        awardType = rand.nextInt(2); //0到1的随机数 
    }

3.子弹类

/** 构造方法 */
    public  Bullet(int x,int y){
        image = ShootGame.bullet; //图片
        width = image.getWidth();   //宽
        height = image.getHeight(); //高
        this.x = x; //随着英雄机坐标而得到的x
        this.y = y; //随着英雄机坐标而得到的y
    }

4.英雄机类

public Hero(){
        image = ShootGame.hero0; //图片
        width = image.getWidth();   //宽
        height = image.getHeight(); //高
        x = 150; //固定的x坐标
        y = 400; //固定的y坐标
        doubleFire = 0; //默认为0(单倍火力)
        life = 3; //默认为3
        images = new BufferedImage[]{ShootGame.hero0,ShootGame.hero1}; //两张图片
        index = 0; //协助切换(默认为0)
    }

相关文章

  • JAVA飞机大战(一)

    分析:飞机大战 首先对这个游戏分析,在屏幕上的物体都是飞行物,我们可以把建一个类,让其他飞行物继承这个类.游戏中应...

  • Java+swing版飞机大战

    Java小游戏实训——飞机大战 一、实验目的 使用Java+swing实现飞机大战小游戏 二、实验要求 1.掌握J...

  • Java飞机大战

    FlyingObject,作为飞行物的父类,这里的飞行物指的就是敌机,小蜜蜂,子弹,英雄机 敌机类,图片取自Sho...

  • 游戏编写进行时

    经过了将近20天的努力,我编写的飞机大战终于完成了,从对java一点也不懂,到把飞机大战编写完成,里面是java对...

  • JAVA飞机大战(二)

    接着JAVA飞机大战(一)继续写,在之前的文章中,已经创建好了要使用的类、接口、以及主程序,接下来需要把对象显示在...

  • JAVA飞机大战(五)

    接着JAVA飞机大战(四)继续写. 一、在Hero类中英雄机和敌人碰撞的实现1.英雄机与敌人的碰撞检测 2.英雄机...

  • JAVA飞机大战(四)

    接着JAVA飞机大战(三)继续写. 一、实现删除越界的敌人和子弹1.在Flyingobject父类定义抽象方法,检...

  • JAVA飞机大战(三)

    接着JAVA飞机大战(二)继续写,在之前的文章中,已经创建好了窗口,可以显示出来英雄机,以及飞行物的显示.接下来实...

  • Python打飞机(飞机大战)

    敌机和主机 发子弹 连发子弹 飞机大战(加音乐代码) 飞机大战代码: 精灵组 飞机大战敌机 飞机大战背景 上下左右...

  • java游戏制作总结——飞机大战

    用Java制作游戏之前,一定要做到方向明确,思路清晰。首先确定自己需要用到几个类,类里的内容大致是什么,用脑图进行...

网友评论

      本文标题:JAVA飞机大战(一)

      本文链接:https://www.haomeiwen.com/subject/vlboxftx.html