潜艇小游戏(代码)

六个对象:

一. 战舰对象

二.炸弹对象

三.侦察潜艇对象

四.水雷潜艇对象

五.鱼雷潜艇对象

六.水雷对象

介绍:

游戏窗口只有一个,战舰只有一个,潜艇有多个,水雷有多个,炸弹有多个,所以潜艇存储在潜艇数组中、水雷存储在水雷数组中,以及炸弹存储在炸弹数组中,在该游戏中,战舰的移动和炸弹的发射是由键盘控制的,而潜艇的产生和水雷的发射是定时的。另外,三种潜艇是随机生成的,位置是从窗口的左端进入,右端出,但出现的高度也是随机的。

共有属性和行为:
这些角色都会死亡(潜艇与炸弹碰撞时,两者都会死亡;战舰与水雷碰撞时,水雷会死亡),所以设置状态变量用于识别存活和死亡状态,设置方法判断状态。
每个角色都有宽和高,移动速度和xy坐标,并且这些属性需要赋值。
每个角色都会有移动的行为,但每个角色移动的速度、方向都不同。(需要重写)
除了战舰以外的对象都会出现越界现象(因为三种潜艇的越界都是相同的,所以后续只需要水雷、炸弹重写即可)
每个角色都会发生碰撞现象,碰撞之后会死亡。

代码:

战舰相关代码:

/**战舰*/
public  class Battleship extends SeaObject {

    private int life;
    public Battleship(){
        super(66,26,270,124,10);

        life = 5;
    }
    public void move(){
    }
    public  ImageIcon getIamge(){
        return Images.battleship;
    }
    /**发射炸弹------生成炸弹对象*/
    public Bomb shootBomb(){
        return new Bomb(this.x,this.y);//炸弹的初始坐标就是战舰坐标
    }

    /**战舰移动*/
    public void moveLeft(){
        x -= speed;//向左
    }
    public void moveRight(){
        x += speed;//向右
    }
    /**战舰增命*/
    public void addLife(int num){
        life += num;
    }
    /**获取命数*/
    public int getLife(){
        return life;//返回命数
    }
    public void subtractLife(){
        life--;//命数减一
    }

三个潜艇相关代码:

/**水雷潜艇*/
public class MineSubmarine extends SeaObject implements EnemyLife{

    public MineSubmarine(){
        super(63,19);

    }
    /**重写move()移动*/
    public void move(){
        x += speed;//x+(向右)
    }
    public ImageIcon getIamge(){
        return Images.minesubm;
    }
    /**发射水雷-----生成水雷*/
    public Mine shootMine(){
        //水雷的x:水雷潜艇的x+水雷潜艇的width
        //水雷的y:水雷潜艇的y-水雷的高(11)
        return new Mine(this.x+this.width,this.y-11);//this指水雷潜艇对象
    }
    /**重写getLife()得命*/
    public int getLife(){
        return 1;//打掉水雷潜艇,战舰得一条命
    }

}



/**侦察潜艇*/
public class ObserveSubmarine extends SeaObject implements EnemyScore{

    public ObserveSubmarine(){
        super(63,19);

    }
    /**重写move()移动*/
    public void move(){
        x += speed;//x+(向右)
    }
    public ImageIcon getIamge(){
        return Images.obsersubm;
    }
    /**重写getScore()得分*/
    public int getScore(){
        return 10;
    }

}


/**鱼雷潜艇*/
public class TorpedoSubmarine extends SeaObject implements EnemyScore{

    public TorpedoSubmarine() {
        super(64,20);

    }
    /**重写move()移动*/
    public void move(){
        x += speed;//x+(向右)
    }
    public ImageIcon getIamge(){
        return Images.torpesubm;
    }
    /**重写getScore()得分*/
    public int getScore(){
        return 40;
    }
}

水雷和炸弹相关代码:

/**水雷*/
public class Mine extends SeaObject {

    public Mine(int x,int y){
        super(11,11,x,y,1 );

    }
    /**重写move()移动*/
    public void move(){
        y -= speed;//y-(向上)
    }
    public ImageIcon getIamge(){
        return Images.mine;
    }
    /**重写isOutOfBounds()检测水雷是否越界*/
    public boolean isOutOfBounds(){
        return this.y<=150-this.height;//水雷的y<=150-水雷的高,即为越界了
    }

}



/**炸弹*/
public class Bomb  extends SeaObject{

    public Bomb(int x, int y){
        super(9,12,x,y,10);

    }
    /**重写move()移动*/
    public void move(){
        y += speed;//y+(向下)
    }
    public ImageIcon getIamge(){
        return Images.bomb;
    }
    /**重写isOutOfBounds()检测炸弹是否越界*/
    public boolean isOutOfBounds(){
        return this.y>=World.HEIGHT;//炸弹的y>=窗口的高,即为越界了
    }

}

以上是相关的对象(不全),后续持续更新!!!

如有侵权,即时联系删改,谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值