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如何实现萝卜勇者游戏"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
玩家
黑体
体力
帮助
攻击
效果
篇文章
菜单
语言
键盘
阶段
移动
地面
宋体
指针
文件
背景
速度
黑幕
一关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
共守网络安全主题海报
保证网络安全的建议
数据库 for mac
互联网科技公司装修设计深圳
医疗软件开发强制资质标准
网站数据如何存入数据库
联通网络安全监测中心
wifi传感网络技术
数据库实例名新建
网络安全博士生
蚌埠点餐系统软件开发费用
用友 6数据库密码
陕西云端erp软件开发
宁夏护苗网络安全进课堂
仁王2离线无法连接服务器
创建sql服务器登录账号
玩具海报设计软件开发
我蚌埠软件开发的企业
psv还能连服务器吗
怀旧服rp服务器体验
网银找不到服务器
博智网络安全物理隔离软件
怎么提问数据库相关问题
我要看网络安全手抄报的
台湾软件开发待遇
数据库对自动化专业重要吗
实况足球中期数据库
大数据网络安全可视化方案
梦幻手游服务器等级78囤什么
没有数据库结构文档