小游戏-------------潜艇大战

<--第一天   -->

潜艇游戏----潜艇大战图片

列表

  1. 创建战舰类、侦察潜艇类、鱼雷潜艇类、水雷潜艇类、水雷类、深水炸弹类,设计类中的成员变量和move()方法

  2. 创建World类,在main中:创建1个战舰对象、至少2个侦察潜艇对象、2个鱼雷潜艇对象、2个水雷潜艇对象、2个水雷对象、2个深水炸弹对象,并给属性赋值,调用方法测试

参考

  1. 创建战舰类、侦察潜艇类、鱼雷潜艇类、水雷潜艇类、水雷类、深水炸弹类,设计类中的成员变量和move()方法

    参考代码:

package day01;
//战舰
public class Battleship {
    int width;
    int height;
    int x;
    int y;
    int speed;
    int life;

    void move(){
        System.out.println("战舰移动");
    }
}
package day01;
//侦察潜艇
public class ObserveSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    void move(){
        System.out.println("侦察潜艇x向右移动");
    }
}
package day01;
//鱼雷潜艇
public class TorpedoSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    void move(){
        System.out.println("鱼雷潜艇x向右移动");
    }
}
package day01;
//水雷潜艇
public class MineSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    void move(){
        System.out.println("水雷潜艇x向右移动");
    }
}
package day01;
//水雷
public class Mine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    void move(){
        System.out.println("水雷y向上移动");
    }
}
package day01;
//深水炸弹
public class Bomb {
    int width;
    int height;
    int x;
    int y;
    int speed;
    void move(){
        System.out.println("深水炸弹y向下移动");
    }
}

2.创建World类,在main中:创建1个战舰对象、至少2个侦察潜艇对象、2个鱼雷潜艇对象、2个水雷潜艇对象、2个水雷对象、2个深水炸弹对象,并给属性赋值,调用方法测试

 参考代码:

package day01;
/** 整个游戏世界 */
public class World {
    public static void main(String[] args) {
        Battleship s = new Battleship();
        s.width = 50;
        s.height = 30;
        s.x = 100;
        s.y = 200;
        s.speed = 20;
        s.life = 5;
        System.out.println(s.width+","+s.height+","+s.x+","+s.y+","+s.speed+","+s.life);
        s.move();

        ObserveSubmarine os1 = new ObserveSubmarine();
        os1.width = 30;
        os1.height = 40;
        os1.x = 200;
        os1.y = 400;
        os1.speed = 3;
        System.out.println(os1.width+","+os1.height+","+os1.x+","+os1.y+","+os1.speed);
        os1.move();

        ObserveSubmarine os2 = new ObserveSubmarine();
        os2.width = 30;
        os2.height = 40;
        os2.x = 100;
        os2.y = 450;
        os2.speed = 3;
        System.out.println(os2.width+","+os2.height+","+os2.x+","+os2.y+","+os2.speed);
        os2.move();

        TorpedoSubmarine ts1 = new TorpedoSubmarine();
        TorpedoSubmarine ts2 = new TorpedoSubmarine();
        MineSubmarine ms1 = new MineSubmarine();
        MineSubmarine ms2 = new MineSubmarine();
        Mine m1 = new Mine();
        Mine m2 = new Mine();
        Bomb b1 = new Bomb();
        Bomb b2 = new Bomb();
    }
}

 <--第二天   -->

列表:

  1. 给战舰类、侦察潜艇类、鱼雷潜艇类、水雷潜艇类、水雷类、深水炸弹类添加构造方法

  2. 在main中:创建1个战舰对象、至少4个侦察潜艇对象、2个鱼雷潜艇对象、2个水雷潜艇对象、2个水雷对象、2个深水炸弹对象,测试

参考:

        1.给战舰类、侦察潜艇类、鱼雷潜艇类、水雷潜艇类、水雷类、深水炸弹类,添加构造方法

参考代码:

package day02;
//战舰
public class Battleship {
    int width;
    int height;
    int x;
    int y;
    int speed;
    int life;
    Battleship(){
        width = 66;
        height = 26;
        x = 270;
        y = 124;
        speed = 2;
        life = 5;
    }

    void move(){
        System.out.println("战舰移动");
    }
}

package day02;
import java.util.Random;
//侦察潜艇
public class ObserveSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    ObserveSubmarine(){
        width = 63;
        height = 19;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
    void move(){
        System.out.println("侦察潜艇x向右移动");
    }
}

package day02;
import java.util.Random;
//鱼雷潜艇
public class TorpedoSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    TorpedoSubmarine(){
        width = 64;
        height = 20;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
    void move(){
        System.out.println("鱼雷潜艇x向右移动");
    }
}

package day02;
import java.util.Random;
//水雷潜艇
public class MineSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    MineSubmarine(){
        width = 63;
        height = 19;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
    void move(){
        System.out.println("水雷潜艇x向右移动");
    }
}

package day02;
//水雷
public class Mine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    Mine(int x,int y){
        width = 11;
        height = 11;
        this.x = x;
        this.y = y;
        speed = 1;
    }
    void move(){
        System.out.println("水雷y向上移动");
    }
}

package day02;
//深水炸弹
public class Bomb {
    int width;
    int height;
    int x;
    int y;
    int speed;
    Bomb(int x,int y){
        width = 9;
        height = 12;
        this.x = x;
        this.y = y;
        speed = 3;
    }

    void move(){
        System.out.println("深水炸弹y向下移动");
    }
}

//注:其余类没有变化,此处省略

2.在main中:创建1个战舰对象、至少4个侦察潜艇对象、2个鱼雷潜艇对象、2个水雷潜艇对象、2个水雷对象、2个深水炸弹对象,测试

package day02;
/** 整个游戏世界 */
public class World {
    public static void main(String[] args) {
        Battleship s = new Battleship();
        ObserveSubmarine os1 = new ObserveSubmarine();
        ObserveSubmarine os2 = new ObserveSubmarine();
        ObserveSubmarine os3 = new ObserveSubmarine();
        ObserveSubmarine os4 = new ObserveSubmarine();
        TorpedoSubmarine ts1 = new TorpedoSubmarine();
        TorpedoSubmarine ts2 = new TorpedoSubmarine();
        MineSubmarine ms1 = new MineSubmarine();
        MineSubmarine ms2 = new MineSubmarine();
        Mine m1 = new Mine(123,345);
        Mine m2 = new Mine(345,234);
        Bomb b1 = new Bomb(200,300);
        Bomb b2 = new Bomb(300,400);
        //最少输出4个对象的数据(一定要包括2个侦察潜艇的数据)
        System.out.println(s.width+","+s.height+","+s.x+","+s.y+","+s.speed+","+s.life);
 System.out.println(os1.width+","+os1.height+","+os1.x+","+os1.y+","+os1.speed);
 System.out.println(os2.width+","+os2.height+","+os2.x+","+os2.y+","+os2.speed);
 System.out.println(os3.width+","+os3.height+","+os3.x+","+os3.y+","+os3.speed);
 System.out.println(os4.width+","+os4.height+","+os4.x+","+os4.y+","+os4.speed);

    }
}

//注:其余类没有变化,此处省略

 <--第三天   -->

列表:

  1. 创建侦察艇数组、鱼雷艇数组、水雷艇数组、水雷数组、深水炸弹数组,并填充数据,遍历数组输出坐标并调用move()方法测试

  2. 创建SeaObject超类,设计6个类继承超类

  3. 在SeaObject中设计两个构造方法,一个是为三种潜艇提供的,一个是为战舰、水雷、深水炸弹提供的,6个类分别调用超类的构造方法

  4. 将侦察艇数组、鱼雷艇数组、水雷艇数组统一组合为SeaObject数组,给数组填充数据,遍历数组输出属性并调用move()方法

参考:

  1. 创建侦察艇数组、鱼雷艇数组、水雷艇数组、水雷数组、深水炸弹数组,并填充数据,遍历数组输出坐标并调用move()方法测试

    参考代码:

package day03;
/** 整个游戏世界 */
public class World {
    public static void main(String[] args) {
        ObserveSubmarine[] oses = new ObserveSubmarine[3];
        TorpedoSubmarine[] tses = new TorpedoSubmarine[2];
        MineSubmarine[] mses = new MineSubmarine[3]; //水雷潜艇数组
        mses[0] = new MineSubmarine();
        mses[1] = new MineSubmarine();
        mses[2] = new MineSubmarine();
        for(int i=0;i<mses.length;i++){ //遍历所有水雷潜艇
            System.out.println(mses[i].x+","+mses[i].y); //输出每个水雷潜艇的x和y坐标
            mses[i].move(); //每个水雷潜艇移动
        }

        Mine[] ms = new Mine[2]; //水雷数组
        ms[0] = new Mine(100,200);
        ms[1] = new Mine(200,400);
        for(int i=0;i<ms.length;i++){
            System.out.println(ms[i].x+","+ms[i].y);
            ms[i].move();
        }
        Bomb[] bs = new Bomb[2];

    }
}

//注:其余类没有变化,此处省略

 2.创建SeaObject超类,设计6个类继承超类

参考代码:

package day03;
import java.util.Random;
//海洋对象
public class SeaObject {
    int width;
    int height;
    int x;
    int y;
    int speed;
    void move(){
        System.out.println("海洋对象移动");
    }
}

package day03;
//战舰
public class Battleship extends SeaObject {
    int life;
    Battleship(){
        width = 66;
        height = 26;
        x = 270;
        y = 124;
        speed = 20;
        life = 5;
    }
}

package day03;
import java.util.Random;
//侦察潜艇
public class ObserveSubmarine extends SeaObject {
    ObserveSubmarine(){
        width = 63;
        height = 19;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
}

package day03;
import java.util.Random;
//鱼雷潜艇
public class TorpedoSubmarine extends SeaObject {
    TorpedoSubmarine(){
        width = 64;
        height = 20;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
}

package day03;
import java.util.Random;
//水雷潜艇
public class MineSubmarine extends SeaObject {
    MineSubmarine(){
        width = 63;
        height = 19;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
}

package day03;
//水雷
public class Mine extends SeaObject {
    Mine(int x,int y){
        width = 11;
        height = 11;
        this.x = x;
        this.y = y;
        speed = 1;
    }
}

package day03;
//深水炸弹
public class Bomb extends SeaObject {
    Bomb(int x,int y){
        width = 9;
        height = 12;
        this.x = x;
        this.y = y;
        speed = 3;
    }
}

//注:其余类没有变化,此处省略

3.在SeaObject中设计两个构造方法,一个是为三种潜艇提供的,一个是为战舰、水雷、深水炸弹提供的,6个类分别调用超类的构造方法

参考代码:

package day03;
import java.util.Random;
//海洋对象
public class SeaObject {
    int width;
    int height;
    int x;
    int y;
    int speed;
    /** 专门给三种潜艇提供的 */
    SeaObject(int width,int height){
        this.width = width;
        this.height = height;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
    /** 专门给战舰、水雷、深水炸弹提供的 */
    SeaObject(int width,int height,int x,int y,int speed){
        this.width = width;
        this.height = height;
        this.x = x;
        this.y = y;
        this.speed = speed;
    }

    void move(){
        System.out.println("海洋对象移动");
    }
}

package day03;
//侦察潜艇
public class ObserveSubmarine extends SeaObject {
    ObserveSubmarine(){
        super(63,19);
    }
}

package day03;
//鱼雷潜艇
public class TorpedoSubmarine extends SeaObject {
    TorpedoSubmarine(){
        super(64,20);
    }
}

package day03;
//水雷潜艇
public class MineSubmarine extends SeaObject {
    MineSubmarine(){
        super(63,19);
    }
}

package day03;
//战舰
public class Battleship extends SeaObject {
    int life;
    Battleship(){
        super(66,26,270,124,20);
        life = 5;
    }
}

package day03;
//水雷
public class Mine extends SeaObject {
    Mine(int x,int y){
        super(11,11,x,y,1);
    }
}

package day03;
//深水炸弹
public class Bomb extends SeaObject {
    Bomb(int x,int y){
        super(9,12,x,y,3);
    }
}

//注:其余类没有变化,此处省略

4.将侦察艇数组、鱼雷艇数组、水雷艇数组统一组合为SeaObject数组,给数组填充数据,遍历数组输出属性并调用move()方法

参考代码:

package day04;
//整个游戏世界
public class World {
    public static void main(String[] args) {
        SeaObject[] submarines = new SeaObject[5]; //潜艇(侦察潜艇、鱼雷潜艇、水雷潜艇)
        submarines[0] = new ObserveSubmarine();
        submarines[1] = new ObserveSubmarine();
        submarines[2] = new TorpedoSubmarine();
        submarines[3] = new TorpedoSubmarine();
        submarines[4] = new MineSubmarine();
        for(int i=0;i<submarines.length;i++){
            SeaObject s = submarines[i];
            System.out.println(s.x+","+s.y);
            s.move();
        }

        Battleship s = new Battleship();

        Mine[] mines = new Mine[2];
        mines[0] = new Mine(100,200);
        mines[1] = new Mine(200,400);
        for(int i=0;i<mines.length;i++){
            Mine m = mines[i];
            System.out.println(m.x+","+m.y);
            m.move();
        }

        Bomb[] bombs = new Bomb[2];
        bombs[0] = new Bomb(100,200);
        bombs[1] = new Bomb(200,400);
        for(int i=0;i<bombs.length;i++){
            Bomb b = bombs[i];
            System.out.println(b.x+","+b.y);
            b.move();
        }
    }
}

//注:其余类没有变化,此处省略

<--第四天-->

列表:

  1. 在6个类中重写move()移动方法,实现对象的具体移动,并测试

  2. 给所有类中的成员添加访问控制修饰符

  3. 设计Images图片类,设计战舰图片、侦察潜艇图片、鱼雷潜艇图片、水雷潜艇图片、水雷图片、深水炸弹图片、海洋图片、游戏结束图片,并在静态块中赋值,设计main方法测试图片是否读取成功

参考:

  1. 在6个类中重写move()移动方法,实现对象的具体移动,并测试

    参考代码:

package day04;
//战舰
public class Battleship extends SeaObject {
    int life;
    Battleship(){
        super(66,26,270,124,20);
        life = 5;
    }
    void move(){
        //暂时搁置
    }
}

package day04;
//侦察潜艇
public class ObserveSubmarine extends SeaObject {
    ObserveSubmarine(){
        super(63,19);
    }
    void move(){
        x+=speed;
    }
}

package day04;
//鱼雷潜艇
public class TorpedoSubmarine extends SeaObject {
    TorpedoSubmarine(){
        super(64,20);
    }
    void move(){
        x+=speed;
    }
}

package day04;
//水雷潜艇
public class MineSubmarine extends SeaObject {
    MineSubmarine(){
        super(63,19);
    }
    void move(){
        x+=speed;
    }
}

package day04;
//水雷
public class Mine extends SeaObject {
    Mine(int x,int y){
        super(11,11,x,y,1);
    }
    void move(){
        y-=speed;
    }
}

package day04;
//深水炸弹
public class Bomb extends SeaObject {
    Bomb(int x,int y){
        super(9,12,x,y,3);
    }
    void move(){
        y+=speed;
    }
}

package day04;
/** 整个游戏窗口 */
public class World {
    public static void main(String[] args) {
        SeaObject[] submarines = new SeaObject[5]; //潜艇数组
        submarines[0] = new ObserveSubmarine(); //向上造型
        submarines[1] = new ObserveSubmarine();
        submarines[2] = new TorpedoSubmarine();
        submarines[3] = new TorpedoSubmarine();
        submarines[4] = new MineSubmarine();
        for(int i=0;i<submarines.length;i++){ //遍历所有潜艇
            System.out.println("第"+(i+1)+"个潜艇:");
            SeaObject s = submarines[i]; //获取每一个潜艇
            System.out.println("初始的坐标:"+s.x+","+s.y);
            s.move(); //移动
            System.out.println("移动后坐标:"+s.x+","+s.y); //移动后坐标
        }

        Mine[] mines = new Mine[4];
        mines[0] = new Mine(100,200);
        mines[1] = new Mine(110,120);
        mines[2] = new Mine(130,140);
        mines[3] = new Mine(140,150);
        for(int i=0;i<mines.length;i++){ //遍历所有水雷
            System.out.println("第"+(i+1)+"个水雷:");
            Mine m = mines[i];  //获取每一个水雷
            System.out.println("初始的坐标:"+m.x+","+m.y);
            m.move();
            System.out.println("移动后坐标:"+m.x+","+m.y);
        }

        Bomb[] bombs = new Bomb[2];
        bombs[0] = new Bomb(100,200);
        bombs[1] = new Bomb(200,185);
        for(int i=0;i<bombs.length;i++){
            System.out.println("第"+(i+1)+"个深水炸弹:");
            Bomb b = bombs[i];
            System.out.println("初始的坐标:"+b.x+","+b.y);
            b.move();
            System.out.println("移动后坐标:"+b.x+","+b.y);
        }
    }
}

//注:其余类没有变化,此处省略

 2.给所有类中的成员添加访问控制修饰符

参考代码:

package day05;
import java.util.Random;
//海洋对象
public class SeaObject {
    protected int width;
    protected int height;
    protected int x;
    protected int y;
    protected int speed;
    public SeaObject(int width,int height){
        this.width = width;
        this.height = height;
        x = -width;
        Random rand = new Random();
        y = rand.nextInt(479-height-150+1)+150;
        speed = rand.nextInt(3)+1;
    }
    public SeaObject(int width,int height,int x,int y,int speed){
        this.width = width;
        this.height = height;
        this.x = x;
        this.y = y;
        this.speed = speed;
    }

    public void move(){
        System.out.println("海洋对象移动");
    }
}

package day05;
//战舰
public class Battleship extends SeaObject {
    private int life;
    public Battleship(){
        super(66,26,270,124,20);
        life = 5;
    }
    public void move(){
        //暂时搁置
    }
}

package day05;
//侦察潜艇
public class ObserveSubmarine extends SeaObject {
    public ObserveSubmarine(){
        super(63,19);
    }
    public void move(){
        x+=speed;
    }
}

package day05;
//鱼雷潜艇
public class TorpedoSubmarine extends SeaObject {
    public TorpedoSubmarine(){
        super(64,20);
    }
    public void move(){
        x+=speed;
    }
}

package day05;
//水雷潜艇
public class MineSubmarine extends SeaObject {
    public MineSubmarine(){
        super(63,19);
    }
    public void move(){
        x+=speed;
    }
}

package day05;
//水雷
public class Mine extends SeaObject {
    public Mine(int x,int y){
        super(11,11,x,y,1);
    }
    public void move()
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值