千家信息网

Java如何实现萝卜勇者游戏

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍了Java如何实现萝卜勇者游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。主要设计1、 用Swing库做可视化界面2
千家信息网最后更新 2025年11月13日Java如何实现萝卜勇者游戏

这篇文章主要介绍了Java如何实现萝卜勇者游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    主要设计

    1、 用Swing库做可视化界面

    2、键盘监听,用WSAD可以控制光标移动,J是确定,K是取消,游戏中,WSAD移动,J攻击,K格挡。

    3、 用线程实现画面刷新。

    4、用流实现音乐播放。

    5、支持多种语言,支持用户翻译语言文件。

    6、在帮助界面下,按键盘1234567890可以启用秘籍(传奇模式:一刀砍999血)

    7、使用的是JDK8

    8、文件编码GBK

    功能截图

    游戏开始

    游戏帮助

    游戏设置

    选择不同的关卡

    游戏效果

    怪物攻击效果

    代码实现

    启动类

    @SuppressWarnings("serial")public class TestWindowBuilder extends JFrame {        TextLibrary textLib;        settingLoader settingLib;        private JPanel contentPane;        boolean isCheating;        saveSelect saveSelectMenu;        int[] startMenuPointer=new int[1];        JLabel lblNewLabel1;        JLabel lblNewLabel2;        JLabel lblNewLabel3;        JLabel lblNewLabel3_2;        JLabel lblNewLabel3_1;        JLabel lblNewLabel4;        JLabel lblNewLabel5;        JLabel lblNewLabel6;                CMusicLink CMLHead=new CMusicLink(1);        CMusicLink CMLLast=new CMusicLink(2);                boolean sawExplain=true;                CMusic menuBGMusic;                /**         * Launch the application.         */        public static void main(String[] args) {                EventQueue.invokeLater(new Runnable() {                        public void run() {                                try {                                        TestWindowBuilder frame = new TestWindowBuilder();                                        frame.setVisible(true);                                } catch (Exception e) {                                        e.printStackTrace();                                }                        }                });        }        /**         * Create the frame.         */public TestWindowBuilder() {                this.setTitle("CARROT MAN II");                this.setIconImage(new ImageIcon("resource/down4.png").getImage());                int screenWidth=Calculator.setInside(ScreenSize.getWidth(), 800, 99999);                int screenHeight=Calculator.setInside(ScreenSize.getHeight(), 450, 99999);                                System.out.println("启动控制台222...");                                CMLHead.next=CMLLast;                CMLLast.prev=CMLHead;                                settingLib=new settingLoader();                settingLib.loadSetting();//加载设置                settingLib.saveSetting();                textLib=new TextLibrary();                textLib.saveText();//创建默认的语言文件                textLib.loadText(settingLib.settings[0]);                startNewMenuBGMusic(1);                /*游戏阶段:                 * 0开始菜单                 * */                int gamePhase=0;                isCheating=false;                /*开始菜单指针                 * 0开始                 * 1帮助                 * 2退出                 * */                startMenuPointer[0]=0;                int allSMPCount=5;//总指针数                TestWindowBuilder testMenu=this;                                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                setBounds((screenWidth-800)/2, (screenHeight-450)/2, 800, 450);                contentPane = new JPanel();                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));                setContentPane(contentPane);                contentPane.setLayout(null);                                JPanel mainMenu = new JPanel();                mainMenu.setBounds(0, 0, 784, 412);                contentPane.add(mainMenu);                mainMenu.setLayout(null);                                lblNewLabel1 = new JLabel();//菜单标题                lblNewLabel1.setBounds(192, 10, 400, 150);                lblNewLabel1.setIcon(new ImageIcon("resource/MenuTitle.png"));                mainMenu.add(lblNewLabel1);                                lblNewLabel2 = new JLabel();//开始                lblNewLabel2.setBounds(10, 193, 764, 43);                lblNewLabel2.setHorizontalAlignment(SwingConstants.CENTER);                lblNewLabel2.setFont(new Font("Adobe 黑体 Std R", Font.PLAIN, 21));                lblNewLabel2.setForeground(new Color(200,200,200));                mainMenu.add(lblNewLabel2);                                lblNewLabel3 = new JLabel();//帮助                lblNewLabel3.setBounds(10, 223, 764, 43);                lblNewLabel3.setHorizontalAlignment(SwingConstants.CENTER);                lblNewLabel3.setFont(new Font("Adobe 黑体 Std R", Font.PLAIN, 21));                lblNewLabel3.setForeground(new Color(200,200,200));                mainMenu.add(lblNewLabel3);                                lblNewLabel3_2 = new JLabel();//设置                lblNewLabel3_2.setBounds(10, 253, 764, 43);                lblNewLabel3_2.setHorizontalAlignment(SwingConstants.CENTER);                lblNewLabel3_2.setFont(new Font("Adobe 黑体 Std R", Font.PLAIN, 21));                lblNewLabel3_2.setForeground(new Color(200,200,200));                mainMenu.add(lblNewLabel3_2);                                lblNewLabel3_1 = new JLabel();//语言                lblNewLabel3_1.setBounds(10, 283, 764, 43);                lblNewLabel3_1.setHorizontalAlignment(SwingConstants.CENTER);                lblNewLabel3_1.setFont(new Font("Adobe 黑体 Std R", Font.PLAIN, 21));                lblNewLabel3_1.setForeground(new Color(200,200,200));                mainMenu.add(lblNewLabel3_1);                                lblNewLabel4 = new JLabel();//退出                lblNewLabel4.setBounds(10, 313, 764, 43);                lblNewLabel4.setHorizontalAlignment(SwingConstants.CENTER);                lblNewLabel4.setFont(new Font("Adobe 黑体 Std R", Font.PLAIN, 21));                lblNewLabel4.setForeground(new Color(200,200,200));                mainMenu.add(lblNewLabel4);                                lblNewLabel5 = new JLabel(textLib.textData[5]);//底部提示                lblNewLabel5.setBounds(10, 371, 764, 31);                lblNewLabel5.setHorizontalAlignment(SwingConstants.CENTER);                lblNewLabel5.setFont(new Font("Adobe 黑体 Std R", Font.PLAIN, 15));                lblNewLabel5.setForeground(new Color(200,200,200));                mainMenu.add(lblNewLabel5);                                lblNewLabel6 = new JLabel();//半透明黑背景                lblNewLabel6.setBounds(267, 193, 250, 209);                lblNewLabel6.setIcon(new ImageIcon("resource/mainMenuButtonBackGround.png"));                mainMenu.add(lblNewLabel6);                                JLabel MenuBackGroundLabel = new JLabel();//白色背景                MenuBackGroundLabel.setBounds(0, 0, 800, 450);                MenuBackGroundLabel.setIcon(new ImageIcon("resource/mainMenuBackGround.png"));                           mainMenu.add(MenuBackGroundLabel);                                reflash();                                                                //键盘监听器                this.addKeyListener(new KeyAdapter() {                        public void keyPressed(KeyEvent e) {                                char cmd=e.getKeyChar();                                if(gamePhase==0)//开始菜单                                {                                        if(sawExplain==false)                                        {                                                sawExplain=true;                                                StartView sv=new StartView(testMenu);                                                sv.setVisible(true);                                                testMenu.setVisible(false);                                        }                                        else                                        {                                                if(TestWindowBuilder.charEqualsIgnoreCase(cmd, 'w'))                                                {                                                        startMenuPointer[0]=(startMenuPointer[0]-1+allSMPCount)%allSMPCount;                                                        startNewSound("pointerMove.wav",false,1);                                                }                                                if(TestWindowBuilder.charEqualsIgnoreCase(cmd, 's'))                                                {                                                        startMenuPointer[0]=(startMenuPointer[0]+1)%allSMPCount;                                                        startNewSound("pointerMove.wav",false,1);                                                }                                                reflash();                                                if(TestWindowBuilder.charEqualsIgnoreCase(cmd, 'j'))                                                {                                                        if(startMenuPointer[0]==0)                                                        {                                                                saveSelectMenu=new saveSelect(testMenu);                                                                saveSelectMenu.setVisible(true);                                                                testMenu.setVisible(false);                                                                startNewSound("menuChange.wav",false,1);                                                        }                                                        if(startMenuPointer[0]==1)                                                        {                                                                HelpMenu helpMenu=new HelpMenu(testMenu);                                                                helpMenu.setVisible(true);                                                                testMenu.setVisible(false);                                                                startNewSound("menuChange.wav",false,1);                                                        }                                                        if(startMenuPointer[0]==2)                                                        {                                                                settingMenu sMenu=new settingMenu(testMenu);                                                                sMenu.setVisible(true);                                                                testMenu.setVisible(false);                                                                startNewSound("menuChange.wav",false,1);                                                        }                                                        if(startMenuPointer[0]==3)                                                        {                                                                settingLanguage settingMenu=new settingLanguage(testMenu);                                                                settingMenu.setVisible(true);                                                                testMenu.setVisible(false);                                                                startNewSound("menuChange.wav",false,1);                                                        }                                                        if(startMenuPointer[0]==4)                                                        {                                                                startNewSound("menuChange.wav",false,1);                                                                System.exit(0);                                                        }                                                }                                        }                                }                        }                });        }        public void reflash()        {                lblNewLabel1.setText(textLib.textData[1]);                lblNewLabel2.setText(textLib.textData[6]);                lblNewLabel3.setText(textLib.textData[3]);                lblNewLabel3_2.setText(textLib.textData[60]);                lblNewLabel3_1.setText(textLib.textData[49]);                lblNewLabel4.setText(textLib.textData[4]);                                      lblNewLabel5.setText(textLib.textData[5]);                                                      if(startMenuPointer[0]==0)                {                        lblNewLabel2.setText(textLib.textData[6]+" <--");                }                if(startMenuPointer[0]==1)                {                        lblNewLabel3.setText(textLib.textData[3]+" <--");                }                if(startMenuPointer[0]==2)                {                        lblNewLabel3_2.setText(textLib.textData[60]+" <--");                }                if(startMenuPointer[0]==3)                {                        lblNewLabel3_1.setText(textLib.textData[49]+" <--");                }                if(startMenuPointer[0]==4)                {                        lblNewLabel4.setText(textLib.textData[4]+" <--");                }        }                public void startNewMenuBGMusic(int prepare)        {                if(settingLib.settings[1].equals("1"))                {                        if(menuBGMusic!=null)                                menuBGMusic.endMusic();                        menuBGMusic=new CMusic("menuMusic.wav",true,30000);                        menuBGMusic.start();                }                else if(prepare==1)                {                        if(menuBGMusic!=null)                                menuBGMusic.endMusic();                        menuBGMusic=new CMusic("menuMusic.wav",true,30000);                        menuBGMusic.start();                        menuBGMusic.pauseMusic();                }        }                public void startNewSound(String soundName,boolean isReplay,int replayDelay)//开启新音效        {                if(settingLib.settings[2].equals("1"))                        new CMusicLink(CMLLast,soundName,isReplay,replayDelay);        }                /**         * 判断字母a和字母b是否相同(无视大小写)         * @param a 字母a         * @param b 字母b         * @return true:字母a和字母b相同 | false:字母a和字母b不同,或ab中存在非字母         */        public static boolean charEqualsIgnoreCase(char a,char b)        {                if(((int)a)>=65&&((int)a)<=90)//大写                {                        if(a==b)                                return true;                        if(a+32==b)                                return true;                }                if(((int)a)>=97&&((int)a)<=122)//小写                {                        if(a==b)                                return true;                        if(a-32==b)                                return true;                }                return false;        }}

    键盘监听

    public class KeyLininter extends KeyAdapter{        GameMenu gameMenu;                public KeyLininter(GameMenu gameMenu)        {                this.gameMenu=gameMenu;        }                        public void keyPressed(KeyEvent e) {                char cmd = e.getKeyChar();                if(cmd=='w'||cmd=='W')                {                        gameMenu.pressingW=1;                }                if(cmd=='s'||cmd=='S')                {                        gameMenu.pressingS=1;                }                if(cmd=='a'||cmd=='A')                {                        gameMenu.pressingA=1;                }                if(cmd=='d'||cmd=='D')                {                        gameMenu.pressingD=1;                }                if(cmd=='j'||cmd=='J')                {                        gameMenu.pressingJ=1;                }                if(cmd=='k'||cmd=='K')                {                        gameMenu.pressingK=1;                }        }        public void keyReleased(KeyEvent e)        {                char cmd = e.getKeyChar();                if(cmd=='w'||cmd=='W')                {                        gameMenu.pressingW=0;                }                if(cmd=='s'||cmd=='S')                {                        gameMenu.pressingS=0;                }                if(cmd=='a'||cmd=='A')                {                        gameMenu.pressingA=0;                }                if(cmd=='d'||cmd=='D')                {                        gameMenu.pressingD=0;                }                if(cmd=='j'||cmd=='J')                {                        gameMenu.pressingJ=0;                }                if(cmd=='k'||cmd=='K')                {                        gameMenu.pressingK=0;                }        }}

    核心算法

    @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-734        double playerY;//0-312        int 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;//游戏通关的阶段        /*第一关 0         * 第二关 6         * */        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-499                int existPar=0;        int parTeamPointer=0;        JPanel panel;                Mob boss;                int allPhaseCount=1;        int gameTime=0;                Map map;                /**         * Create the frame.         */        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;i784-playerWidth/2)                        playerX=784-playerWidth/2;                if(playerY362-playerHeight/2)                        playerY=362-playerHeight/2;             }                @SuppressWarnings("unused")        public void saveData(int part)        {                if(Integer.parseInt(fatherMenu.saveSelectMenu.savedData[playingSave].split(" ")[1])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),50*(int)(i/16), 50, 50);                                        if(Math.random()<0.9)                                                backGroundContorler=backGroundContorler+"1.png";                                        else                                                backGroundContorler=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();                        }                }                                //刷新bossBar                if(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;                        else                                humanIconContorler=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;                                else                                        defenceCooldown=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

    感谢你能够认真阅读完这篇文章,希望小编分享的"Java如何实现萝卜勇者游戏"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

    0