iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么用JAVA实现经典游戏坦克大战
  • 526
分享到

怎么用JAVA实现经典游戏坦克大战

2023-06-29 01:06:39 526人浏览 八月长安
摘要

这篇文章主要介绍“怎么用JAVA实现经典游戏坦克大战”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用JAVA实现经典游戏坦克大战”文章能帮助大家解决问题。主要设计要有难度关卡:第一关,第二关,第

这篇文章主要介绍“怎么用JAVA实现经典游戏坦克大战”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用JAVA实现经典游戏坦克大战”文章能帮助大家解决问题。

主要设计

要有难度关卡:第一关,第二关,第三关,第四关,第五关;第一关地图最简单,第五关地图最难;

坦克要有血条,打多次才会死

地图要我有我方坦克四辆(相当于4条命)和多辆敌方坦克

我方坦克的炮弹数量是固定的,设置为500

地图右边显示基本信息

地图上要在砖块,铁块,河流

功能截图

游戏开始页面

怎么用JAVA实现经典游戏坦克大战

怎么用JAVA实现经典游戏坦克大战

怎么用JAVA实现经典游戏坦克大战

代码实现

窗口布局

public class GameFrame extends JFrame {        private static final long serialVersionUID = -1176914786963603304L;    public GameFrame() {        super();        this.setSize(800, 700);        this.setTitle("坦克大战");        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);        this.setResizable(false);        this.setIconImage(TankGameImages.myTankImg[0]);        // 显示器屏幕大小        Dimension screenSizeInfo = Toolkit.getDefaultToolkit().getScreenSize();        int leftTopX = ((int) screenSizeInfo.getWidth() - this.getWidth()) / 2;        int leftTopY = ((int) screenSizeInfo.getHeight() - this.getHeight()) / 2;        // 设置显示的位置在屏幕中间        this.setLocation(leftTopX, leftTopY);    }}

地图渲染核心算法

@Servicepublic class PaintService {    @Autowired    private GameContext context;    private Brick rightBrick = new Brick(700, 50);    private Iron rightIron = new Iron(700, 50);    private Water rightWater = new Water(700, 50);        public void drawStuff(Graphics g, Stuff stuff, JPanel panel) {        switch (stuff.getType()) {            //枚举的switch,有意思,不需要+StuffTypeEnum.TANK            case TANK:                Tank tank = (Tank) stuff;                switch (stuff.getDirect()) { // 判断所朝的方向                    case NORTH:                        this.drawNorth(g, tank, panel);                        break;                    case SOUTH:                        this.drawSouth(g, tank, panel);                        break;                    case WEST:                        this.drawWest(g, tank, panel);                        break;                    case EAST:                        this.drawEast(g, tank, panel);                        break;                }                break;            case BRICK://                g.setColor(new Color(216, 90, 49));//                g.fill3DRect(stuff.getX() - 20, stuff.getY() - 20, 40, 40, false);                g.drawImage(TankGameImages.stuffImg[StuffTypeEnum.BRICK.geTKEy()],                        stuff.getX() - 10, stuff.getY() - 10, 20, 20, panel);                break;            case IRON://                g.setColor(new Color(225, 225, 225));//                g.fill3DRect(stuff.getX() - 20,//                        stuff.getY() - 20, 40, 40, false);                g.drawImage(TankGameImages.stuffImg[StuffTypeEnum.IRON.getKey()], stuff.getX() - 10,                        stuff.getY() - 10, 20, 20, panel);                break;            case WATER://                g.setColor(new Color(65, 64, 253));//                g.fillRect(stuff.getX() - 20,//                        stuff.getY() - 20, 40, 40);                g.drawImage(TankGameImages.stuffImg[StuffTypeEnum.WATER.getKey()],                        stuff.getX() - 10, stuff.getY() - 10, 20, 20, panel);                break;        }    }        public void drawBomb(Graphics g, Vector<Bomb> bombs, JPanel panel) {        for (int i = 0; i < bombs.size(); i++) {            int l = bombs.get(i).getL();            Bomb b = bombs.get(i); // 从炸弹容器中取出一颗炸弹            if (b.getLifeTime() > 24) { // 生命值21-25                g.drawImage(TankGameImages.bomb[0], b.getX() - l / 2, b.getY()                        - l / 2, l, l, panel);            } else if (b.getLifeTime() > 18) { // 生命值16-20                g.drawImage(TankGameImages.bomb[1], b.getX() - l / 2, b.getY()                        - l / 2, l, l, panel);            } else if (b.getLifeTime() > 12) { // 生命值11-15                g.drawImage(TankGameImages.bomb[2], b.getX() - l / 2, b.getY()                        - l / 2, l, l, panel);            } else if (b.getLifeTime() > 6) { // 生命值6-10                g.drawImage(TankGameImages.bomb[3], b.getX() - l / 2, b.getY()                        - l / 2, l, l, panel);            } else { // 生命值低于6                g.drawImage(TankGameImages.bomb[4], b.getX() - l / 2, b.getY()                        - l / 2, l, l, panel);            }            b.lifeDown(); // 生命随时间衰减            if (b.getLifeTime() == 0) { // 该炸弹死亡                b.setLive(false);            }        }    }        public void drawEnemyTank(Graphics g, Vector<EnemyTank> enemies, JPanel panel) {        for (int i = 0; i < enemies.size(); i++) {            this.drawStuff(g, enemies.get(i), panel); // 画出敌人的坦克            for (int j = 0; j < enemies.get(i).getBullets().size(); j++) {                if (enemies.get(i).getBullets().get(j) != null) {                    Bullet eb = enemies.get(i).getBullets().get(j);                    g.drawImage(TankGameImages.bullet, eb.getX() - 2,                            eb.getY() - 2, 4, 4, panel);                }            }        }    }        public void drawMyTank(Graphics g, Vector<MyTank> myTanks, JPanel panel) {        for (int m = 0; m < myTanks.size(); m++) {            MyTank myTank = myTanks.get(m); // 取出我的坦克            this.drawStuff(g, myTank, panel); // 画出我的坦克            for (int i = 0; i < myTank.getBullets().size(); i++) {                if (myTank.getBullets().get(i) != null) {                    Bullet b = myTank.getBullets().get(i);                    g.drawImage(TankGameImages.bullet, b.getX() - 2,                            b.getY() - 2, 4, 4, panel);                }            }        }    }        public void drawMap(Graphics g, Map map, JPanel panel) {        Vector<Brick> bricks = map.getBricks();        Vector<Iron> irons = map.getIrons();        Vector<Water> waters = map.getWaters();        for (int i = 0; i < bricks.size(); i++) {            this.drawStuff(g, bricks.get(i), panel);        }        for (int i = 0; i < irons.size(); i++) {            this.drawStuff(g, irons.get(i), panel);        }        for (int i = 0; i < waters.size(); i++) {            this.drawStuff(g, waters.get(i), panel);        }    }        public void drawNorth(Graphics g, Tank tank, JPanel panel) {//        int x = tank.getX();//        int y = tank.getY(); //0.设置画笔颜色//        g.setColor(Color.white);//        //1.画出左边的矩形//        g.fill3DRect(x - 20, y - 20, 10,//                40, false);//        g.fill3DRect(x + 10, y - 20, 10, 40, false);//2.画出右边矩形//        //3.更换画笔颜色//        g.setColor(tank.getColor()); //4.画出轮子条纹//        for (int//             i = 0;//             i < 20 - 1;//             i++) {//            g.drawLine(x - 20, y - 20 + (i + 1) * 2, x - 10 - 1, y - 20 + (i + 1) * 2);//            g.drawLine(x + 10, y - 20 + (i + 1) * 2, x + 20 - 1, y - 20 + (i + 1) * 2);//        } //5.画出中间1矩形//        g.fill3DRect(x - 15, y - 14, 30, 28, false); //6.更换画笔颜色//        g.setColor(Color.white); //7.画出中间2矩形//        g.draw3DRect(x - 10, y - 9, 20,//                18, false); //8.画出中间3矩形//        g.draw3DRect(x - 3, y - 5, 6, 10, false); //9.画直线//        g.drawLine(x - 15, y - 14, x - 10, y - 9);//        g.drawLine(x + 15, y - 14, x + 10, y - 9);//        g.drawLine(x - 15, y + 14, x - 10, y + 9);//        g.drawLine(x + 15, y + 14, x + 10, y + 9);//        g.setColor(tank.getColor()); //10.画矩形//        g.fill3DRect(x - 3, y - 12, 6, 3,//                false);//        g.fill3DRect(x - 2, y - 20, 4, 2, false);//        g.fill3DRect(x - 1, y - 20,//                2, 11, false);        Image image;        if (tank.getTankType() == TankTypeEnum.MY) {            g.setColor(Color.green);            image = TankGameImages.myTankImg[DirectionEnum.NORTH.getKey()];// 初始化图片        } else {            image = TankGameImages.enemyTankImg[DirectionEnum.NORTH.getKey()];            g.setColor(Color.gray);        }        g.drawImage(image, tank.getX() - 20, tank.getY() - 20, 40, 40, panel);        g.fillRect(tank.getX() - 20, tank.getY() - 30, tank.getBlood() * 4, 5);    }        public void drawSouth(Graphics g, Tank tank, JPanel panel) {//        int x = tank.getX();//        int y = tank.getY();//        g.setColor(Color.white);//        g.fill3DRect(x - 20, y - 20, 10, 40, false);//        g.fill3DRect(x + 10, y - 20, 10,//                40, false);//        g.setColor(tank.getColor());//        for (int i = 0; i < 20 - 1; i++) {//            g.drawLine(x - 20, y - 20 + (i + 1) * 2, x - 10 - 1, y - 20 + (i + 1) * 2);//            g.drawLine(x + 10,//                    y - 20 + (i + 1) * 2, x + 20 - 1, y - 20 + (i + 1) * 2);//        }//        g.fill3DRect(x - 15, y - 14, 30,//                28, false);//        g.setColor(Color.white);//        g.draw3DRect(x - 10, y - 9, 20,//                18, false);//        g.draw3DRect(x - 3, y - 5, 6, 10, false);//        g.drawLine(x - 15,//                y - 14, x - 10, y - 9);//        g.drawLine(x + 15, y - 14, x + 10, y - 9);//        g.drawLine(x - 15,//                y + 14, x - 10, y + 9);//        g.drawLine(x + 15, y + 14, x + 10, y + 9);//        g.setColor(tank.getColor());//        g.fill3DRect(x - 3, y + 9, 6, 3, false);//        g.fill3DRect(x - 1, y + 9, 2, 11, false);//        g.fill3DRect(x - 2, y + 18, 4, 2,//                false);        Image image;        if (tank.getTankType() == TankTypeEnum.MY) {            g.setColor(Color.green);            image = TankGameImages.myTankImg[DirectionEnum.SOUTH.getKey()];// 初始化图片        } else {            image = TankGameImages.enemyTankImg[DirectionEnum.SOUTH.getKey()];            g.setColor(Color.gray);        }        g.drawImage(image, tank.getX() - 20, tank.getY() - 20, 40, 40, panel);        g.fillRect(tank.getX() - 20, tank.getY() - 30, tank.getBlood() * 4, 5);    }        public void drawWest(Graphics g, Tank tank, JPanel panel) {//        int x = tank.getX();//        int y = tank.getY();//        g.setColor(Color.white);//        g.fill3DRect(x - 20, y - 20, 40, 10, false);//        g.fill3DRect(x - 20, y + 10, 40,//                10, false);//        g.setColor(tank.getColor());//        for (int i = 0; i < 20 - 1; i++) {//            g.drawLine(x - 20 + (i + 1) * 2, y - 20, x - 20 + (i + 1) * 2, y - 10 - 1);//            g.drawLine(x - 20 + (i + 1) * 2, y - 20 + 30, x - 20 + (i + 1) * 2, y - 10 - 1 + 30);//        }//        g.fill3DRect(x - 14, y - 15, 28, 30, false);//        g.setColor(Color.white);//        g.draw3DRect(x - 9, y - 10, 18, 20, false);//        g.draw3DRect(x - 5, y - 3, 10,//                6, false);//        g.drawLine(x - 15, y - 14, x - 10, y - 9);//        g.drawLine(x + 15, y - 14,//                x + 10, y - 9);//        g.drawLine(x - 15, y + 14, x - 10, y + 9);//        g.drawLine(x + 15, y + 14,//                x + 10, y + 9);//        g.setColor(tank.getColor());//        g.fill3DRect(x - 12, y - 3, 3,//                6, false);//        g.fill3DRect(x - 20, y - 1, 11, 2, false);//        g.fill3DRect(x - 20,//                y - 2, 2, 4, false);        Image image;        if (tank.getTankType() == TankTypeEnum.MY) {            image = TankGameImages.myTankImg[DirectionEnum.WEST.getKey()];// 初始化图片            g.setColor(Color.green);        } else {            image = TankGameImages.enemyTankImg[DirectionEnum.WEST.getKey()];            g.setColor(Color.gray);        }        g.drawImage(image, tank.getX() - 20, tank.getY() - 20, 40, 40, panel);        g.fillRect(tank.getX() - 20, tank.getY() - 30, tank.getBlood() * 4, 5);    }        public void drawEast(Graphics g, Tank tank, JPanel panel) {//        int x = tank.getX();//        int y = tank.getY();//        g.setColor(Color.white);//        g.fill3DRect(x - 20, y - 20, 40, 10, false);//        g.fill3DRect(x - 20, y + 10, 40,//                10, false);//        g.setColor(tank.getColor());//        for (int i = 0; i < 20 - 1; i++) {//            g.drawLine(x - 20 + (i + 1) * 2, y - 20, x - 20 + (i + 1) * 2, y - 10 - 1);//            g.drawLine(x - 20 + (i + 1) * 2, y - 20 + 30, x - 20 + (i + 1) * 2, y - 10 - 1 + 30);//        }//        g.fill3DRect(x - 14, y - 15, 28, 30, false);//        g.setColor(Color.white);//        g.draw3DRect(x - 9, y - 10, 18, 20, false);//        g.draw3DRect(x - 5, y - 3, 10,//                6, false);//        g.drawLine(x - 15, y - 14, x - 10, y - 9);//        g.drawLine(x + 15, y - 14,//                x + 10, y - 9);//        g.drawLine(x - 15, y + 14, x - 10, y + 9);//        g.drawLine(x + 15, y + 14,//                x + 10, y + 9);//        g.setColor(tank.getColor());//        g.fill3DRect(x + 9, y - 3, 3, 6,//                false);//        g.fill3DRect(x + 9, y - 1, 11, 2, false);//        g.fill3DRect(x + 18, y - 2,//                2, 4, false);        Image image;        if (tank.getTankType() == TankTypeEnum.MY) {            image = TankGameImages.myTankImg[DirectionEnum.EAST.getKey()];// 初始化图片            g.setColor(Color.green);        } else {            image = TankGameImages.enemyTankImg[DirectionEnum.EAST.getKey()];            g.setColor(Color.gray);        }        g.drawImage(image, tank.getX() - 20, tank.getY() - 20, 40, 40, panel);        g.fillRect(tank.getX() - 20, tank.getY() - 30, tank.getBlood() * 4, 5);    }        public void drawRight(Graphics g, GamePanel tgp, RealTimeGameData data) {        if (data.getMapMakingFlag().equals(Boolean.TRUE)) {            g.drawString("当前选中画笔(可按C键切换)", 620, 20);            if (data.getCurrentStuff() == StuffTypeEnum.IRON) {                drawStuff(g, rightIron, tgp);            } else if (data.getCurrentStuff() == StuffTypeEnum.BRICK) {                drawStuff(g, rightBrick, tgp);            } else if (data.getCurrentStuff() == StuffTypeEnum.WATER) {                drawStuff(g, rightWater, tgp);            } else {                g.drawString("橡皮擦", 680, 50);            }        } else {            for (int i = 0; i < data.getEnemyTankNum(); i++) {                if (i >= 4) {                    g.drawImage(TankGameImages.enemyTankImg[DirectionEnum.NORTH.getKey()],                            402 + 50 * i, 100, 40, 40, tgp);                } else {                    g.drawImage(TankGameImages.enemyTankImg[DirectionEnum.NORTH.getKey()],                            602 + 50 * i, 20, 40, 40, tgp);                }            }            for (int j = 0; j < data.getMyTankNum(); j++) {                g.drawImage(TankGameImages.myTankImg[DirectionEnum.NORTH.getKey()], 602 + 50 * j,                        400, 40, 40, tgp);            }            g.drawString("我的坦克子弹数目:" + data.getMyBulletNum(), 620, 500);        }    }    public void rePaintPanel(GamePanel panel, Graphics g) {        RealTimeGameData data = context.getGameData();        if (data.isStart()) {            g.setColor(Color.black);            g.fillRect(0, 0, GameConstants.GAME_PANEL_WIDTH, GameConstants.GAME_PANEL_HEIGHT);            g.fillRect(280, 600, 40, 40);            this.drawMap(g, data.getMap(), panel);            this.drawMyTank(g, data.getMyTanks(), panel); // 画出我的坦克(包括子弹)            this.drawEnemyTank(g, data.getEnemies(), panel); // 画出敌人坦克(包括子弹)            this.drawBomb(g, data.getBombs(), panel); // 画出爆炸            this.drawRight(g, panel, data);            if (data.getMyTankNum() == 0) { // 如果我的坦克数量为0                g.drawImage(TankGameImages.gameOver, 250, data.getDy(), 100,                        100, panel);            }            if (data.getEnemyTankNum() == 0) { // 如果敌人坦克的数量为0                g.drawImage(TankGameImages.gameWin, 250, data.getDy(), 100,                        100, panel);            }            if (data.getDy() == 250) {                g.fillRect(0, 0, 800, 600);                g.setColor(Color.BLUE);                if (data.getMyTankNum() == 0) {                    g.drawString("失败了!!!", 300, 220);                } else {                    g.drawString("挑战成功,请稍等...", 300, 220);                }                g.drawString(                        ("敌人坦克死亡数量:" + (8 - data.getEnemyTankNum())),                        300, 260);                g.drawString("我的坦克死亡总数量:" + data.getBeKilled(), 300,                        280);                g.drawString(                        "我的炮弹消耗总数量:"                                + (GameConstants.MY_TANK_INIT_BULLET_NUM - data                                .getMyBulletNum()), 300, 300);                g.drawString("敌人坦克剩余数量:" + data.getEnemyTankNum(), 300,                        320);                g.drawString("我的坦克剩余总数量:" + data.getMyTankNum(), 300,                        340);                g.drawString("我的炮弹剩余总数量:" + data.getMyBulletNum(), 300,                        360);            }        } else {            g.drawImage(TankGameImages.startImage, 0, 0, 800, 700, panel);            //g.drawImage(TankGameImages.font, 0, data.getKy(), panel);            if (data.isIconSmile()) {                //g.drawImage(TankGameImages.yctSmile1, data.getKx(), 45,                //        panel);                data.setIconSmile(false);            } else {                //g.drawImage(TankGameImages.yctSmile2, data.getKx(), 45,                //        panel);                data.setIconSmile(true);            }        }    }}

坦克核心算法

@Servicepublic class TankEventService {        public boolean isTankOverlap(Tank tank, Stuff stuff, int length) {        boolean b = false;        int x = stuff.getX();        int y = stuff.getY();        if (tank.getDirect() == DirectionEnum.NORTH) {            tank.setY(tank.getY() - tank.getSpeed());            if (Math.abs(tank.getY() - y) < length                    && Math.abs(tank.getX() - x) < length) {                b = true;                tank.setY(tank.getY() + tank.getSpeed());            } else {                tank.setY(tank.getY() + tank.getSpeed());            }        }        if (tank.getDirect() == DirectionEnum.SOUTH) {            tank.setY(tank.getY() + tank.getSpeed());            if (Math.abs(tank.getY() - y) < length                    && Math.abs(tank.getX() - x) < length) {                b = true;            }            tank.setY(tank.getY() - tank.getSpeed());        }        if (tank.getDirect() == DirectionEnum.EAST) {            tank.setX(tank.getX() + tank.getSpeed());            if (Math.abs(tank.getY() - y) < length                    && Math.abs(tank.getX() - x) < length) {                b = true;            }            tank.setX(tank.getX() - tank.getSpeed());        }        if (tank.getDirect() == DirectionEnum.WEST) {            tank.setX(tank.getX() - tank.getSpeed());            if (Math.abs(tank.getY() - y) < length                    && Math.abs(tank.getX() - x) < length) {                b = true;            }            tank.setX(tank.getX() + tank.getSpeed());        }        return b;    }        public boolean isMyTankOverlap(MyTank tank, Vector<EnemyTank> enemies) {        for (int i = 0; i < enemies.size(); i++) {            if (isTankOverlap(tank, enemies.get(i), 40))                return true;        }        return false;    }        public boolean isEnemyTankOverlap(EnemyTank enemy, Vector<EnemyTank> enemies, Vector<MyTank> myTanks) {        for (int i = 0; i < enemies.size(); i++) {            if (enemy != enemies.get(i)) {                if (isTankOverlap(enemy, enemies.get(i), 40)) {                    enemy.setOverlapNo(true);                    return true;                }            }        }        for (int j = 0; j < myTanks.size(); j++) {            if (isTankOverlap(enemy, myTanks.get(j), 40)) {                enemy.setOverlapYes(true);                return true;            }        }        enemy.setOverlapNo(false);        enemy.setOverlapYes(false);        return false;    }        public void enemyGoWest(EnemyTank enemy) {        for (; ; ) {            GameTimeUnit.sleepMillis(36);            if (!enemy.isOverlapNo()&& !enemy.isOverlapYes()) {                enemy.goWest();            }            if (enemy.getMyTankLocation() != DirectionEnum.WEST) {                enemy.setDirect(enemy.getMyTankDirect());                break;            }        }    }        public void enemyGoEast(EnemyTank enemy) {        for (; ; ) {            GameTimeUnit.sleepMillis(36);            if (!enemy.isOverlapNo() && !enemy.isOverlapYes()) {                enemy.goEast();            }            if (enemy.getMyTankLocation() != DirectionEnum.EAST) {                enemy.setDirect(enemy.getMyTankDirect());                break;            }        }    }        public void enemyGoNorth(EnemyTank enemy) {        for (; ; ) {            GameTimeUnit.sleepMillis(36);            if (!enemy.isOverlapNo() && !enemy.isOverlapYes()) {                enemy.goNorth();            }            if (enemy.getMyTankLocation() != DirectionEnum.NORTH) {                enemy.setDirect(enemy.getMyTankDirect());                break;            }        }    }        public void enemyGoSouth(EnemyTank enemy) {        for (; ; ) {            GameTimeUnit.sleepMillis(36);            if (!enemy.isOverlapNo() && !enemy.isOverlapYes()) {                enemy.goSouth();            }            if (enemy.getMyTankLocation() != DirectionEnum.SOUTH) {                enemy.setDirect(enemy.getMyTankDirect());                break;            }        }    }        public DirectionEnum enemyGetRandomDirect(DirectionEnum direct1, DirectionEnum direct2, DirectionEnum direct3) {        int random = (int) (Math.random() * 3);        DirectionEnum returnDirect = DirectionEnum.INVALID;        switch (random) {            case 0:                returnDirect = direct1;                break;            case 1:                returnDirect = direct2;                break;            case 2:                returnDirect = direct3;                break;        }        return returnDirect;    }        public void enemyFindAndKill(EnemyTank enemy, MyTank myTank, Map map) {        int myX = myTank.getX();        int myY = myTank.getY();        int enX = enemy.getX();        int enY = enemy.getY();        if (Math.abs(myX - enX) < 20 && myY <= 580) {            if (enY < myY) {                int s = 0;                for (int t = 0; t < map.getIrons().size(); t++) {                    Iron iron = map.getIrons().get(t);                    if (Math.abs(enX - iron.getX()) <= 10 && iron.getY() > enY                            && iron.getY() < myY) {                        s = 1;                        break;                    }                }                if (s == 0) {                    enemy.setShot(true);                    enemy.setMyTankLocation(DirectionEnum.SOUTH);                }            } else {                int s = 0;                for (int t = 0; t < map.getIrons().size(); t++) {                    Iron iron = map.getIrons().get(t);                    if (Math.abs(enX - iron.getX()) <= 10 && iron.getY() < enY                            && iron.getY() > myY) {                        s = 1;                        break;                    }                }                if (s == 0) {                    enemy.setShot(true);                    enemy.setMyTankLocation(DirectionEnum.NORTH);                }            }        } else if (Math.abs(myY - enY) < 20 && myY <= 580) {            if (enX > myX) {                int s = 0;                for (int t = 0; t < map.getIrons().size(); t++) {                    Iron iron = map.getIrons().get(t);                    if (Math.abs(enY - iron.getY()) <= 10 && iron.getX() < enX                            && iron.getX() > myX) {                        s = 1;                        break;                    }                }                if (s == 0) {                    enemy.setShot(true);                    enemy.setMyTankLocation(DirectionEnum.WEST);                }            } else {                int s = 0;                for (int t = 0; t < map.getIrons().size(); t++) {                    Iron iron = map.getIrons().get(t);                    if (Math.abs(enY - iron.getY()) <= 10 && iron.getX() > enX                            && iron.getX() < myX) {                        s = 1;                        break;                    }                }                if (s == 0) {                    enemy.setShot(true);                    enemy.setMyTankLocation(DirectionEnum.EAST);                }            }        } else {            enemy.setShot(false);            enemy.setMyTankLocation(DirectionEnum.INVALID);        }    }}

关于“怎么用JAVA实现经典游戏坦克大战”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 怎么用JAVA实现经典游戏坦克大战

本文链接: https://www.lsjlt.com/news/321711.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-15
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-15
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-15
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-15
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-15
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-15
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-15
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-15
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-15
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-15
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作