java基础--坦克大战(一)

这篇博客分享了一位作者在学习Java过程中制作的坦克大战小游戏,该项目基于韩顺平老师的教程完成。文章介绍了游戏的基本构成,包括坦克类(Tank、MyTank、EnimyTank)、子弹类、爆炸类、纪录类以及音乐类。尽管是基础版本,但项目旨在巩固Java SE知识,对于初学者有一定参考价值。
摘要由CSDN通过智能技术生成
本人的GitHub:戳我一下(该项目的全部内容可以从GitHub上下载)

坦克大战这个项目很多学习人在学习java的过程中都做过,我从网上看了韩顺平老师的视频,然后做出了这么一个小游戏,其中还有很多功能没有实现,只能作为一个基础版本,还有很多不完善的地方,希望看到这篇文章的人把这些代码只当作一个借鉴。写这个小项目的过程也是对java se部分的知识的巩固,java se部分只是过度,但是这部分的知识却是非常重要的,希望下面的内容能对你有所帮助。

Members(包含了所有的类)

坦克类

坦克类分为三个类,一个是Tank类,另外两个是继承了Tank类的MyTank类,和EnimyTank类。

Tank类

//坦克类
class Tank {
    //设置速度
    int speed = 2;
    public int getSpeed() {
        return speed;
    }
    public void setSpeed(int speed) {
        this.speed = speed;
    }
    boolean islive = true;
    //坦克的种类
    int type = 0;

    public int getType() {
        return type;
    }
    public void setType(int type) {
        this.type = type;
    }
    //坦克的横坐标
    int x = 0;
    //坦克的纵坐标
    int y = 0;
    //坦克方向  
    //0:上   1:下  2:左 3:右
    int direct = 0;
    public int getDirect() {
        return direct;
    }
    public void setDirect(int direct) {
        this.direct = direct;
    }
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    public Tank(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

MyTank类

//我的坦克
class MyTank extends Tank {
    Vector<Shot> ss = new Vector<>();
    Shot s = null;
    public MyTank(int x, int y) {
        super(x,y);
        this.setType(0);
    }
    //开火
    public void shotenimy() {
        switch(this.direct) {
        case 0:
            //创建一颗子弹
            s = new Shot(x+10, y-5, 0);
            ss.add(s);
            break;
        case 1:
            s = new Shot(x+10, y+35, 1);
            ss.add(s);
            break;
        case 2:
            s = new Shot(x-5, y+10, 2);
            ss.add(s);
            break;
        case 3:
            s = new Shot(x+35, y+10, 3);
            ss.add(s);
            break;
        }
        Thread t = new Thread(s);
        t.start();
    }
    //坦克移动
    public void moveUp() {
        if(this.y > 0)
            this.y-=this.speed;
    }
    public void moveDown() {
        if(this.y < 600)
            this.y+=this.speed;
    }
    public void moveLeft() {
        if(this.x > 0)
            this.x-=this.speed;
    }
    public void moveRight() {
        if(this.x < 800)
            this.x+=this.speed;
    }
}

EnimyTank类

//敌人的坦克,把敌人的坦克做成线程
class EnimyTank extends Tank implements Runnable{
    int times = 0;
    //定义一个向量,可以访问到Mypanel上所有的敌人坦克
    Vector<EnimyTank> ets = new Vector<>();

    //定义一个子弹向量
    Vector<Shot> ss = new Vector<>();
    //敌人添加子弹应该在坦克刚刚创建和子弹死亡后
    public EnimyTank(int x, int y) {
        super(x,y);
    }
    //得到Mypanel的敌人坦克向量
    public void setEts(Vector<EnimyTank> vv) {
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值