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

📄 pl.java

📁 java写的2.5D忍者游戏..涉及到深度缓冲技术...可控制玩家攻击,和npc的AI,碰撞等等
💻 JAVA
字号:
import javax.microedition.lcdui.Image;

public class PL extends MySprite 
{
	int m;
	int vy;
	int n;
	int hp;
	int [][] FS = new int[][]{
			{0, 0, 0, 0, 0, 1, 1, 1}, //0原地状态
			{2, 2, 3, 3, 4, 4, 5, 5}, //1跑步
			{13,20,27,28}, //2攻击状态
			{12}, // 3后仰状态
			{14,15}, // 4击飞
			{16},//5倒地
			{17},//6爬起
			{16,29}};//7死亡
	
	public PL(Image _im, int[][] _pd, int[] _fs, int _x, int _y, int _z) 
	{
		super(_im, _pd, _fs, _x, _y, _z);
		n = 0;
		hp = 15;
		
	}
	public void upData( boolean up,boolean down,boolean left,boolean right,MC mc)
	{
		
		this.nextFrame() ;
		if (mc.ig == true)
		{
			if (x-mc.cx > 120)
			{
				mc .cx += 5;
			}
		}
		else
		{
			if (x - mc.cx+20 > MC.CW )
			{
				x -= 5;
			}
		}
		
		
		if (up == true)
		{
			z -=3;
			if (z < 110)
			{
				z += 3;
			}
			
		}
		if (down == true)
		{
			z +=3;
			if (z > 210)
			{
				z -= 3;
			}
			
		}
		if (right == true)
		{
			
			
			x += 5;
			
		}
		if (left == true)
		{
			
			
			x -= 5;
			if (x -mc.cx < 20)
			{
				x += 5;
			}
			
		}
		
		switch (m)
		{
		case 0:
			break;
		case 1: //跳跃
			y += vy;
			vy +=2;
			if (y > 0)
			{
				m = 0;
				y = 0;
				if ( up == true || down == true || left == true || right == true) //如果落地时按了方向键则动画帧为走路
				{
					this.setfs( new int[]{2, 2, 3, 3, 4, 4, 5, 5});
				}
				else
				{
					this.setfs( new int[]{0, 0, 0, 0, 0, 1, 1, 1}); // 否则动画帧为站立
					
				}
			}
			break;
		case 2: //发拳
			n--;
			if (n <= 0)
			{
				this.setfs( new int[]{0, 0, 0, 0, 0, 1, 1, 1});
				m = 1;
			}
			if ( n == 4)
			{
				for (int i = 0;i < mc.nm .npc .length ;i++)
				{
					if (mc.nm .npc[i] != null)
					{
						
						if (f == true)
						{
							if (x > mc.nm .npc[i].x - 10&& x <mc.nm .npc[i].x + 30 && Math.abs( mc.nm .npc[i].z - z ) < 10 &&mc.nm .npc[i].m < 8)
							{
								
								
								
								if(mc.zz < 0)  //连续技攻击
								{
									mc.nm .npc[i].hp-= 3;
									mc.nm .npc[i].n = 10;
									
									mc.nm .npc[i].m = 9;
									mc.nm .npc[i].vy = -10;
									
									
									
								}
								else if(mc.zz < 3)
								{
									mc.nm .npc[i].n = 8;
									mc.nm .npc[i].setfs( mc.nm .npc[i].FS[3]);
									mc.nm .npc[i].m = 8;
									mc.nm .npc[i].hp--;
									
									
								}
								
								
							}
						}
						else
						{
							if (x > mc.nm .npc[i].x - 30 &&  x < mc.nm .npc[i].x + 10 &&Math.abs( mc.nm .npc[i].z - z) < 10&& mc.nm .npc[i].m < 8)
							{
								
								
								if(mc.zz < 0)  //连续技攻击
								{
									mc.nm .npc[i].hp-= 3;
									mc.nm .npc[i].n = 10;
									
									
									mc.nm .npc[i].m = 9;
									mc.nm .npc[i].vy = -10;
									
									
								}
								else if(mc.zz < 3)
								{
									mc.nm .npc[i].n = 8;
									mc.nm .npc[i].setfs(mc.nm .npc[i]. FS[3]);
									mc.nm .npc[i].m = 8;
									mc.nm .npc[i].hp--;
									
								}
								
							}
						}
					}
				}
			}
			break;
		case 3:  //发镖
			if( y < 0)
			{
				this.setfs( new int[]{22});
			}
			n --;
			if (n <= 0)
			{
				this.setfs( new int[]{0, 0, 0, 0, 0, 1, 1, 1});
				m = 1;
			}
			break;
		case 8: //后仰
			
			n--;
			if (n <= 0)
			{
				m = 0;
				n = 5;
				this.setfs( FS[0]);
			}
			if ( hp <= 0)
			{
				m = 10;
				n =10;
				this.setfs( FS[5]);
			}
			
			
			break;
		case 10: //倒地
			
			n--;
			
//			if (hp > 0 &&n <= 0)
//			{
//			
//			m = 11;
//			n = 10;
//			}
			if (hp <= 0)
			{
				this.setfs(FS[7]);
				m = 12;
				n =20;
			}
			break;
//			case 11: //爬起
//			n --;
//			this.setfs( FS[6]);
//			if (n <= 0)
//			{
//			m = 0;
//			n = 20;
//			this.setfs( FS[0]);
//			}
//			break;
		case 12://死亡
			n --;
			
			break;
			
		}
		
	}
	
}


⌨️ 快捷键说明

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