Java如何实现萝卜勇者游戏
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Java如何实现萝卜勇者游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。主要设计1、 用Swing库做可视化界面2
千家信息网最后更新 2026年11月03日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如何实现萝卜勇者游戏"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
玩家
黑体
体力
帮助
攻击
效果
篇文章
菜单
语言
键盘
阶段
移动
地面
宋体
指针
文件
背景
速度
黑幕
一关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融科技
互联网科技股
上海喔噻互联网科技有限公司
蓝思科技飞鸽互联网
互联网和科技技术
互联网 科技创业
互联网科技公司电话
世界互联网领先科技成果
中国互联网金融科技基金
中正互联网科技招聘
互联网科技实习生岗位职责
互联网科技寓意
青岛科技大学互联网大赛研究生
洛阳昕诺飞互联网科技有限公司
翼展科技 首家互联网医院
互联网数据科技专业
上海创道互联网络科技有限公司
互联网科技融合创新
银川新华互联网科技学校是国营吗
山东亿川互联网科技有限责任公司
互联网科技官网
成都互联网科技公司
赫美联合互联网科技
顺玮阁互联网科技
上游互联网科技
互联网大会黑科技排名
工业互联网科技创业
兰石爱特工业互联网科技分公司
互联网科技博主张洲
亚光科技低轨卫星互联网