亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現蘿卜勇者游戲

發布時間:2022-02-09 14:20:57 來源:億速云 閱讀:118 作者:小新 欄目:開發技術

這篇文章主要介紹了Java如何實現蘿卜勇者游戲,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

    主要設計

    1、 用Swing庫做可視化界面

    2、鍵盤監聽,用WSAD可以控制光標移動,J是確定,K是取消,游戲中,WSAD移動,J攻擊,K格擋。

    3、 用線程實現畫面刷新。

    4、用流實現音樂播放。

    5、支持多種語言,支持用戶翻譯語言文件。

    6、在幫助界面下,按鍵盤1234567890可以啟用秘籍(傳奇模式:一刀砍999血)

    7、使用的是JDK8

    8、文件編碼GBK

    功能截圖

    游戲開始

    Java如何實現蘿卜勇者游戲

    游戲幫助

    Java如何實現蘿卜勇者游戲

    游戲設置

    Java如何實現蘿卜勇者游戲

    選擇不同的關卡

    Java如何實現蘿卜勇者游戲

    游戲效果

    Java如何實現蘿卜勇者游戲

    怪物攻擊效果

    Java如何實現蘿卜勇者游戲

    代碼實現

    啟動類

    @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;i<proIsUsed.length;++i)
    			proIsUsed[i]=false;
    		for(int i=0;i<parIsUsed.length;++i)
    			parIsUsed[i]=false;
    		playingProfessionID=professionID;
    		this.playingSave=playingSave;
    		gamePhase=(partID-1)*6;
    		this.fatherMenu=fatherMenu;
    		this.isCheating=isCheating;
    		//this.isCheating=true;//測試用
    		g_int1=0;
    		playerX=50;
    		playerY=200;
    		thisMenu=this;
    		activeCounter=0;
    		attackCounter=0;
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(fatherMenu.getBounds());
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		//轉場黑幕 第100層
    		placeChangeBlack=new JLabel("");
    		placeChangeBlack.setIcon(new ImageIcon("resource/black.png"));
    		placeChangeBlack.setVisible(true);
    		placeChangeBlack_1=new JLabel("");
    		placeChangeBlack_1.setIcon(new ImageIcon("resource/black.png"));
    		placeChangeBlack_1.setVisible(true);
    		placeChangeBlack.setBounds(0, 0, 784, 362);
    		placeChangeBlack_1.setBounds(0, 0, 784, 362);
    		//contentPane.add(placeChangeBlack);
    		
    		JPanel panel_1 = new JPanel();
    		panel_1.setBounds(0, 0, 784, 50);
    		contentPane.add(panel_1);
    		panel_1.setLayout(null);
    
    		panel_1.add(placeChangeBlack_1);
    		
    		JLabel lblNewLabel = new JLabel("");//頭像
    		lblNewLabel.setBounds(0, 0, 50, 50);
    		lblNewLabel.setIcon(new ImageIcon("resource/HPBarHead.png"));
    		panel_1.add(lblNewLabel);
    		
    		lblNewLabel_2B = new JLabel("");//血量字
    		lblNewLabel_2B.setForeground(Color.WHITE);
    		lblNewLabel_2B.setHorizontalAlignment(SwingConstants.CENTER);
    		lblNewLabel_2B.setBounds(50, 0, 200, 25);
    		panel_1.add(lblNewLabel_2B);
    		
    		lblNewLabel_3B = new JLabel("");//體力字
    		lblNewLabel_3B.setForeground(Color.WHITE);
    		lblNewLabel_3B.setHorizontalAlignment(SwingConstants.CENTER);
    		lblNewLabel_3B.setBounds(50, 25, 200, 25);
    		panel_1.add(lblNewLabel_3B);
    		
    		lblNewLabel_2 = new JLabel("");//血條
    		lblNewLabel_2.setBounds(50, 0, 200, 25);
    		lblNewLabel_2.setIcon(new ImageIcon("resource/RedBar.png"));
    		panel_1.add(lblNewLabel_2);
    		
    		lblNewLabel_3 = new JLabel("");//體力條
    		lblNewLabel_3.setBounds(50, 25, 200, 25);
    		lblNewLabel_3.setIcon(new ImageIcon("resource/GreenBar.png"));
    		panel_1.add(lblNewLabel_3);
    		
    		JLabel lblNewLabel_1 = new JLabel("");//血條體力條背景
    		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
    		lblNewLabel_1.setBounds(50, 0, 200, 50);
    		lblNewLabel_1.setIcon(new ImageIcon("resource/HPBarBG.png"));
    		panel_1.add(lblNewLabel_1);
    
    		JLabel lblNewLabel_4 = new JLabel("J");
    		lblNewLabel_4.setForeground(Color.GRAY);
    		lblNewLabel_4.setFont(new Font("黑體", Font.BOLD, 30));
    		lblNewLabel_4.setHorizontalAlignment(SwingConstants.CENTER);
    		lblNewLabel_4.setBounds(250, 0, 50, 50);
    		panel_1.add(lblNewLabel_4);
    		
    		JLabel lblNewLabel_5 = new JLabel("");
    		lblNewLabel_5.setFont(new Font("宋體", Font.PLAIN, 20));
    		lblNewLabel_5.setHorizontalAlignment(SwingConstants.CENTER);
    		lblNewLabel_5.setBounds(250, 0, 50, 50);
    		lblNewLabel_5.setIcon(new ImageIcon("resource/skillJ.png"));
    		panel_1.add(lblNewLabel_5);
    
    		JLabel skillKLabel = new JLabel("K");
    		skillKLabel.setForeground(Color.GRAY);
    		skillKLabel.setFont(new Font("黑體", Font.BOLD, 30));
    		skillKLabel.setHorizontalAlignment(SwingConstants.CENTER);
    		skillKLabel.setBounds(300, 0, 50, 50);
    		panel_1.add(skillKLabel);
    		
    		JLabel skillKLabel2 = new JLabel("");
    		skillKLabel2.setFont(new Font("宋體", Font.PLAIN, 20));
    		skillKLabel2.setHorizontalAlignment(SwingConstants.CENTER);
    		skillKLabel2.setBounds(300, 0, 50, 50);
    		skillKLabel2.setIcon(new ImageIcon("resource/skillK.png"));
    		panel_1.add(skillKLabel2);
    		
    		placeNameLabel = new JLabel("");
    		placeNameLabel.setFont(new Font("宋體", Font.PLAIN, 30));
    		placeNameLabel.setHorizontalAlignment(SwingConstants.CENTER);
    		placeNameLabel.setBounds(350, 0, 200, 50);
    		panel_1.add(placeNameLabel);
    		
    		JLabel placeNameLabel2 = new JLabel("");
    		placeNameLabel2.setHorizontalAlignment(SwingConstants.CENTER);
    		placeNameLabel2.setBounds(350, 0, 200, 50);
    		placeNameLabel2.setIcon(new ImageIcon("resource/placeNameBackGround.png"));
    		panel_1.add(placeNameLabel2);
    		
    		MobHead = new JLabel("");
    		MobHead.setHorizontalAlignment(SwingConstants.CENTER);
    		MobHead.setBounds(550, 0, 50, 50);
    		MobHead.setIcon(new ImageIcon("resource/MobHead_0.png"));
    		panel_1.add(MobHead);
    		
    		MobName = new JLabel("");
    		MobName.setHorizontalAlignment(SwingConstants.CENTER);
    		MobName.setBounds(600, 0, 184, 25);
    		panel_1.add(MobName);
    		
    		MobHPText = new JLabel("");
    		MobHPText.setForeground(Color.WHITE);
    		MobHPText.setHorizontalAlignment(SwingConstants.CENTER);
    		MobHPText.setBounds(600, 25, 184, 25);
    		panel_1.add(MobHPText);
    		
    		MobHPBar = new JLabel("");
    		MobHPBar.setHorizontalAlignment(SwingConstants.CENTER);
    		MobHPBar.setBounds(600, 25, 184, 25);
    		MobHPBar.setIcon(new ImageIcon("resource/RedBar.png"));
    		panel_1.add(MobHPBar);
    		
    		JLabel MobNameBG = new JLabel("");
    		MobNameBG.setHorizontalAlignment(SwingConstants.CENTER);
    		MobNameBG.setBounds(600, 0, 184, 50);
    		MobNameBG.setIcon(new ImageIcon("resource/MobNameBG.png"));
    		panel_1.add(MobNameBG);	
    		
    		panel = new JPanel();
    		panel.setBounds(0, 50, 784, 362);
    		contentPane.add(panel);
    		viewMap=panel;
    		panel.setLayout(null);
    
    		panel.add(placeChangeBlack);
    		
    		lblNewLabel_7 = new JLabel("");//玩家tryingFace指示器(暫時停用)
    		lblNewLabel_7.setBounds((int)playerX, (int)playerY, 5, 5);
    		lblNewLabel_7.setIcon(new ImageIcon("resource/moveDeraction2.png"));
    		lblNewLabel_7.setVisible(false);
    		panel.add(lblNewLabel_7);
    		
    		
    		//第99層
    		//標題
    		TitleLabelT = new JLabel("");
    		TitleLabelT.setFont(new Font("黑體", Font.PLAIN, 45));
    		TitleLabelT.setHorizontalAlignment(SwingConstants.CENTER);
    		TitleLabelT.setBounds(100, 50, 584, 50);
    		TitleLabelT.setVisible(true);
    		panel.add(TitleLabelT);
    		//副標題
    		SubTitleLabelT = new JLabel("");
    		SubTitleLabelT.setFont(new Font("黑體", Font.PLAIN, 25));
    		SubTitleLabelT.setHorizontalAlignment(SwingConstants.CENTER);
    		SubTitleLabelT.setBounds(100, 100, 584, 50);
    		SubTitleLabelT.setVisible(true);
    		panel.add(SubTitleLabelT);
    		
    		//預先創建粒子效果的Label,第6層
    		for(int i=0;i<maxParCount;++i)
    		{
    			parLabel[i]=new JLabel("");
    			panel.add(parLabel[i]);
    		}
    		
    		//boss上方的玩家,第5層
    		playerLabel[1]=new JLabel("");
    		playerLabel[1].setHorizontalAlignment(SwingConstants.CENTER);
    		playerLabel[1].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerHeight, playerWidth);
    		playerLabel[1].setIcon(new ImageIcon("resource/HumanRight_0.png"));
    		playerLabel[1].setVisible(false);
    		panel.add(playerLabel[1]);
    		
    		//bossLabel,第4.5層
    		bossLabel = new JLabel("");
    		panel.add(bossLabel);
    
    		//boss下方的玩家,第4層
    		playerLabel[0]=new JLabel("");
    		playerLabel[0].setHorizontalAlignment(SwingConstants.CENTER);
    		playerLabel[0].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerHeight, playerWidth);
    		playerLabel[0].setIcon(new ImageIcon("resource/HumanRight_0.png"));
    		playerLabel[0].setVisible(true);
    		panel.add(playerLabel[0]);
    		
    		//玩家面向方向指示器,第3層
    		lblNewLabel_6 = new JLabel("");
    		lblNewLabel_6.setBounds((int)playerX, (int)playerY, 5, 5);
    		lblNewLabel_6.setIcon(new ImageIcon("resource/moveDeraction.png"));
    		panel.add(lblNewLabel_6);
    		
    		//預先創建發射物的Label,第2層
    		for(int i=0;i<maxProCount;++i)
    		{
    			proLabel[i]=new JLabel("");
    			panel.add(proLabel[i]);
    		}
    		
    		//創建地面箭頭,第1.5層
    		groundArrayLabel=new JLabel("");
    		groundArrayLabel.setBounds(709,156, 50, 50);
    		groundArrayLabel.setIcon(new ImageIcon("resource/groundArray.png"));
    		groundArrayLabel.setVisible(false);
    		panel.add(groundArrayLabel);
    		
    		//創建地面Label,第1層
    		for(int i=0;i<400;++i)
    		{
    			GiantBackGround[i]=new JLabel("");
    			GiantBackGround[i].setVisible(true);
    			panel.add(GiantBackGround[i]);
    		}	
    		
    		playingRole=new Role(professionID,thisMenu);
    		
    		KeyLininter kl=new KeyLininter(thisMenu);
            this.addKeyListener(kl);
    		
    		map=new Map(thisMenu);
    		map.start();		
    	}
    	
    	//發射物相關
    	public int addProjectile(Projectile pro)
    	{
    		existProCount=proHead.getLength();
    		if(existProCount<maxProCount)
    		{
    			proHead.insert(new proLink(pro));
    			int tempFinder=0;
    			for(int i=0;i<maxProCount;++i)
    			{
    				if(proIsUsed[i]==false)
    				{
    					proIsUsed[i]=true;
    					tempFinder=i;
    					break;
    				}
    			}
    			return tempFinder;
    		}
    		return -1;
    	}
    	public void removeProjectile(int id)
    	{
    		proLabel[id].setVisible(false);
    		proIsUsed[id]=false;
    	}
    	public void allProjectilesFly()
    	{
    		proLink tempNode=proHead;
    		while(tempNode.next!=null)
    		{
    			tempNode=tempNode.next;
    			tempNode.data.doFly();
    		}
    	}
    	//發射物相關結束
    	
    	//粒子效果相關
    	public int addParticle(particle par)
    	{
    		existParCount=parHead.getLength();
    		if(existParCount<maxParCount)
    		{
    			parHead.insert(new parLink(par));
    			int tempFinder=0;
    			for(int i=0;i<maxParCount;++i)
    			{
    				if(parIsUsed[i]==false)
    				{
    					parIsUsed[i]=true;
    					tempFinder=i;
    					break;
    				}
    			}
    			return tempFinder;
    		}
    		return -1;
    	}
    	public void removeParticle(int id)
    	{
    		parLabel[id].setVisible(false);
    		parIsUsed[id]=false;
    	}
    	public void allParticlesFly()
    	{
    		parLink tempNode=parHead;
    		while(tempNode.next!=null)
    		{
    			tempNode=tempNode.next;
    			tempNode.data.doFly();
    		}
    	}
    	public void checkPlayerLocation()//檢測玩家位置 如果超出地圖 則拉回地圖
    	{
    		if(playerX<playerWidth/2)
    			playerX=playerWidth/2;
    		if(playerX>784-playerWidth/2)
    			playerX=784-playerWidth/2;
    		if(playerY<playerHeight/2)
    			playerY=playerHeight/2;
    		if(playerY>362-playerHeight/2)
    			playerY=362-playerHeight/2;	
    	}
    	
    	@SuppressWarnings("unused")
    	public void saveData(int part)
    	{
    		if(Integer.parseInt(fatherMenu.saveSelectMenu.savedData[playingSave].split(" ")[1])<part)
    		{
    			String[] temp= {
    					fatherMenu.saveSelectMenu.savedData[playingSave].split(" ")[0],
    					fatherMenu.saveSelectMenu.savedData[playingSave].split(" ")[1]
    			};
    			fatherMenu.saveSelectMenu.savedData[playingSave]=""+playingProfessionID+" "+part;
    			fatherMenu.saveSelectMenu.saveSaves();
    		}
    	}
    	
    	@SuppressWarnings({ "deprecation" })
    	public void modTick()//每秒執行50次
    	{
    		if(attackCounter==0&&defenceCounter==0)
    			playingRole.regenerate();
    		if(playingRole.HP>0)
    		{
    			//刷新體力條
    			lblNewLabel_3.setBounds(50, 25, (int) (200*playingRole.energy/playingRole.MaxEnergy), 25);
    			lblNewLabel_3B.setText(""+(int)playingRole.energy+"/"+(int)playingRole.MaxEnergy);
    			//刷新血條
    			lblNewLabel_2.setBounds(50, 0, (int) (200*playingRole.HP/playingRole.MaxHP), 25);
    			lblNewLabel_2B.setText(""+(int)playingRole.HP+"/"+(int)playingRole.MaxHP);			
    		}
    		else if(gamePhase!=-1)
    		{
    			boss.target=null;
    			gamePhaseTimeCounter=0;
    			gamePhase=-1;
    			movementSpeed=0;
    			TitleLabelT.setText("YOU DIED");
    			TitleLabelT.setVisible(true);
    			playerLabel[usingPlayerLabel].setVisible(false);
    			lblNewLabel_6.setVisible(false);
    			lblNewLabel_3.setBounds(50, 25, (int) (200*playingRole.energy/playingRole.MaxEnergy), 25);
    			lblNewLabel_3B.setText(""+(int)playingRole.energy+"/"+(int)playingRole.MaxEnergy);
    			lblNewLabel_2.setBounds(50, 0, (int) (200*playingRole.HP/playingRole.MaxHP), 25);
    			lblNewLabel_2B.setText(""+(int)playingRole.HP+"/"+(int)playingRole.MaxHP);		
    		}
    		
    		
    		
    		++gameTime;
    		allProjectilesFly();
    		allParticlesFly();
    		if(gamePhase==0)
    		{
    			if(gamePhaseTimeCounter<50)
    				gamePhaseTimeCounter=50;
    			++gamePhaseTimeCounter;
    			if(gamePhaseTimeCounter==51)
    			{
    				System.out.println("啟動控制臺...");
    				movementSpeed=0;
    				placeChangeBlack.setBounds(0, 0, 784, 362);
    				placeChangeBlack_1.setBounds(0, 0, 784, 362);
    				placeChangeBlack.setVisible(true);
    				placeChangeBlack_1.setVisible(true);
    				TitleLabelT.setVisible(false);
    				SubTitleLabelT.setVisible(false);
    				groundArrayLabel.setVisible(false);
    				for(int i=0;i<128;++i)//初始化第一關地面
    				{
    					String backGroundContorler="resource/ground";
    					GiantBackGround[i].setBounds(50*(i%16),50*(int)(i/16), 50, 50);
    					if(Math.random()<0.9)
    						backGroundContorler=backGroundContorler+"1.png";
    					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<boss.bossY&&usingPlayerLabel==1)//boss應當蓋住玩家,但是卻沒蓋住
    			{
    				usingPlayerLabel=0;
    				playerLabel[0].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);
    				playerLabel[1].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);
    				playerLabel[0].setVisible(true);
    				playerLabel[1].setVisible(false);
    			}
    		}
    		playerLabel[usingPlayerLabel].setIcon(new ImageIcon(humanIconContorler));
    		playerLabel[usingPlayerLabel].setBounds((int)playerX-playerWidth/2, (int)playerY-playerHeight/2, playerWidth, playerHeight);
    		lblNewLabel_6.setBounds((int)playerX+(int)(25*Math.cos(playingRole.facingAngle*Math.PI/180))-2, (int)playerY-(int)(25*Math.sin(playingRole.facingAngle*Math.PI/180))-2, 4,4);
    		lblNewLabel_7.setBounds((int)playerX+(int)(25*Math.cos(playingRole.tryingFace*Math.PI/180))-2, (int)playerY-(int)(25*Math.sin(playingRole.tryingFace*Math.PI/180))-2, 4,4);
    	}
    	
    	public void startNewBattleBGM(int bossID)
    	{
    		if(fatherMenu.settingLib.settings[1].equals("1"))
    		{
    			if(battleBGM!=null)
    				battleBGM.endMusic();
    			battleBGM=new CMusic("boss"+bossID+".wav",true,1);
    			battleBGM.start();
    		}
    	}
    	
    	public void endBattleBGM()
    	{
    		if(battleBGM!=null)
    			battleBGM.endMusic();
    	}
    	
    	public void startQuestCompleteBGM()
    	{
    		if(questCompleteBGM!=null)
    			questCompleteBGM.endMusic();
    		questCompleteBGM=new CMusic("QuestComplete.wav",false,1);
    		questCompleteBGM.start();
    	}
    	
    }

    感謝你能夠認真閱讀完這篇文章,希望小編分享的“Java如何實現蘿卜勇者游戲”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    寿阳县| 紫云| 钦州市| 凌海市| 济南市| 东安县| 淮北市| 海兴县| 平远县| 科技| 睢宁县| 三河市| 临沂市| 威宁| 锡林郭勒盟| 长岛县| 隆安县| 长宁县| 台安县| 阿拉善右旗| 文登市| 大丰市| 新泰市| 博兴县| 普陀区| 巴彦淖尔市| 开鲁县| 襄汾县| 南郑县| 兰考县| 南召县| 玉田县| 炉霍县| 枣庄市| 富宁县| 洮南市| 贡山| 驻马店市| 阳谷县| 红河县| 南京市|