JAVA小项目潜艇大战

一、第一天

1、创建战舰、侦察潜艇、鱼雷潜艇、水雷潜艇、水雷、深水炸弹类

完整代码:

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类并测试

完整代码:

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();
        Torpedo t1 = new Torpedo();
        Torpedo t2 = new Torpedo();
        Mine m1 = new Mine();
        Mine m2 = new Mine();
        Bomb b1 = new Bomb();
        Bomb b2 = new Bomb();
    }
}

二、第二天

给6个类添加构造方法,并测试

完整代码:

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)+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)+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)+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向下移动");
    }
}

package day02;
/** 整个游戏世界 */
public class World {
   
    public static void main(String[] args) {
   
        Battleship s = new Battleship();
        ObserveSubmarine os1 = new ObserveSubmarine();
        ObserveSubmarine os2 = 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);

        Bomb[] bs = new Bomb[3]; //创建Bomb数组对象
        bs[0] = new Bomb(100,200); //创建Bomb对象
        bs[1] = new Bomb(123,345);
        bs[2] = new Bomb(200,300);
        bs[0].x = 111; //给第1个炸弹的x修改为111
        System.out.println(bs[1].width); //输出第2个炸弹的宽
        bs[2].move(); //第3个炸弹移动
    }
}

三、第三天

1、创建侦察艇数组、鱼雷艇数组、水雷艇数组、水雷数组、深水炸弹数组,并测试

完整代码:

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(); //每个水雷潜艇移动
        }

        Torpedo[] ts = new Torpedo[2]; //鱼雷数组
        ts[0] = new Torpedo(100,200);
        ts[1] = new Torpedo(200,400);
        for(int i=0;i<ts.length;i++){
   
            System.out.println(ts[i].x+","+ts[i].y);
            ts[i].move();
        }
        Mine[] ms = new Mine[3];
        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)+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)+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)+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)+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数组,并测试

package day03;
//整个游戏世界
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(submarines[i].x+","+submarines[i].y);
            submarines[i].move();
        }

        Battleship s = new Battleship();

        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];
        bs[0] = new Bomb(100,200);
        bs[1] = new Bomb(200,400);
        for(int i=0;i<bs.length;i++){
   
            System.out.println(bs[i].x+","+bs[i].y);
            bs[i].move();
        }
    }
}

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

四、第四天

1、重写超类的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;
    }
}

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

2、给类中成员添加访问控制修饰符

完整代码:

package day04;
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)+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 day04;
//战舰
public class Battleship extends SeaObject {
   
    private int life;
    public Battleship(){
   
        super(66,26,270,124,20);
        life = 5;
    }
    public void move(){
   
        //暂时搁置
    }
}

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

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

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

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

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

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

3、设计Images图片类

完整代码:

package cn.tedu.submarine;
import javax.swing.ImageIcon;
/** 图片类 */
public class Images {
   
//  公开的  静态的  图片数据类型   变量名
    public static ImageIcon  battleship; //战舰图片
    public static ImageIcon  obsersubm;  //侦察潜艇图片
    public static ImageIcon  torpesubm;  //鱼雷潜艇图片
    public static ImageIcon  minesubm;   //水雷潜艇图片
    public static ImageIcon  mine;       //水雷图片
    public static ImageIcon  bomb;       //深水炸弹图片
    public static ImageIcon  sea;        //海洋图
    public static ImageIcon  gameover;   //游戏结束图

    static{
    //给静态图片赋值
        battleship = new ImageIcon("img/battleship.png");
        obsersubm = new ImageIcon("img/obsersubm.png");
        torpesubm = new ImageIcon("img/torpesubm.png");
        minesubm = new ImageIcon("img/minesubm.png");
        mine = new ImageIcon("img/mine.png");
        bomb = new ImageIcon("img/bomb.png");
        sea = new ImageIcon("img/sea.png");
        gameover = new ImageIcon("img/gameover.png");
    }

    public static void main(String[] args) {
   
        System.out.println(battleship.getImageLoadStatus()); //返回8表示读取成功
        System.out.println(obsersubm.getImageLoadStatus());
        System.out.println(torpesubm.getImageLoadStatus());
        System.out.println(minesubm.getImageLoadStatus());
        System.out.println(mine.getImageLoadStatus());
        System.out.println(bomb.getImageLoadStatus());
        System.out.println(sea.getImageLoadStatus());
        System.out.println(gameover.getImageLoadStatus());
    }
}
//注:其余类没有变化,此处省略

五、第五天

1、在World类中设计窗口的宽和高为常量,在SeaObject的两个参构造中将数据修改为常量

参考代码:

package day05;
//整个游戏世界
public class World {
   
    public static final int WIDTH = 641;
    public static final int HEIGHT = 479;
    
    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(submarines[i].x+","+submarines[i].y);
            submarines[i].move();
        }
        
        Battleship s = new Battleship();

        Mine[] ms = new Mine[2];
        ms[0] = new Mine(100,200);
        ms[1] = new Mine(200,400);
        for(int i=0;i<ms
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值