⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamemanager.java

📁 一个以音乐为主题的杀怪手机游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
   					if( mapY >= 0 ){
   						mapY -= 16;
   						winY --;
   						if (winY < 0){
   							winY = 0;
   							manMove = true;
   						}
   					}
   				  break;
   				case 1:
   					mapY -= manSpeed;
   					if ( mapY <= -16){
   						mapY += 16;
   						winY ++;
   						if ( winY > currentMap_Under.length-H/16){
   							winY = currentMap_Under.length-H/16;
   							manMove = true;
   						}
   					}
   					break;
   				case 2:
   					mapX += manSpeed;
   					if ( mapX >= 0 ){
   						mapX -= 16;
   						winX --;
   						if (winX < 0){
   							winX = 0;
   							manMove = true;
   						}
   					}
   				  break;
   				case 3:
   					mapX -= manSpeed;
   					if ( mapX <= -16 ){
   						mapX +=16;
   						winX ++;
   						if ( winX >currentMap_Under[0].length-W/16+1  ){
   							winX = currentMap_Under[0].length-W/16+1;
   							manMove = true;
   						}
   					}
   					break;
   			}
   			mapMove = false;
   	}
  
   
    //================== 背景 =====================
    for (int j=0;j< H/16+1;j++){
			for (int  i=0;i<W/16+1;i++){
				g2.setClip(mapX+i*16,mapY+j*16,16,16);
				g2.drawImage( ground,mapX+i*16   ,mapY+(j-(Math.abs(currentMap_Under[winY+j][winX+i])-1)  )*16  ,0);
		  }
    }
   g2.setClip(0,0,W,H);
	g.drawImage( BufferImage , 0,0,0);
		//================== 敵人 =====================
		 
		
   if ( !overDraw ) foe(g);
	  //================== 魔法 =====================
    
   if (useMagic && direction == 0 && currentMagic != 0 && !magicHit) magic(g);
   
   	//================== 主角 =====================
		   
   	  if  (  (!useMagic || !magicStart || currentMagic ==0) && !snow){
   		     g.setClip(manX -10 ,manY -34,22 ,36);
  		     g.drawImage( man , manX -10 - (pAdd %4)*22  ,manY -34 - direction *36 ,0);
  		     g.setClip(0,0,W,H);
  	  }else{
  	  	    if( magicStart && !snow){
  	  	      switch(currentMagic){
  	  	      	case 1:
  	  	       		g.setClip(manX -10 ,manY -34,39 ,36);
  		         		g.drawImage( man , manX -10 - 125 ,manY -34 - direction *36 ,0);
  		         		g.setClip(0,0,W,H);
  		         		magicStart = !magicStart;
  		         	break;
  		         	case 2:
  	  	       		g.setClip(manX -17 ,manY -34,39 ,36);
  		         		g.drawImage( man , manX -17 - 88 ,manY -34 - direction *36 ,0);
  		         		g.setClip(0,0,W,H);
  		         		magicStart = !magicStart;
  		         	break;
  		         
  		        }
  		        
  		      }
  	  }
  		//g.setColor(0,255,0);
   		//g.drawRect(mapX+(manPositionX-winX)*16,mapY+(manPositionY-winY)*16,16,16);
   		//g.fillRect( manX ,manY ,2,2);
   		// g.setColor(0,0,233);// ***************************
	   	// g.fillRect((magicPositionX-winX)*16+mapX,(magicPositionY-winY)*16+mapY,16,16);
   		
   		
   		
   		if ( overDraw )  foe(g);
   		
   	if( magicHit || (useMagic && (direction != 0 || currentMagic == 0) )) {magic(g);}
   		//System.out.println("a");
   /*		if(bossBluting){
 	  		bossMagicX -= bossMagicStepX;if(bossMagicX>16){bossMagicX =0;bossMagicPositionX++;}else if(bossMagicX<-16){bossMagicX =0;bossMagicPositionX--;}
 	  		bossMagicY -= bossMagicStepY;if(bossMagicY>16){bossMagicY =0;bossMagicPositionY++;}else if(bossMagicY<-16){bossMagicY =0;bossMagicPositionY--;}
 	  		if( bossMagicPositionX > winX+W/16 || bossMagicPositionX <winX ||bossMagicPositionY <winY ||bossMagicPositionY > winY+H/16 ){bossMagicPositionX =0;bossMagicPositionY=0;bossBluting = false;}
 	  		g.setClip(mapX+bossMagicX+(bossMagicPositionX-winX)*16 ,mapY+bossMagicY+(bossMagicPositionY-winY)*16 -10,18,18);
 	  	  g.drawImage(magicEffect ,mapX+ bossMagicX+(bossMagicPositionX-winX)*16 ,mapY+bossMagicY+(bossMagicPositionY-winY)*16-10 ,0);/////////////////////
 	  	  g.setClip(0,0,W,H);
 	  	 
 	  	  if ( bossMagicPositionX == manPositionX && bossMagicPositionY == manPositionY ) { manHealth -= 2; bossBluting = false; if( manHealth ==0){snow = true;}}
 	  	}*/
 	  	//snow = ! snow;
		//================== 前景 =====================
	 	for (int j=0;j< H/16+1;j++){
			for (int  i=0;i<W/16+1;i++){
				g.setClip(mapX+i*16,mapY+j*16,16,16);
			  if (currentMap_Over[winY+j][winX+i] != 0 )
			  	g.drawImage( ground,mapX+i*16,mapY+(j-(currentMap_Over[winY+j][winX+i]-1))*16,0);
			  	if ( snow)g.drawImage( netPoint,mapX+i*16,mapY+j*16,0);
			 
			}
		
			
		} 
        g.setClip(0,0,W,H); 
		//==================  NPC 事件驅動 =====================
		//System.out.println("currentMagic"  + currentMagic);
		//courseDrive(g);
		//======================== 主角狀態 ============================
		if( !snow){
			g.drawImage(manState,0,0,0);
			g.setColor(92,217,0);
			g.fillRect(17,5,manHealth/2,2);
			g.setColor(255,1,114);
			g.fillRect(17,8,manMagic/2,2);
			g.setColor(255,250,12);
			g.fillRect(17,11,manDart,2);
			 
			//-------------------------------------
			g.setColor(0,0,240);
			g.drawRect(W-mapHeight-1,1,mapHeight,mapWidth);
			g.setColor(57,176,234);
			g.drawRect(W-mapHeight,2,mapHeight-2,mapWidth-2);
			g.setColor(55,3,1);
			g.fillRect(W-mapHeight-1+(manPositionX),1+(manPositionY),2,2);
			if(foeAdd%4!=0){g.setColor(255,101,9);}else{g.setColor(167,20,20);}
			g.drawRect(W-mapHeight-1+(manPositionX),1+(manPositionY),2,2);
			
			/////////////////////////////////////////////////////////////////////
			for (  int  j = 0; j< currentMap_channel.length ;j ++){
	  			 g.setColor(0,200,22);
	  			 g.fillRect(W-mapHeight+currentMap_channel[j][0],2+currentMap_channel[j][1],currentMap_channel[j][2]*2,currentMap_channel[j][3]*2);
	  			 g.setColor(95,255,77);
	  			 g.drawRect(W-mapHeight+currentMap_channel[j][0],2+currentMap_channel[j][1],currentMap_channel[j][2]*2,currentMap_channel[j][3]*2);
				if(  manPositionX >= currentMap_channel[j][0] && manPositionX <=currentMap_channel[j][0] +currentMap_channel[j][2] && manPositionY >= currentMap_channel[j][1]  && manPositionY <= currentMap_channel[j][1]+currentMap_channel[j][3]){
					gameState = stateLoading; 
					currentMapID = currentMap_channel[j][4];
					winX =currentMap_channel[j][5];
					winY=currentMap_channel[j][6];
					mapX = 0;
		 			mapY = 0;
		 
		 			
		 			manPositionX = currentMap_channel[j][7];
		 			manPositionY = currentMap_channel[j][8];
		 			
		 			manX = (manPositionX - winX)*16;
		 			manY = (manPositionY - winY)*16;
		 			  
            				tmpManPositionX = manPositionX;
            				tmpManPositionY = manPositionY;
					break ;
					
					}
		  	}
		  	 
			//-------------------------------------
			/////////////
			//g.setColor(33,255,2);
			//g.drawString("當前劇情"+courseNum,64,64,0);
			////////////
			if ( !hint.equals("*")){
			   g.setColor(100,255,50);
			   g.drawString(hint,70,4,0);
			   showHint ++ ;
			   if (showHint >50)
			   {
				   showHint =0;
				   hint = "*";
			   }
			}
	  }
	  g.translate(0,-4);
		if ( showSubMenu){
			 canTalking = false;
			 g.setClip(W-105,H-53,110,60);
			   
				for(int i = 0;W-105 +i*netPoint.getWidth()<W;i++){
					for(int j =0;W-105 +j*netPoint.getHeight()<H;j++){
	 					 g.drawImage(netPoint,W-105 +i*netPoint.getWidth() , H-52+j*netPoint.getHeight(),0);
	  			}
	 			}
				for(int i = 0;W-105 +i*lineX.getWidth()<W ;i++){
			//System.out.println(i);
					g.drawImage(lineX,W-105 +i*lineX.getWidth() , H-53,0);
		  		g.drawImage(lineY,W-105 , H-53+i*lineY.getHeight() ,0);
		  		g.drawImage(lineY,W-54 , H-53+i*lineY.getHeight() ,0);
	      }
	    
	      g.setClip(0,0,W,H);
			   g.drawImage(lu,W-107 , H-55  ,0);
			 if(foeAdd%2 ==0){g.setColor(220,10,10);}else{g.setColor(120,10,10);}
			 g.fillRect(W-52,H-51+subMenuSlt*12  ,56,11);
			 g.setClip (W-51,H-51,49,47);
			 g.drawImage(menuPic,W-51,H-159,0);
			 /////////////////////////////////////////////
			  g.setClip (0,0,W,H);
			 switch(manWeapon){
			 	
			 	case 1:
			 					 g.drawImage(long1,W-97,H-46,0);
			 	break;
			 	case 2:
			 					 g.drawImage(long2,W-97,H-46,0);
			 	break;
			 	case 3:
			 					 g.drawImage(long3,W-97,H-46,0);
			 	break;
			 }
			 /////////////////////////////////////////////
			 //g.setClip(0,0,W,H);
			 if ( keyState[0] ){keyState[0] = false;subMenuSlt --;if (subMenuSlt <0) {subMenuSlt = 0;}}else{
			 	if ( keyState[1]){keyState[1] = false;
			 		subMenuSlt ++;if (subMenuSlt > 3) {subMenuSlt =3;}
			  }
			 }
			 if (keyState[6]){//if (keyState[6]){ 
				 keyState[6] = false;
			 	switch(subMenuSlt){
			 		case 0:
			 		 showSubMenu = false;
					//System.out.println("!!!!!");
			 		break;
			 		case 1:
			 		 saveAndRead(true);
			 		 showSubMenu = false;
			 		 subMenuSlt = 0;
			 		break;
			 		case 2:
			 		  musicCtrl = !musicCtrl;
			 		  // music();
			 		   showSubMenu = false;
			 		 subMenuSlt = 0;
			 		break;
			 		case 3:
			 		 cover = load("cover");
			 		 gameState = stateStart;
			 		 showSubMenu = false;
			 		 subMenuSlt = 0;
			 		break;
			 	}
			 }
			 if (keyState[5]){ keyState[5] = false;showSubMenu = !showSubMenu;subMenuSlt = 0;}
		}else{triangle(g,W-10,H-6);}
    	 g.translate(0,0);
	 
		 
	//	System.out.println("b");
		//================ 魔法選單 ===================
		if( !talking && !snow){
			g.setColor(40,135,23);
			g.fillRoundRect(2 + currentMagic *17,H - magicMenu.getHeight()-2 ,15,15,2,2);
			g.drawImage(magicMenu ,2,H - magicMenu.getHeight()-2,0);//顯示魔法種類圖片
 			g.setClip(2 + currentMagic *17,H - magicMenu.getHeight()-2 ,16,17);
 			g.drawImage( magicMenuColorful,2 ,H - magicMenu.getHeight()-2 ,0);
	    g.setClip(0,0,W,H);
	   
	    
	  }else if ( !snow){
	  	//=============== 對話方塊 ================
	  	drawDialog(g,currentDialogue,1,H*2/3);
	  }
	  
	  //System.out.println(manHealth);
	  if(snow){
	  	//System.out.println("!!");
	  	g.setColor(0,0,0);
	  	g.fillRect(0,0,W,H/5);
	  	g.fillRect(0,H*4/5,W,H/5+4);
	  	if (slt ==0 && manHealth >0){
	  		
	  		if( keyState[6]){keyState[6] = false;snow = false;}
	  		drawDialog(g,gameShow,5,H/5+5);
	  		
	  		}else if ( manHealth <=0){ 
	  			g.drawImage(gameOver,W/2,H/2,17);
	  			if( keyState[6]){
	  				keyState[6] = false;
	  				snow = false;
					  slt =0;
	  		    gameState = stateStart;
	          cover = load("cover");
	  				
	  				}
	  			}
	  	
	  }
	//  System.out.println("c");
	  
	  	//=============== 通道檢測 ================
	 	
//	  System.out.println("d");
	
	}
  

  
  

	//================================對話方塊========================================
	int tmpPoint = 0;
	int line = 0 ; 
	int subStringLength  = 0;
	int fontHeight = 0;
	private void drawDialog(Graphics g, String s ,int dialogX ,int dialogY){
		 
		fontHeight = g.getFont().getHeight();
		//----------------------------------------------
		if (   !s.equals(gameShow) ){
		
		//g.setColor(33,33,33);
		 g.setClip(dialogX+3,dialogY,W-2*(dialogX+3),H-141);
		//g.fillRect(dialogX+3,dialogY,W-2*(dialogX+3),H-141);
		for(int i = 0;dialogX +i*netPoint.getWidth()<W-2*(dialogX+3);i++){
			for(int j =0;dialogX +j*netPoint.getHeight()<dialogY+H-142;j++){
	  g.drawImage(netPoint,dialogX+3 +i*netPoint.getWidth() , dialogY+j*netPoint.getHeight(),0);
	  }
	 }
		for(int i = 0;dialogX +i*lineX.getWidth()<W-2*(dialogX+3);i++){
			//System.out.println(i);
		g.drawImage(lineX,dialogX +i*lineX.getWidth() , dialogY,0);
		g.drawImage(lineX,dialogX +i*lineX.getWidth() , dialogY+H-142,0);
	 }
	 g.setClip(0,0,W,H);
		 g.drawImage(lu,dialogX , dialogY-2,0);
		g.drawImage(ld,dialogX , dialogY+49,0);
		g.drawImage(ru,W-dialogX -20 , dialogY-2,0);
		g.drawImage(rd,W-dialogX -20, dialogY+49,0);
	}
		
		//----------------------------------------------
	  g.setColor(249,240,240);
	  subStringLength = 0;
	  for (line = tmpPoint;line< s.length(); line ++){
	   
	  	if ( s.charAt(line) == '<' ){subStringLength++;g.setColor(250,90,12);continue;}
	  		 
	  	if ( s.charAt(line) == '>' ){
	  		subStringLength++;
	  		dialogY+=fontHeight;
	  		g.setColor(249,240,240);
	  		continue;
	  	}
	  	if ( s.charAt(line) == '[' ){subStringLength++;g.setColor(160,249,250);continue;}
	  	if ( s.charAt(line) == ']' ){subStringLength++;g.setColor(249,240,240);continue;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -