文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java实现经典游戏飞机大战的代码怎么写

2023-06-29 03:21

关注

这篇文章主要讲解了“Java实现经典游戏飞机大战的代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java实现经典游戏飞机大战的代码怎么写”吧!

主要设计

用Swing库做可视化界面

鼠标控制战斗机移动

用线程实现画面刷新。

用流实现音乐播放。

创造一个飞机, 并且放在场景下方。

管理场景所有的飞机、子弹、道具移动

管理场景所有的子弹的发射

生成敌方飞机算法

分数计算算法

功能截图

游戏开始

Java实现经典游戏飞机大战的代码怎么写

战斗效果:

Java实现经典游戏飞机大战的代码怎么写

代码实现

启动类

public class Main {    public static void main(String[] args) {        // 创建窗口        JFrame frame = new JFrame("飞机大战");        // 添加 JPanel        Data.canvas = new Canvas(frame);        frame.setContentPane(Data.canvas);        // 初始化 Data        Data.init();        // 设置图标        frame.setIconImage(Load.image("ICON.png"));        // 设置窗口可见        frame.setVisible(true);        // 获取栏的高度和宽度        Data.TITLE_BOX_HEIGHT = frame.getInsets().top;        // 设置大小        frame.setSize(Data.WIDTH, Data.HEIGHT + Data.TITLE_BOX_HEIGHT);        // 窗口大小固定        frame.setResizable(false);        // 窗口居中显示        frame.setLocationRelativeTo(frame.getOwner());        // 窗口关闭时结束程序        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        // 播放背景音乐        Load.sound("background").loop(Clip.LOOP_CONTINUOUSLY);    }}

核心类

public class Game implements Scenes {    // 玩家 BOSS    Aircraft player, boss;    // 敌人    List<Aircraft> enemy;    // 玩家子弹 敌人子弹 道具列表    List<Bullet> bulletPlayer, bulletEnemy, bulletBuff;    // 玩家生命 生命 < 0 时死亡    // int life = Data.LIFE;    // 当前关卡 当前分数    int checkpoint = 1, fraction = 0;    // 飞机的飞行方向, 此处需要注意,监听按键来控制飞机移动时,不应该单纯的按键按下一次就执行一次,因为键盘按下不松开,飞机应该一直向某个方向移动,直到按键被放开    boolean left = false, right = false, down = false, up = false;    // fps, 记录当前帧数    int fps = 0;    // 提示的 x 坐标    int tipsX = -1000;    public Game() {        // 创造一个飞机, 并且放在场景下方, 玩家的角度属性不会使用        player = new Aircraft(Data.playerAircraftImage, Data.playerDeathImage, Data.SPEED, 0, Data.WIDTH / 2 - 40, Data.HEIGHT - 100);        // 设置飞机碰撞点,因为游戏采用的矩形碰撞检测,会出现很多误差,所以手动设置碰撞矩形,不采用图片的大小, 这个碰撞的坐标是相对于图片位置的相对坐标        player.upperLeft = new Point(15, 15);        player.lowerRight = new Point(75, 75);        // 初始化列表        bulletPlayer = new ArrayList<>();        bulletEnemy = new ArrayList<>();        bulletBuff = new ArrayList<>();        enemy = new ArrayList<>();    }    public void onKeyDown(int keyCode) {        if (keyCode == KeyEvent.VK_W || keyCode == KeyEvent.VK_UP)            up = true;        if (keyCode == KeyEvent.VK_S || keyCode == KeyEvent.VK_DOWN)            down = true;        if (keyCode == KeyEvent.VK_A || keyCode == KeyEvent.VK_LEFT)            left = true;        if (keyCode == KeyEvent.VK_D || keyCode == KeyEvent.VK_RIGHT)            right = true;    }    public void onKeyUp(int keyCode) {        if (keyCode == KeyEvent.VK_W || keyCode == KeyEvent.VK_UP)            up = false;        if (keyCode == KeyEvent.VK_S || keyCode == KeyEvent.VK_DOWN)            down = false;        if (keyCode == KeyEvent.VK_A || keyCode == KeyEvent.VK_LEFT)            left = false;        if (keyCode == KeyEvent.VK_D || keyCode == KeyEvent.VK_RIGHT)            right = false;    }    public void onMouse(int x, int y, int struts) {    }    public void draw(Graphics g) {        if (fps == 0) {            left = right = up = down = false;        }        // 绘制一次 fps + 1        fps++;        // 飞机移动        move();        // 子弹发射        attack();        // 敌方飞机生成        generate();        // 失效对象销毁        remove();        // 绘制背景        Data.background.show(g);        // 绘制我方飞机        if(player != null)            player.draw(g);        // 绘制BOSS        if (boss != null) boss.draw(g);        // 绘制敌方飞机        for (Aircraft a : enemy)            a.draw(g);        // 绘制我发子弹        for (Bullet b : bulletPlayer)            b.draw(g);        // 绘制敌方子弹        for (Bullet b : bulletEnemy)            b.draw(g);        // 绘制道具        for (Bullet d : bulletBuff)            d.draw(g);        g.drawString("分数 : " + fraction, 200, 200);        if (boss != null) {            g.drawImage(Data.hpBox, 10, -10, null);            g.setColor(Color.orange);            g.fillRect(106, -2, (int) (300 * ((boss.hp * 1.0) / 300)), 15);        }        // 绘制boss出现的图片        if (tipsX > -900 && tipsX < 900) {            g.drawImage(Data.tips, tipsX, 200, null);        }    }    // 管理场景所有的飞机、子弹、道具移动    void move() {        if (player != null) {            // 这里这个坐标,是为了让敌人发射子弹时定位用的            Data.x = player.x;            Data.y = player.y;            // 飞机向上移动, 这里还限制了飞机的范围,不让其飞出屏幕外            if (up) player.move(0, -player.speed);            if (player.y < 0) player.y = 0;            // 飞机向下移动            if (down) player.move(0, player.speed);            if (player.y > Data.HEIGHT - player.height) player.y = Data.HEIGHT - player.height;            // 飞机向左移动            if (left) player.move(-player.speed, 0);            if (player.x < 0) player.x = 0;            // 飞机向右移动            if (right) player.move(player.speed, 0);            if (player.x > Data.WIDTH - player.width) player.x = Data.WIDTH - player.width;        }        // boss 移动        if (boss != null) boss.move();        // 我方子弹的移动        for (Bullet bullet : bulletPlayer)            bullet.move();        // 敌方子弹的移动        for (Bullet bullet : bulletEnemy)            bullet.move();        // 道具的移动        for (Bullet bullet : bulletBuff)            bullet.move();        // 地方飞机的移动,包括BOSS        for (Aircraft air : enemy)            air.move();        // BUFF 移动        for (Bullet b : bulletBuff)            b.move();    }    void remove() {        Random random = new Random();        // 子弹销毁        for (int i = 0; i < bulletEnemy.size(); ) {            if (bulletEnemy.get(i).isRemove()) {                bulletEnemy.remove(i);            } else i++;        }        for (int i = 0; i < bulletPlayer.size(); ) {            if (bulletPlayer.get(i).isRemove()) {                bulletPlayer.remove(i);            } else i++;        }        for (int i = 0; i < bulletBuff.size(); ) {            if (bulletBuff.get(i).isRemove()) {                bulletBuff.remove(i);            } else i++;        }        // 敌人销毁        for (int i = 0; i < enemy.size(); ) {            if (enemy.get(i).isRemove()) {                // 生成道具                if (random.nextInt(100) > 80) {                    if (random.nextInt(100) > 60)                        bulletBuff.add(new Buff(Buff.BUFF2, enemy.get(i).x, enemy.get(i).y));                    else                        bulletBuff.add(new Buff(Buff.BUFF1, enemy.get(i).x, enemy.get(i).y));                }                Load.playSound("死亡");                // 击杀一个敌人增加 1 分,不整这么多花里胡哨的                fraction += 10;                if (fraction / 100 == checkpoint) {                    boss = new Boss2();                    checkpoint += 1;                    Load.playSound("警告");                    new Thread(() -> {                        tipsX = -Data.WIDTH;                        try {                            for (int n = 0; n < Data.WIDTH / 2; n++) {                                tipsX += 2;                                Thread.sleep(4);                            }                            Thread.sleep(2000);                            for (int n = 0; n < Data.WIDTH / 4; n++) {                                tipsX += 4;                                Thread.sleep(4);                            }                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                        tipsX = -1000;                    }).start();                }                enemy.remove(i);            } else i++;        }        // boss销毁        if (boss != null) {            // boss 死亡掉落4个buff            if (boss.isRemove()) {                bulletBuff.add(new Buff(Buff.BUFF2, boss.x + boss.width / 2, boss.y + boss.height / 2));                bulletBuff.add(new Buff(Buff.BUFF1, boss.x + boss.width / 2, boss.y + boss.height / 2));                bulletBuff.add(new Buff(Buff.BUFF2, boss.x + boss.width / 2, boss.y + boss.height / 2));                bulletBuff.add(new Buff(Buff.BUFF1, boss.x + boss.width / 2, boss.y + boss.height / 2));                boss = null;            }        }        boolean isPlay = false;        // 检测我方子弹碰撞        for (int i = 0; i < bulletPlayer.size(); i++) {            Point point = bulletPlayer.get(i).getPoint();            if (bulletPlayer.get(i).buffetIndex > 1) continue;            // 检测子弹是否击中boss            if (boss != null && boss.hp > 0) {                Point rect[] = boss.getCollisionRect();                if (Rect.isInternal(point.x, point.y, rect[0].x, rect[0].y, rect[1].x, rect[1].y)) {                    boss.hp -= bulletPlayer.get(i).struts;                    bulletPlayer.get(i).buffetIndex = 1;                    bulletPlayer.get(i).speed = 5;                    if (boss.hp <= 0) {                        boss.imgIndex = 10;                    }                    if (!isPlay) {                        isPlay = true;                        Load.playSound("击中");                    }                    continue;                }            }            for (Aircraft a : enemy) {                Point rect[] = a.getCollisionRect();                if (a.hp < 0) continue;                if (Rect.isInternal(point.x, point.y, rect[0].x, rect[0].y, rect[1].x, rect[1].y)) {                    if (!isPlay) {                        isPlay = true;                        Load.playSound("击中");                    }                    a.hp -= bulletPlayer.get(i).struts;                    bulletPlayer.get(i).buffetIndex = 1;                    bulletPlayer.get(i).speed = 5;                    if (a.hp < 0) {                        a.kill();;                        a.speed = 1;                    }                    break;                }            }        }        Point rect[], point;        // 检测敌方子弹碰撞        if(player != null) {            rect = player.getCollisionRect();            if (player != null && player.hp > 0) {                for (Bullet b : bulletEnemy) {                    point = b.getPoint();                    if (Rect.isInternal(point.x, point.y, rect[0].x, rect[0].y, rect[1].x, rect[1].y)) {                        player.hp -= b.struts;                        player.kill();                        death();                    }                }            }        }        // 吃BUFF        if (player != null && player.hp > 0) {            rect = player.getCollisionRect();            for (Bullet buff : bulletBuff) {                Point p = buff.getPoint();                if (Rect.isInternal(p.x, p.y, rect[0].x, rect[0].y, rect[1].x, rect[1].y)) {                    buff.x = -100;                    if (buff.struts == Buff.BUFF1)                        player.setBuff(16, 0);                    else                        player.setBuff(0, 16);                }            }        }        // 飞机之间的碰撞        if(player != null) {            for (Aircraft air : enemy) {                int x = air.x + air.width / 2, y = air.y + air.height / 2;                if(Rect.isInternal(x, y, player.x, player.y, player.width, player.height)) {                    player.kill();                    air.kill();                    Load.playSound("失败");                    death();                }            }        }    }    // 管理场景所有的子弹的发射    void attack() {        // 我方飞机3帧发射一次        if (player != null && player.hp > 0) {            if (!player.isRemove() && fps % 3 == 0)                bulletPlayer.addAll(Arrays.asList(player.attack()));        }        // 敌方飞机发射子弹        if (fps % 5 == 0)            for (Aircraft em : enemy)                bulletEnemy.addAll(Arrays.asList(em.attack()));        // boss发射子弹        if (boss != null) bulletEnemy.addAll(Arrays.asList(boss.attack()));    }    // 生成敌方飞机    void generate() {        // BOSS 存在时不生成小飞机        if (boss != null) return;        if (fps % 100 != 0 && fps >= 1) return;        Random random = new Random();        int rn = random.nextInt(100) + 1;        int[] hp = {(fps / 2000) + 1 * checkpoint, (fps / 2000) + 2 * checkpoint, (fps / 2000) + 5 * checkpoint, (fps / 2000) + 8 * checkpoint, (fps / 2000) + 11 * checkpoint};        switch (rn / 10) {            case 1: {                enemy.add(new Enemy(Data.enemyAircraftImages[4], Data.enemyDeathImages[4], 2, 90, random.nextInt(300) + 100, -150, hp[4]));                return;            }            case 2: {                enemy.add(new Enemy(Data.enemyAircraftImages[3], Data.enemyDeathImages[3], 2, 90, 100, -150, hp[3]));                enemy.add(new Enemy(Data.enemyAircraftImages[3], Data.enemyDeathImages[3], 2, 90, 380, -150, hp[3]));                return;            }            case 3: {                enemy.add(new Enemy(Data.enemyAircraftImages[2], Data.enemyDeathImages[2], 2, 90, 10, -150, hp[2]));                enemy.add(new Enemy(Data.enemyAircraftImages[0], Data.enemyDeathImages[0], 2, 90, 240, -150, hp[0]));                enemy.add(new Enemy(Data.enemyAircraftImages[2], Data.enemyDeathImages[2], 2, 90, 430 + 100, -150, hp[2]));                return;            }            case 4: {                enemy.add(new Enemy(Data.enemyAircraftImages[2], Data.enemyDeathImages[2], 2, 90, 0, -150, hp[2]));                enemy.add(new Enemy(Data.enemyAircraftImages[3], Data.enemyDeathImages[3], 2, 90, 130, -150, hp[3]));                enemy.add(new Enemy(Data.enemyAircraftImages[0], Data.enemyDeathImages[0], 2, 90, 300, -150, hp[0]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 90, 450, -150, hp[1]));                return;            }            case 5: {                enemy.add(new Enemy(Data.enemyAircraftImages[0], Data.enemyDeathImages[0], 2, 110, 400, random.nextInt(100) - 200, hp[0]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 110, 480, random.nextInt(100) - 200, hp[1]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 110, 560, random.nextInt(100) - 200, hp[1]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 110, 640, random.nextInt(100) - 200, hp[1]));                enemy.add(new Enemy(Data.enemyAircraftImages[0], Data.enemyDeathImages[0], 2, 110, 720, random.nextInt(100) - 200, hp[0]));                return;            }            case 6: {                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 70, -440, random.nextInt(100) - 200, hp[1]));                enemy.add(new Enemy(Data.enemyAircraftImages[0], Data.enemyDeathImages[0], 2, 70, -320, random.nextInt(100) - 200, hp[0]));                enemy.add(new Enemy(Data.enemyAircraftImages[0], Data.enemyDeathImages[0], 2, 70, -240, random.nextInt(100) - 200, hp[0]));                enemy.add(new Enemy(Data.enemyAircraftImages[0], Data.enemyDeathImages[0], 2, 70, -170, random.nextInt(100) - 200, hp[0]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 70, -100, random.nextInt(100) - 200, hp[1]));                return;            }            case 7: {                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 70, 30, random.nextInt(100) - 200, hp[1]));                enemy.add(new Enemy(Data.enemyAircraftImages[2], Data.enemyDeathImages[2], 2, 70, 100, random.nextInt(100) - 200, hp[2]));                enemy.add(new Enemy(Data.enemyAircraftImages[3], Data.enemyDeathImages[3], 2, 70, 200, random.nextInt(100) - 200, hp[3]));                enemy.add(new Enemy(Data.enemyAircraftImages[2], Data.enemyDeathImages[2], 2, 70, 300, random.nextInt(100) - 200, hp[2]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 70, 430, random.nextInt(100) - 200, hp[1]));                return;            }            case 8: {                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 30, -100, -150, hp[1]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 90, 240, -150, hp[1]));                enemy.add(new Enemy(Data.enemyAircraftImages[1], Data.enemyDeathImages[1], 2, 120, 615 + 100, -150, hp[1]));                return;            }            case 9: {                enemy.add(new Enemy(Data.enemyAircraftImages[4], Data.enemyDeathImages[4], 2, 90, 100 + random.nextInt(100), -150, hp[4]));                enemy.add(new Enemy(Data.enemyAircraftImages[4], Data.enemyDeathImages[4], 2, 90, 415 - random.nextInt(100), -150, hp[4]));                return;            }            case 10: {                enemy.add(new Enemy(Data.enemyAircraftImages[2], Data.enemyDeathImages[2], 2, 90, 120 + random.nextInt(100), -150, hp[2]));                enemy.add(new Enemy(Data.enemyAircraftImages[2], Data.enemyDeathImages[2], 2, 90, 395 - random.nextInt(100), -150, hp[2]));            }        }    }    void death() {        new Thread(() ->{            try {                player = null;                Thread.sleep(3000);                Data.canvas.switchScenes("Home");            } catch (InterruptedException e) {                e.printStackTrace();            }        }).start();    }}

核心算法

@SuppressWarnings("serial")public class GameMenu extends JFrame {GameMenu thisMenu;private JPanel contentPane;TestWindowBuilder fatherMenu;boolean isCheating;CMusic battleBGM,questCompleteBGM;int pressingW;int pressingS;int pressingA;int pressingD;int pressingJ;int pressingK;int playingSave;int playingProfessionID;int g_int1;Role playingRole;double playerX;//0-734double playerY;//0-312int rotationSpeed=15;//旋转速度int movementSpeed=3;//移动速度int NormalSpeed=3;int attackSpeed=3;//攻击速度int activeCounter;int attackCounter;int defenceCounter=0;int perfectDefenceTime=0;//完美格挡剩余时间(在敌人发动攻击前0.1秒启动的格挡能让格挡所需体力消耗减少到原来的十分之一)int defenceCooldown=0;//格挡冷却 这样阻止了玩家疯狂地启动/停止格挡int playerWidth=50;int playerHeight=50;int gamePhaseTimeCounter=0;int gamePhaseTimeCounter2=0;int endPhase=6*4;//游戏通关的阶段int gamePhase=0;//游戏开始时的阶段(正常玩家从第一关开始打,阶段应当从0开始)String humanIconContorler;JPanel viewMap;//玩家有两个Label 一个在boss上方 一个在boss下方int usingPlayerLabel=0;JLabel[] playerLabel=new JLabel[2];JLabel lblNewLabel_6;JLabel lblNewLabel_7;JLabel[] GiantBackGround=new JLabel[400];JLabel bossLabel;JLabel lblNewLabel_2;JLabel lblNewLabel_3;JLabel lblNewLabel_2B;JLabel lblNewLabel_3B;JLabel MobHead;JLabel MobName;JLabel MobHPBar;JLabel MobHPText;JLabel TitleLabelT;JLabel SubTitleLabelT;JLabel TitleLabel;JLabel SubTitleLabel;JPanel Titles;JLabel placeNameLabel;JLabel groundArrayLabel;JLabel placeChangeBlack;//换场地时的黑幕JLabel placeChangeBlack_1;//换场地时的黑幕(用于属性条)int maxProCount=5000;JLabel[] proLabel=new JLabel[maxProCount];boolean[] proIsUsed=new boolean[maxProCount];proLink proHead=new proLink();int existProCount;int maxParCount=5000;JLabel[] parLabel=new JLabel[maxParCount];boolean[] parIsUsed=new boolean[maxParCount];parLink parHead=new parLink();int existParCount;int existPro=0;int proTeamPointer=0;//队列指针 0-499int existPar=0;int parTeamPointer=0;JPanel panel;Mob boss;int allPhaseCount=1;int gameTime=0;Map map;public GameMenu(TestWindowBuilder fatherMenu,boolean isCheating,int professionID,int partID,int playingSave){this.setTitle("CARROT MAN II");this.setIconImage(new ImageIcon("resource/down4.png").getImage());for(int i=0;i<proIsUsed.length;++i)proIsUsed[i]=false;for(int i=0;i<parIsUsed.length;++i)parIsUsed[i]=false;playingProfessionID=professionID;this.playingSave=playingSave;gamePhase=(partID-1)*6;this.fatherMenu=fatherMenu;this.isCheating=isCheating;//this.isCheating=true;//测试用g_int1=0;playerX=50;playerY=200;thisMenu=this;activeCounter=0;attackCounter=0;setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(fatherMenu.getBounds());contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);//转场黑幕 第100层placeChangeBlack=new JLabel("");placeChangeBlack.setIcon(new ImageIcon("resource/black.png"));placeChangeBlack.setVisible(true);placeChangeBlack_1=new JLabel("");placeChangeBlack_1.setIcon(new ImageIcon("resource/black.png"));placeChangeBlack_1.setVisible(true);placeChangeBlack.setBounds(0, 0, 784, 362);placeChangeBlack_1.setBounds(0, 0, 784, 362);//contentPane.add(placeChangeBlack);JPanel panel_1 = new JPanel();panel_1.setBounds(0, 0, 784, 50);contentPane.add(panel_1);panel_1.setLayout(null);panel_1.add(placeChangeBlack_1);JLabel lblNewLabel = new JLabel("");//头像lblNewLabel.setBounds(0, 0, 50, 50);lblNewLabel.setIcon(new ImageIcon("resource/HPBarHead.png"));panel_1.add(lblNewLabel);lblNewLabel_2B = new JLabel("");//血量字lblNewLabel_2B.setForeground(Color.WHITE);lblNewLabel_2B.setHorizontalAlignment(SwingConstants.CENTER);lblNewLabel_2B.setBounds(50, 0, 200, 25);panel_1.add(lblNewLabel_2B);lblNewLabel_3B = new JLabel("");//体力字lblNewLabel_3B.setForeground(Color.WHITE);lblNewLabel_3B.setHorizontalAlignment(SwingConstants.CENTER);lblNewLabel_3B.setBounds(50, 25, 200, 25);panel_1.add(lblNewLabel_3B);lblNewLabel_2 = new JLabel("");//血条lblNewLabel_2.setBounds(50, 0, 200, 25);lblNewLabel_2.setIcon(new ImageIcon("resource/RedBar.png"));panel_1.add(lblNewLabel_2);lblNewLabel_3 = new JLabel("");//体力条lblNewLabel_3.setBounds(50, 25, 200, 25);lblNewLabel_3.setIcon(new ImageIcon("resource/GreenBar.png"));panel_1.add(lblNewLabel_3);JLabel lblNewLabel_1 = new JLabel("");//血条体力条背景lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);lblNewLabel_1.setBounds(50, 0, 200, 50);lblNewLabel_1.setIcon(new ImageIcon("resource/HPBarBG.png"));panel_1.add(lblNewLabel_1);JLabel lblNewLabel_4 = new JLabel("J");lblNewLabel_4.setForeground(Color.GRAY);lblNewLabel_4.setFont(new Font("黑体", Font.BOLD, 30));lblNewLabel_4.setHorizontalAlignment(SwingConstants.CENTER);lblNewLabel_4.setBounds(250, 0, 50, 50);panel_1.add(lblNewLabel_4);JLabel lblNewLabel_5 = new JLabel("");lblNewLabel_5.setFont(new Font("宋体", Font.PLAIN, 20));lblNewLabel_5.setHorizontalAlignment(SwingConstants.CENTER);lblNewLabel_5.setBounds(250, 0, 50, 50);lblNewLabel_5.setIcon(new ImageIcon("resource/skillJ.png"));panel_1.add(lblNewLabel_5);JLabel skillKLabel = new JLabel("K");skillKLabel.setForeground(Color.GRAY);skillKLabel.setFont(new Font("黑体", Font.BOLD, 30));skillKLabel.setHorizontalAlignment(SwingConstants.CENTER);skillKLabel.setBounds(300, 0, 50, 50);panel_1.add(skillKLabel);JLabel skillKLabel2 = new JLabel("");skillKLabel2.setFont(new Font("宋体", Font.PLAIN, 20));skillKLabel2.setHorizontalAlignment(SwingConstants.CENTER);skillKLabel2.setBounds(300, 0, 50, 50);skillKLabel2.setIcon(new ImageIcon("resource/skillK.png"));panel_1.add(skillKLabel2);placeNameLabel = new JLabel("");placeNameLabel.setFont(new Font("宋体", Font.PLAIN, 30));placeNameLabel.setHorizontalAlignment(SwingConstants.CENTER);placeNameLabel.setBounds(350, 0, 200, 50);panel_1.add(placeNameLabel);JLabel placeNameLabel2 = new JLabel("");placeNameLabel2.setHorizontalAlignment(SwingConstants.CENTER);placeNameLabel2.setBounds(350, 0, 200, 50);placeNameLabel2.setIcon(new ImageIcon("resource/placeNameBackGround.png"));panel_1.add(placeNameLabel2);MobHead = new JLabel("");MobHead.setHorizontalAlignment(SwingConstants.CENTER);MobHead.setBounds(550, 0, 50, 50);MobHead.setIcon(new ImageIcon("resource/MobHead_0.png"));panel_1.add(MobHead);MobName = new JLabel("");MobName.setHorizontalAlignment(SwingConstants.CENTER);MobName.setBounds(600, 0, 184, 25);panel_1.add(MobName);MobHPText = new JLabel("");MobHPText.setForeground(Color.WHITE);MobHPText.setHorizontalAlignment(SwingConstants.CENTER);MobHPText.setBounds(600, 25, 184, 25);panel_1.add(MobHPText);MobHPBar = new JLabel("");MobHPBar.setHorizontalAlignment(SwingConstants.CENTER);MobHPBar.setBounds(600, 25, 184, 25);MobHPBar.setIcon(new ImageIcon("resource/RedBar.png"));panel_1.add(MobHPBar);JLabel MobNameBG = new JLabel("");MobNameBG.setHorizontalAlignment(SwingConstants.CENTER);MobNameBG.setBounds(600, 0, 184, 50);MobNameBG.setIcon(new ImageIcon("resource/MobNameBG.png"));panel_1.add(MobNameBG);panel = new JPanel();panel.setBounds(0, 50, 784, 362);contentPane.add(panel);viewMap=panel;panel.setLayout(null);panel.add(placeChangeBlack);lblNewLabel_7 = new JLabel("");//玩家tryingFace指示器(暂时停用)lblNewLabel_7.setBounds((int)playerX, (int)playerY, 5, 5);lblNewLabel_7.setIcon(new ImageIcon("resource/moveDeraction2.png"));lblNewLabel_7.setVisible(false);panel.add(lblNewLabel_7);//第99层//TitleLabelT = new JLabel("");TitleLabelT.setFont(new Font("黑体", Font.PLAIN, 45));TitleLabelT.setHorizontalAlignment(SwingConstants.CENTER);TitleLabelT.setBounds(100, 50, 584, 50);TitleLabelT.setVisible(true);panel.add(TitleLabelT);//副SubTitleLabelT = new JLabel("");SubTitleLabelT.setFont(new Font("黑体", Font.PLAIN, 25));SubTitleLabelT.setHorizontalAlignment(SwingConstants.CENTER);SubTitleLabelT.setBounds(100, 100, 584, 50);SubTitleLabelT.setVisible(true);panel.add(SubTitleLabelT);//预先创建粒子效果的Label,第6层for(int i=0;i<maxParCount;++i){parLabel[i]=new JLabel("");panel.add(parLabel[i]);}//boss上方的玩家,第5层playerLabel[1]=new JLabel("");playerLabel[1].setHorizontalAlignment(SwingConstants.CENTER);playerLabel[1].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerHeight, playerWidth);playerLabel[1].setIcon(new ImageIcon("resource/HumanRight_0.png"));playerLabel[1].setVisible(false);panel.add(playerLabel[1]);//bossLabel,第4.5层bossLabel = new JLabel("");panel.add(bossLabel);//boss下方的玩家,第4层playerLabel[0]=new JLabel("");playerLabel[0].setHorizontalAlignment(SwingConstants.CENTER);playerLabel[0].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerHeight, playerWidth);playerLabel[0].setIcon(new ImageIcon("resource/HumanRight_0.png"));playerLabel[0].setVisible(true);panel.add(playerLabel[0]);//玩家面向方向指示器,第3层lblNewLabel_6 = new JLabel("");lblNewLabel_6.setBounds((int)playerX, (int)playerY, 5, 5);lblNewLabel_6.setIcon(new ImageIcon("resource/moveDeraction.png"));panel.add(lblNewLabel_6);//预先创建发射物的Label,第2层for(int i=0;i<maxProCount;++i){proLabel[i]=new JLabel("");panel.add(proLabel[i]);}//创建地面箭头,第1.5层groundArrayLabel=new JLabel("");groundArrayLabel.setBounds(709,156, 50, 50);groundArrayLabel.setIcon(new ImageIcon("resource/groundArray.png"));groundArrayLabel.setVisible(false);panel.add(groundArrayLabel);//创建地面Label,第1层for(int i=0;i<400;++i){GiantBackGround[i]=new JLabel("");GiantBackGround[i].setVisible(true);panel.add(GiantBackGround[i]);}playingRole=new Role(professionID,thisMenu);KeyLininter kl=new KeyLininter(thisMenu);        this.addKeyListener(kl);map=new Map(thisMenu);map.start();}//发射物相关public int addProjectile(Projectile pro){existProCount=proHead.getLength();if(existProCount<maxProCount){proHead.insert(new proLink(pro));int tempFinder=0;for(int i=0;i<maxProCount;++i){if(proIsUsed[i]==false){proIsUsed[i]=true;tempFinder=i;break;}}return tempFinder;}return -1;}public void removeProjectile(int id){proLabel[id].setVisible(false);proIsUsed[id]=false;}public void allProjectilesFly(){proLink tempNode=proHead;while(tempNode.next!=null){tempNode=tempNode.next;tempNode.data.doFly();}}//发射物相关结束//粒子效果相关public int addParticle(particle par){existParCount=parHead.getLength();if(existParCount<maxParCount){parHead.insert(new parLink(par));int tempFinder=0;for(int i=0;i<maxParCount;++i){if(parIsUsed[i]==false){parIsUsed[i]=true;tempFinder=i;break;}}return tempFinder;}return -1;}public void removeParticle(int id){parLabel[id].setVisible(false);parIsUsed[id]=false;}public void allParticlesFly(){parLink tempNode=parHead;while(tempNode.next!=null){tempNode=tempNode.next;tempNode.data.doFly();}}public void checkPlayerLocation()//检测玩家位置 如果超出地图 则拉回地图{if(playerX<playerWidth/2)playerX=playerWidth/2;if(playerX>784-playerWidth/2)playerX=784-playerWidth/2;if(playerY<playerHeight/2)playerY=playerHeight/2;if(playerY>362-playerHeight/2)playerY=362-playerHeight/2;}@SuppressWarnings("unused")public void saveData(int part){if(Integer.parseInt(fatherMenu.saveSelectMenu.savedData[playingSave].split(" ")[1])<part){String[] temp= {fatherMenu.saveSelectMenu.savedData[playingSave].split(" ")[0],fatherMenu.saveSelectMenu.savedData[playingSave].split(" ")[1]};fatherMenu.saveSelectMenu.savedData[playingSave]=""+playingProfessionID+" "+part;fatherMenu.saveSelectMenu.saveSaves();}}@SuppressWarnings({ "deprecation" })public void modTick()//每秒执行50次{if(attackCounter==0&&defenceCounter==0)playingRole.regenerate();if(playingRole.HP>0){//刷新体力条lblNewLabel_3.setBounds(50, 25, (int) (200*playingRole.energy/playingRole.MaxEnergy), 25);lblNewLabel_3B.setText(""+(int)playingRole.energy+"/"+(int)playingRole.MaxEnergy);//刷新血条lblNewLabel_2.setBounds(50, 0, (int) (200*playingRole.HP/playingRole.MaxHP), 25);lblNewLabel_2B.setText(""+(int)playingRole.HP+"/"+(int)playingRole.MaxHP);}else if(gamePhase!=-1){boss.target=null;gamePhaseTimeCounter=0;gamePhase=-1;movementSpeed=0;TitleLabelT.setText("YOU DIED");TitleLabelT.setVisible(true);playerLabel[usingPlayerLabel].setVisible(false);lblNewLabel_6.setVisible(false);lblNewLabel_3.setBounds(50, 25, (int) (200*playingRole.energy/playingRole.MaxEnergy), 25);lblNewLabel_3B.setText(""+(int)playingRole.energy+"/"+(int)playingRole.MaxEnergy);lblNewLabel_2.setBounds(50, 0, (int) (200*playingRole.HP/playingRole.MaxHP), 25);lblNewLabel_2B.setText(""+(int)playingRole.HP+"/"+(int)playingRole.MaxHP);}++gameTime;allProjectilesFly();allParticlesFly();if(gamePhase==0){if(gamePhaseTimeCounter<50)gamePhaseTimeCounter=50;++gamePhaseTimeCounter;if(gamePhaseTimeCounter==51){System.out.println("启动控制台...");movementSpeed=0;placeChangeBlack.setBounds(0, 0, 784, 362);placeChangeBlack_1.setBounds(0, 0, 784, 362);placeChangeBlack.setVisible(true);placeChangeBlack_1.setVisible(true);TitleLabelT.setVisible(false);SubTitleLabelT.setVisible(false);groundArrayLabel.setVisible(false);for(int i=0;i<128;++i)//初始化第一关地面{String backGroundContorler="resource/ground";GiantBackGround[i].setBounds(50*(i%16),50*(int)(i/16), 50, 50);if(Math.random()<0.9)backGroundContorler=backGroundContorler+"1.png";elsebackGroundContorler=backGroundContorler+"2.png";GiantBackGround[i].setIcon(new ImageIcon(backGroundContorler));}playerX=50;playerY=200;placeNameLabel.setText(fatherMenu.textLib.textData[13]);TitleLabelT.setText(fatherMenu.textLib.textData[13]);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[37]);SubTitleLabelT.setVisible(true);}if(gamePhaseTimeCounter>=100&&gamePhaseTimeCounter<=150){placeChangeBlack.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);placeChangeBlack_1.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);}if(gamePhaseTimeCounter==151){startNewBattleBGM(1);placeChangeBlack.setVisible(false);placeChangeBlack_1.setVisible(false);gamePhaseTimeCounter=0;++gamePhase;}}if(gamePhase%6==1){++gamePhaseTimeCounter;if(gamePhaseTimeCounter>=200){++gamePhase;TitleLabelT.setVisible(false);SubTitleLabelT.setVisible(false);movementSpeed=NormalSpeed;}}if(gamePhase==2){gamePhaseTimeCounter=0;boss=new Mob(1,bossLabel,thisMenu);boss.reflash();bossLabel.setVisible(true);++gamePhase;}if(gamePhase==3){if(boss.HP>0)boss.reflash();else{bossLabel.setVisible(false);MobHPBar.setBounds(600, 25, 184*boss.HP/boss.MaxHP, 25);MobHPText.setText(""+boss.HP+"/"+boss.MaxHP);++gamePhase;gamePhaseTimeCounter=0;TitleLabelT.setText(fatherMenu.textLib.textData[38]);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[39]);SubTitleLabelT.setVisible(true);saveData(2);startQuestCompleteBGM();endBattleBGM();}}if(gamePhase%6==4){playingRole.percentReHP(0.005);++gamePhaseTimeCounter;if(gamePhaseTimeCounter>200){gamePhaseTimeCounter=0;++gamePhase;TitleLabelT.setText(fatherMenu.textLib.textData[40]);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[41]);SubTitleLabelT.setVisible(true);gamePhaseTimeCounter2=0;}}if(gamePhase%6==5){++gamePhaseTimeCounter;if(gamePhaseTimeCounter2==0){if(gamePhaseTimeCounter>50){groundArrayLabel.setVisible(true);if(playerX>709&&playerX<759&&playerY>156&&playerY<206)//进入箭头{gamePhaseTimeCounter=0;gamePhaseTimeCounter2=1;movementSpeed=0;placeChangeBlack.setBounds(-784,0,784,362);placeChangeBlack.setVisible(true);placeChangeBlack_1.setBounds(-784,0,784,362);placeChangeBlack_1.setVisible(true);}}}if(gamePhaseTimeCounter2==1){if(gamePhaseTimeCounter>=0&&gamePhaseTimeCounter<=50){placeChangeBlack.setBounds((int)(gamePhaseTimeCounter*0.02*784-784), 0, 784, 362);placeChangeBlack_1.setBounds((int)(gamePhaseTimeCounter*0.02*784-784), 0, 784, 362);}if(gamePhaseTimeCounter==51){++gamePhase;gamePhaseTimeCounter=0;}}}if(gamePhase==6){movementSpeed=0;if(gamePhaseTimeCounter<50)gamePhaseTimeCounter=50;++gamePhaseTimeCounter;if(gamePhaseTimeCounter==51){placeChangeBlack.setBounds(0, 0, 784, 362);placeChangeBlack.setVisible(true);placeChangeBlack_1.setBounds(0, 0, 784, 362);placeChangeBlack_1.setVisible(true);TitleLabelT.setVisible(false);SubTitleLabelT.setVisible(false);groundArrayLabel.setVisible(false);for(int i=0;i<325;++i){GiantBackGround[i].setBounds(32*(i%25),32*(int)(i/25), 32, 32);GiantBackGround[i].setIcon(new ImageIcon("resource/ground6.png"));}playerX=50;playerY=200;placeNameLabel.setText(fatherMenu.textLib.textData[14]);TitleLabelT.setText(fatherMenu.textLib.textData[14]);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[42]);SubTitleLabelT.setVisible(true);}if(gamePhaseTimeCounter>=100&&gamePhaseTimeCounter<=150){placeChangeBlack.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);placeChangeBlack_1.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);}if(gamePhaseTimeCounter==151){startNewBattleBGM(2);placeChangeBlack.setVisible(false);placeChangeBlack_1.setVisible(false);gamePhaseTimeCounter=0;++gamePhase;}}if(gamePhase==8){gamePhaseTimeCounter=0;boss=new Mob(2,bossLabel,thisMenu);bossLabel.setBounds(375, 175, 100, 100);boss.reflash();bossLabel.setVisible(true);++gamePhase;}if(gamePhase==9){if(boss.HP>0)boss.reflash();else{bossLabel.setVisible(false);MobHPBar.setBounds(600, 25, 184*boss.HP/boss.MaxHP, 25);MobHPText.setText(""+boss.HP+"/"+boss.MaxHP);++gamePhase;gamePhaseTimeCounter=0;TitleLabelT.setText(fatherMenu.textLib.textData[43]);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[39]);SubTitleLabelT.setVisible(true);saveData(3);startQuestCompleteBGM();endBattleBGM();}}if(gamePhase==12){movementSpeed=0;if(gamePhaseTimeCounter<50)gamePhaseTimeCounter=50;++gamePhaseTimeCounter;if(gamePhaseTimeCounter==51){placeChangeBlack.setBounds(0, 0, 784, 362);placeChangeBlack.setVisible(true);placeChangeBlack_1.setBounds(0, 0, 784, 362);placeChangeBlack_1.setVisible(true);TitleLabelT.setVisible(false);SubTitleLabelT.setVisible(false);groundArrayLabel.setVisible(false);for(int i=0;i<325;++i){GiantBackGround[i].setBounds(32*(i%25),32*(int)(i/25), 32, 32);GiantBackGround[i].setIcon(new ImageIcon("resource/ground7.png"));}playerX=50;playerY=200;placeNameLabel.setText(fatherMenu.textLib.textData[15]);TitleLabelT.setText(fatherMenu.textLib.textData[15]);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[44]);SubTitleLabelT.setVisible(true);}if(gamePhaseTimeCounter>=100&&gamePhaseTimeCounter<=150){placeChangeBlack.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);placeChangeBlack_1.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);}if(gamePhaseTimeCounter==151){startNewBattleBGM(3);placeChangeBlack.setVisible(false);placeChangeBlack_1.setVisible(false);gamePhaseTimeCounter=0;++gamePhase;}}if(gamePhase==14){gamePhaseTimeCounter=0;boss=new Mob(3,bossLabel,thisMenu);bossLabel.setBounds(375, 175, 100, 100);boss.reflash();bossLabel.setVisible(true);++gamePhase;}if(gamePhase==15){if(boss.HP>0)boss.reflash();else{bossLabel.setVisible(false);MobHPBar.setBounds(600, 25, 184*boss.HP/boss.MaxHP, 25);MobHPText.setText(""+boss.HP+"/"+boss.MaxHP);++gamePhase;gamePhaseTimeCounter=0;TitleLabelT.setText(fatherMenu.textLib.textData[45]);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[39]);SubTitleLabelT.setVisible(true);saveData(4);startQuestCompleteBGM();endBattleBGM();}}if(gamePhase==18){movementSpeed=0;if(gamePhaseTimeCounter<50)gamePhaseTimeCounter=50;++gamePhaseTimeCounter;if(gamePhaseTimeCounter==51){placeChangeBlack.setBounds(0, 0, 784, 362);placeChangeBlack.setVisible(true);placeChangeBlack_1.setBounds(0, 0, 784, 362);placeChangeBlack_1.setVisible(true);TitleLabelT.setVisible(false);SubTitleLabelT.setVisible(false);groundArrayLabel.setVisible(false);//需要修改开始for(int i=0;i<325;++i){GiantBackGround[i].setBounds(32*(i%25),32*(int)(i/25), 32, 32);GiantBackGround[i].setIcon(new ImageIcon("resource/ground8.png"));}//需要修改结束playerX=50;playerY=200;//需要修改开始placeNameLabel.setText(fatherMenu.textLib.textData[70]);TitleLabelT.setText(fatherMenu.textLib.textData[70]);TitleLabelT.setForeground(Color.LIGHT_GRAY);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[71]);SubTitleLabelT.setForeground(Color.LIGHT_GRAY);//需要修改结束SubTitleLabelT.setVisible(true);}if(gamePhaseTimeCounter>=100&&gamePhaseTimeCounter<=150){placeChangeBlack.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);placeChangeBlack_1.setBounds((int)((gamePhaseTimeCounter-100)*0.02*784), 0, 784, 362);}if(gamePhaseTimeCounter==151){startNewBattleBGM(4);//需要修改placeChangeBlack.setVisible(false);placeChangeBlack_1.setVisible(false);gamePhaseTimeCounter=0;++gamePhase;}}if(gamePhase==20){gamePhaseTimeCounter=0;boss=new Mob(4,bossLabel,thisMenu);//需要修改bossLabel.setBounds(375, 175, 100, 100);//需要修改boss.reflash();bossLabel.setVisible(true);++gamePhase;}if(gamePhase==21){if(boss.HP>0)boss.reflash();else{bossLabel.setVisible(false);MobHPBar.setBounds(600, 25, 184*boss.HP/boss.MaxHP, 25);MobHPText.setText(""+boss.HP+"/"+boss.MaxHP);++gamePhase;gamePhaseTimeCounter=0;//需要修改开始TitleLabelT.setText(fatherMenu.textLib.textData[72]);TitleLabelT.setForeground(Color.LIGHT_GRAY);TitleLabelT.setVisible(true);SubTitleLabelT.setText(fatherMenu.textLib.textData[39]);TitleLabelT.setForeground(Color.LIGHT_GRAY);SubTitleLabelT.setVisible(true);//saveData(4);//需要修改完成startQuestCompleteBGM();endBattleBGM();}}if(gamePhase==endPhase){endBattleBGM();winMenu WM=new winMenu(thisMenu);WM.setVisible(true);thisMenu.setVisible(false);map.stop();}if(gamePhase==-1){if(boss.HP>0)boss.reflash();++gamePhaseTimeCounter;if(gamePhaseTimeCounter>250){endBattleBGM();loseMenu LM=new loseMenu(thisMenu);LM.setVisible(true);thisMenu.setVisible(false);map.stop();}}//刷新bossBarif(boss!=null&&gamePhase%6==3){MobHead.setIcon(new ImageIcon("resource/MobHead_"+boss.MobId+".png"));MobName.setText(""+boss.Name);MobHPBar.setBounds(600, 25, 184*boss.HP/boss.MaxHP, 25);MobHPText.setText(""+boss.HP+"/"+boss.MaxHP);}//玩家试图面向方向if(attackCounter==0&&defenceCounter==0){if(pressingD==1&&pressingW==0&&pressingS==0){playingRole.tryingFace=0;}else if(pressingD==1&&pressingW==1){playingRole.tryingFace=45;}else if(pressingW==1&&pressingA==0&&pressingD==0){playingRole.tryingFace=90;}else if(pressingW==1&&pressingA==1){playingRole.tryingFace=135;}else if(pressingA==1&&pressingW==0&&pressingS==0){playingRole.tryingFace=180;}else if(pressingA==1&&pressingS==1){playingRole.tryingFace=225;}else if(pressingS==1&&pressingA==0&&pressingD==0){playingRole.tryingFace=270;}else if(pressingS==1&&pressingD==1){playingRole.tryingFace=315;}}playingRole.setFace();humanIconContorler="resource/human_"+playingRole.face;if(attackCounter==0&&defenceCounter==0&&(pressingW==1||pressingS==1||pressingA==1||pressingD==1))//进行转向{double d_angle=(playingRole.facingAngle-playingRole.tryingFace+360)%360;//0-180为顺时针if(d_angle<=rotationSpeed||d_angle>=360-rotationSpeed)//旋转功能{playingRole.facingAngle=playingRole.tryingFace;}else{if(d_angle>0&&d_angle<=180){playingRole.facingAngle-=rotationSpeed;}else{playingRole.facingAngle+=rotationSpeed;}}}if(attackCounter==0&&defenceCounter==0&&(pressingW==1||pressingS==1||pressingA==1||pressingD==1))//进行移动{++activeCounter;playerX+=(int)(movementSpeed*Math.cos(playingRole.facingAngle*Math.PI/180));playerY-=(int)(movementSpeed*Math.sin(playingRole.facingAngle*Math.PI/180));checkPlayerLocation();if(activeCounter>=10)//10Tick一次 切换移动图片{activeCounter=0;playingRole.lastMoveActive=(playingRole.lastMoveActive+1)%4;}if(playingRole.lastMoveActive==2)humanIconContorler=humanIconContorler+'_'+0;else if(playingRole.lastMoveActive==3)humanIconContorler=humanIconContorler+'_'+2;elsehumanIconContorler=humanIconContorler+'_'+playingRole.lastMoveActive;}if(pressingJ==1&&attackCounter==0&&defenceCounter==0&&playingRole.HP>0)//发动攻击{attackCounter=1;}if(attackCounter>0&&attackCounter<=8*attackSpeed)//正在攻击{++attackCounter;if(attackCounter>0&&attackCounter<=attackSpeed){humanIconContorler=humanIconContorler+'_'+3;}else if(attackCounter<=2*attackSpeed){humanIconContorler=humanIconContorler+'_'+4;}else if(attackCounter<=3*attackSpeed){humanIconContorler=humanIconContorler+'_'+5;}else if(attackCounter<=4*attackSpeed){humanIconContorler=humanIconContorler+'_'+6;}else if(attackCounter<=5*attackSpeed){humanIconContorler=humanIconContorler+'_'+7;}else if(attackCounter<=6*attackSpeed){humanIconContorler=humanIconContorler+'_'+8;}else if(attackCounter<=7*attackSpeed){humanIconContorler=humanIconContorler+'_'+9;}}if(attackCounter==3*attackSpeed)//完成攻击{playingRole.costEnergy(10);fatherMenu.startNewSound("sweep"+Calculator.randomInt(1,3)+".wav",false,1);playingRole.doAttack();}if(attackCounter>8*attackSpeed)//结束硬直{attackCounter=0;}if(defenceCooldown>0){--defenceCooldown;}if(perfectDefenceTime>0){--perfectDefenceTime;}if(pressingK==1&&attackCounter==0&&defenceCounter==0&&defenceCooldown==0)//发动防御{perfectDefenceTime=5;defenceCounter=1;playingRole.defenceStance=true;playingRole.isBlocked=false;}if(defenceCounter==1){if(pressingK==0)//解除格挡{defenceCounter=0;playingRole.defenceStance=false;if(playingRole.isBlocked==true)defenceCooldown=0;elsedefenceCooldown=30;}else{humanIconContorler=humanIconContorler+'_'+10;}}humanIconContorler=humanIconContorler+".png";if(boss!=null&&playingRole.HP>0){if(playerY>=boss.bossY&&usingPlayerLabel==0)//玩家应当盖住boss,但是却没盖住{usingPlayerLabel=1;playerLabel[0].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);playerLabel[1].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);playerLabel[0].setVisible(false);playerLabel[1].setVisible(true);}if(playerY<boss.bossY&&usingPlayerLabel==1)//boss应当盖住玩家,但是却没盖住{usingPlayerLabel=0;playerLabel[0].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);playerLabel[1].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);playerLabel[0].setVisible(true);playerLabel[1].setVisible(false);}}playerLabel[usingPlayerLabel].setIcon(new ImageIcon(humanIconContorler));playerLabel[usingPlayerLabel].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);lblNewLabel_6.setBounds((int)playerX+(int)(25*Math.cos(playingRole.facingAngle*Math.PI/180))-2, (int)playerY-(int)(25*Math.sin(playingRole.facingAngle*Math.PI/180))-2, 4,4);lblNewLabel_7.setBounds((int)playerX+(int)(25*Math.cos(playingRole.tryingFace*Math.PI/180))-2, (int)playerY-(int)(25*Math.sin(playingRole.tryingFace*Math.PI/180))-2, 4,4);}public void startNewBattleBGM(int bossID){if(fatherMenu.settingLib.settings[1].equals("1")){if(battleBGM!=null)battleBGM.endMusic();battleBGM=new CMusic("boss"+bossID+".wav",true,1);battleBGM.start();}}public void endBattleBGM(){if(battleBGM!=null)battleBGM.endMusic();}public void startQuestCompleteBGM(){if(questCompleteBGM!=null)questCompleteBGM.endMusic();questCompleteBGM=new CMusic("QuestComplete.wav",false,1);questCompleteBGM.start();}}

感谢各位的阅读,以上就是“Java实现经典游戏飞机大战的代码怎么写”的内容了,经过本文的学习后,相信大家对Java实现经典游戏飞机大战的代码怎么写这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯