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

📄 gamecanvas.java.bak

📁 一个以音乐为主题的杀怪手机游戏
💻 BAK
📖 第 1 页 / 共 5 页
字号:
			               		break;
			               
			               }
			          }else	if (enemyX > playerX ){
			          	enemyAction = enemyEscape_L;
			          }else{
			          	enemyAction = enemyEscape_R;
			          }
                    	   }
               		break;
               		case 4://忍者
                    		if ( !enemyBulleting){
                         		if( Math.abs(enemyY - playerY) < 50  &&  r.nextInt()%5 > 3){
                              			if( enemyX>playerX ){
                                   			enemyAction = enemyAttack_L;
                             		 	}else{
                                   			enemyAction = enemyAttack_R;
                              			}
                        		}
                    		}
                    		if(Math.abs(enemyX - playerX) < playerRadiiX*3){
                    			if( enemyX > playerX ){
                    				enemyAction = enemyEscape_R;
                    			}else{
                    				enemyAction = enemyEscape_L;
                    			}
                    		}
                    	break;
                    	case 5://老鼠
                    		if( Math.abs(enemyX - playerX) < playerRadiiX && Math.abs(enemyY - playerY) < 5 ){
			          if( playerX - enemyX >=  playerRadiiX + 10 ){
			               enemyAction = enemyAttack_R;
			          }else if( enemyX - playerX >=  playerRadiiX + 10 ){
			               enemyAction = enemyAttack_L;
			          }
                    		}
                    	break;
                    	case 11://青蛙
                    		if( Math.abs(enemyX - playerX) < playerRadiiX*4 && Math.abs(enemyY - playerY) < 5 ){
			          if( playerX - enemyX >=  playerRadiiX + 10 ){
			               enemyAction = enemyAttack_R;
			          }else if( enemyX - playerX >=  playerRadiiX + 10 ){
			               enemyAction = enemyAttack_L;
			          }
                    	   	}
                    	break;
                    	case 12://变异人
                    		if ( !enemyBulleting){
                         		if( Math.abs(enemyY - playerY) < 50  &&  r.nextInt()%5 > 3){
                              			if( enemyX>playerX ){
                                   			enemyAction = enemyAttack_L;
                             		 	}else{
                                   			enemyAction = enemyAttack_R;
                              			}
                        		}
                    		}
                    	break;
                    	case 13://心魔
                    		if ( !enemyBulleting){
                         		if( Math.abs(enemyY-playerY) < 50  &&  r.nextInt()%5 > 3){
                              			if( enemyX>playerX ){
                                   			enemyAction = enemyAttack_L;
                             		 	}else{
                                   			enemyAction = enemyAttack_R;
                              			}
                        		}
                    		}
                    	break;
                    	case 14://漂浮的M
                    		//NULL!~
                    	break;
	     }
		enemyActionIndex++;
		if( enemyActionIndex > enemyActionList[enemyAction].length -1 ){
			enemyActionIndex = 0;
			if( enemyAction == 5 && enemyAction == 11){
				//enemyAction = -1;
			}
			enemyActionAdd++;
			if( r.nextInt()%10 > 0 || enemyActionAdd >= 4 ){
			     enemyActionAdd = 0;
			     if( enemyX < playerX ){
				     enemyAction = enemyEscape_R;
				}else{
				     enemyAction = enemyEscape_L;
				}
		     }
		}
		if( r.nextInt()%10 > 6 && (enemyAction == enemyRun_L || enemyAction == enemyRun_R)){
			if( enemyX < playerX ){
				enemyAction = enemyRun_R;
			}else{
				enemyAction = enemyRun_L;
			}
		}
		
		switch(enemyAction){
		     case enemyRun_R:
				if( moveAble(enemyX+playerRadiiX*2,enemyY-5) && r.nextInt()%10 > -3/*&& moveAble(enemyX-playerRadiiX*2,enemyY-5) */){
					enemyX += enemySpeed;
		 		}else if ( (!moveAble(enemyX+playerRadiiX*2,enemyY-5) &&  enemyFallValue == 0 && r.nextInt()%5 > 0) ||  r.nextInt()%100>92){
						enemyAction = enemyJump_R;
						enemyFallValue = -13;
				}
			break;
			case enemyRun_L:
				if( moveAble(enemyX-playerRadiiX*2,enemyY-5) && r.nextInt()%10 > -3/* && moveAble(enemyX+playerRadiiX*2,enemyY-5)*/){
					enemyX -= enemySpeed;
		 		}else if ( (!moveAble(enemyX-playerRadiiX*2,enemyY-5) && enemyFallValue == 0 && r.nextInt()%5 > 0 ) ||  r.nextInt()%100>92){
					enemyAction = enemyJump_L;
					enemyFallValue = -13;
				}
			break;
			case enemyJump_R:
				if( moveAble(enemyX+playerRadiiX,enemyY-5)){
					enemyX += enemySpeed;
		 		}
			break;
			case enemyJump_L:
				if( moveAble(enemyX-playerRadiiX,enemyY-5)){
					enemyX -= enemySpeed;
		 		}
			break;
			case enemyEscape_R:
				if( moveAble(enemyX-playerRadiiX,enemyY-5)){
					enemyX -= enemySpeed;
		 		}else{
		 			enemyAction = enemyRun_R;
		 		}
		 		if( r.nextInt()%10>4){
		 		     enemyAction = enemyRun_R;
		 	     }
			break;
			case enemyEscape_L:
				if( moveAble(enemyX+playerRadiiX,enemyY-5)){
					enemyX += enemySpeed;
		 		}else{
		 			enemyAction = enemyRun_L;
		 		}
		 		if( r.nextInt()%10>4){
		 		     enemyAction = enemyRun_L;
		 	     }
			break;
			case enemyAttack_R://处理攻击细节
			     switch( enemyStyle){
			          case 1:
			          case 2:
			          case 3:
			          case 5:
			          break;
			          
			          case 4://忍者
			               if( !enemyBulleting ){
			                   // System.out.println("  BULLETING~ a");
			                    enemyBulleting = true;
			                    enemyAction = enemyEscape_R;
			                    enemyBulletX = enemyX;
			                    enemyBulletY = enemyY-22;
			                    enemyBulletStepX = 4;
			                  //  System.out.println("  BULLETING~ b");
			               }
			          break;
			          
			          
			          case 11://青蛙
			          	if( !enemyBulleting ){
			                   // System.out.println("  BULLETING~ a");
			                    enemyBulleting = true;
			                    enemyAction = enemyEscape_R;
			                    enemyBulletX = enemyX;
			                    enemyBulletY = enemyY-22;
			                    enemyBulletStepX = 1;
			                  //  System.out.println("  BULLETING~ b");
			               }
			          break;
			          case 12://变异人
			          	if( !enemyBulleting ){
			                   // System.out.println("  BULLETING~ a");
			                    enemyBulleting = true;
			                    enemyAction = enemyEscape_R;
			                    enemyBulletX = enemyX;
			                    enemyBulletY = enemyY-22;
			                    enemyBulletStepX = 3;
			                  //  System.out.println("  BULLETING~ b");
			               }
			          break;
			          case 13://心魔
			          	if( !enemyBulleting ){
			                   // System.out.println("  BULLETING~ a");
			                    enemyBulleting = true;
			                    enemyAction = enemyEscape_R;
			                    enemyBulletX = enemyX;
			                    enemyBulletY = enemyY-22;
			                    enemyBulletStepX = 1;
			                    enemyBulletStepY = -2;
			                  //  System.out.println("  BULLETING~ b");
			               }
			          break;
			          case 14://漂浮的M
			          	if( !enemyBulleting ){
			                   // System.out.println("  BULLETING~ a");
			                    enemyBulleting = true;
			                    enemyAction = enemyEscape_R;
			                    enemyBulletX = enemyX;
			                    enemyBulletY = enemyY-22;
			                    enemyBulletStepX = 7;
			                    
			                  //  System.out.println("  BULLETING~ b");
			               }
			          break;
			     }
			break;
			case enemyAttack_L:
			     switch( enemyStyle){
			          case 1:
			          case 2:
			          case 3:
			              
			          break;
			          case 4:
			               if( !enemyBulleting ){
			                   // System.out.println("  BULLETING~ a");
			                    enemyBulleting = true;
			                    enemyAction = enemyEscape_L;
			                    enemyBulletX = enemyX;
			                    enemyBulletY = enemyY-22;
			                    enemyBulletStepX = -1;
			                  //  System.out.println("  BULLETING~ b");
			               }
			          break;
			          case 5:
			          break;
			          case 11:
			          break;
			          case 12:
			          break;
			          case 13:
			          break;
			          case 14:
			          break;
			          
			     }
			     
			break;
			
			case enemyFaint_R:
				if( moveAble(enemyX-playerRadiiX,enemyY-5)  && Add % 2 ==0){
					enemyX--;
			  }
			break;
			case enemyFaint_L:
				if( moveAble(enemyX+playerRadiiX,enemyY-5) && Add % 2 ==0){
					enemyX++;
			  }
			break;
		}
	}/////
		if( enemyStyle != 14)enemyGravity();
          if( enemyBulleting) enemyBulletUpdate();
          
          
          if( !moveAble(enemyX,enemyY) && enemyY > mapY+(getPosY(enemyY) - winY)*32 ){
			enemyY = mapY+(getPosY(enemyY) - winY)*32;
			if( enemyAction == enemyJump_R){
				enemyAction = enemyRun_R;
			}else if ( enemyAction == enemyJump_L){
				enemyAction = enemyRun_L;
			}
			enemyFallValue = 0;
		}
		////////////////////////////////////////////////////////
	}
public void enemyBulletUpdate(){
	if ( enemyNormX != 0 ){
		enemyBulletX += enemyNormX;
		
	}
	if ( enemyNormY != 0 ){
		enemyBulletY += enemyNormY;
	}
	switch(enemyStyle){
		case 4:
			
     			enemyBulletX += enemyBulletStepX;
     			enemyBulletY += enemyBulletStepY;
     			if( enemyBulletX< -10 || enemyBulletX > W+10) enemyBulleting = false;
     		break;
     		case 13:
     			enemyBulletX += enemyBulletStepX;
     			enemyBulletY += enemyBulletStepY;
     		break;
     	}
}


public void enemyGravity(){
	     if ( enemyNormX != 0 ){
			enemyX += enemyNormX;
		
		}
		if ( enemyNormY != 0 ){
			enemyY += enemyNormY;
		}
		if(moveAble(enemyX,enemyY)||enemyAction == enemyJump_L||enemyAction == enemyJump_R){
			enemyFallValue += worldGravity;
			enemyY += enemyFallValue;
			if( !moveAble(enemyX,enemyY) && enemyY > mapY+(getPosY(enemyY) - winY)*32 ){
				enemyY = mapY+(getPosY(enemyY) - winY)*32;
				if( enemyAction == enemyJump_R){
					enemyAction = enemyRun_R;
				}else if ( enemyAction == enemyJump_L){
					enemyAction = enemyRun_L;
				}
			     enemyFallValue = 0;
			}
		}else{
			enemyFallValue = 0;
		}
}
	///////////////////////////////////////////////////////////////////////////////////////////////////
	public void paintEnemy(Graphics g){
		if( enemyHealth> 0)drawEnemyAction(enemyX+worldShakeX , enemyY+worldShakeY ,enemyActionList[enemyAction][enemyActionIndex],g);
		drawBullet(g);
	}
	public void drawEnemyAction(int enemyX , int enemyY ,int action ,Graphics g){
		for(int i =0; i<= enemyActionData[action].length-6; i+=6){
			g.setClip(enemyX+enemyActionData[action][i] , enemyY+enemyActionData[action][i+1] , enemyActionData[action][i+2] , enemyActionData[action][i+3]);
			g.drawImage(enemyImage ,enemyX+enemyActionData[action][i]+enemyActionData[action][i+4] , enemyY+enemyActionData[action][i+1] + enemyActionData[action][i+5],0);
		}
		g.setClip(0,0,W,H);
	}
	public void drawBullet(Graphics g){
	     switch(enemyStyle){
	     	case 4:
	     		g.setClip( enemyBulletX , enemyBulletY ,7,7);
	     		g.drawImage(enemyImage,enemyBulletX-197-(Add%2)*7 , enemyBulletY ,0);
	     	break;
	     
	     }
	}
}





//------------------------------- 剧情/场景 -------------------------------------------
public int sceneY = 50;
public int sceneHeight = 25;
public int sceneTmpPoint = 3;
public int sceneEndFlag = 0;
public final int sceneStart = 0;//屏幕切换(百页窗效果)
public final int sceneLoad = 1;//把sceneData里的图 读进来
public final int scenePlaying = 2;//播放动画,判断所有图层运动结束
public final int sceneEsc = 3;//屏幕切换(百页窗效果)
public final int sceneStop = 4;//游戏状态切换
public int sceneState = sceneStart;
public int[][] sceneData = {
              //初始坐标,  图片号(负) ,曲线折点数,切片宽高 , 偏移值,   步进值 , 祯速 ,  循环次数  |
/*| layer  0|*/{ 0,   0,      -4,        0,         -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-3,-4,-5,-1-2,-6,-7,-8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-3,-4,-5,-1-2,-6,-7,-8,-2,-2,-2},

/*| layer  1|*/{ 0,   0,       1,        0,          40,   25,   -1, -25,   1,   0,    2,       14,    /*|*/40,   25,   -1, -25,   -1,   1,    7,       14,    /*|*/40,   25,   -1, -25,   -1,   1,    7,       14,    /*|*/40,   25,   -1, -25,   -1,   1,    7,       14},
/*| layer  2|*/{ 208, 50,      2,        0,          30,   25,   -20, 1,  -10,   0,    3,       14,    /*|*/30,   25,   -20, 1,    -1,   0,    3,       14,    /*|*/30,   25,   -20, 1,    -1,   1,    3,       14,    /*|*/30,   25,   -20, 1,    -1,   1,    3,       14},
/*| layer  3|*/{ 0,   50,      3,        0,          30,   25,    0,  0,    2,   0,    1,       24 ,   /*|*/30,   25,    0,  0,    -12,  1,    1,       14 , /*|*/30,   25,    0,  0,    -12,  1,    1,       14  , /*|*/30,   25,    0,  0,    -12,  1,    1,       14 }
/*| layer  4|*/
/*| layer  5|*/
/*| layer  6|*/
/*| layer  7|*/

};
public Image[] sceneImage;

public void gameScene(){
	
	 switch(sceneState){
	 		case sceneStart:
	 			sceneImage = new Image[sceneData.length-1];
	 			if(Add>26){
	 				sceneState = sceneLoad;
	 			}
	 		break;
	 		case sceneLoad:
	 		     System.out.println(" load Scene!");
	 			for(int i = 0; i< sceneData.length-1; i++){
	 				sceneImage[i] = loadImage("sceneImage"+sc

⌨️ 快捷键说明

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