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

📄 player.java

📁 game for basketball. Midlet,support MIDP2.0
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	int GetDistBasket()
	{
		return m_iManhattanShotDist;
	}
	void SetTargetForPass(Player pPlayer)
	{
		m_pTarget = pPlayer;
		pPlayer.SetPassTarget(true, this);
	}
	void SetTippoffPos()
	{
		m_fPos[0]= TIPOFF_POS[m_iPlayerType][0]<< 10;
		m_fPos[1]= m_iOffenseDir * TIPOFF_POS[m_iPlayerType][1]<< 10;
		m_fNextPos[0]= m_fPos[0];
		m_fNextPos[1]= m_fPos[1];
		m_fTargetPos[0]= m_fPos[0];
		m_fTargetPos[1]= m_fPos[1];
	}
	void SetPosition(int x, int y, int z)
	{
		m_fPos[0]= x;
		m_fPos[1]= y;
		m_fPos[2]= z;
	}
	void SetDir(int iDir, boolean bImmediate)
	{
		if(m_bUser == true || bImmediate == true)
		{
			m_iDir = iDir;
			m_iMoveDir = iDir;
			m_iDirCount = 8;
			m_bDirLock = false;
		}
		else
		{
			m_iMoveDir = iDir;
			if(m_bDirLock == false)
			{
				m_iDirCount = 8;
				m_iDir = iDir;
			}
		}
	}
	void SetOffenseDir(int iOffenseDir)
	{
		m_iOffenseDir = iOffenseDir;
	}
	void SetAnimState(int iState)
	{
		m_iAnimState = iState;
	}
	RenderObj GetObj()
	{
		return m_pPlayerObj;
	}
	int GetOffenseModifier()
	{
		return m_iDribPassRating;
	}
	int GetDefModifier()
	{
		return(m_iDribPassRating + m_iBlockRating)/ 2;
	}
	private static final String STARNAMES[]=
	{
		"Yao",
		"Shaq",
		"Kobe",
		"Le Bron",
		"Rasheed",
	};
	String GetFamousName()
	{
		for(int i = 0; i < 5; i++)
		{
			if(STARNAMES[i]== m_pFirstName)
				return m_pFirstName;
		}
		return m_pLastName;
	}
	void PreUpdate(int iDeltaT)
	{
		CalcManhattanShotDistAI();
		m_iAssistCounter =(m_bHasBall && m_iAssistCounter > 0)? m_iAssistCounter - 1 : 0;
		if(m_bUser == false || ChkUserLockPlay()== true)
		{
			updateAI();
		}
		else
		{
			updateUser();
		}
		if(m_bPassTarget == true)
		{
			m_iAnimState = 0;
		}
		if(m_iAnimState == 1 || m_iAnimState == 14)
		{
			CalcVelocityAI(m_iMoveDir, m_fVel);
		}
		else if(m_iAnimState != 9 && m_iAnimState != 10 && m_iAnimState != 7)
		{
			ReduceVelocityXY();
		}
		PreMovePlayer(iDeltaT);
	}
	void PostUpdate()
	{
		PostMovePlayer();
		UpdateAnimation();
		if(m_iAnimState == 1 || m_iAnimState == 0)
		{
			if(m_bHasBall)
				m_iAnimState = 3;
			else
				m_iAnimState = 0;
		}
	}
	void UpdateAnimation()
	{
		int iAnimState = m_iAnimState;
		final int pAnim[]= PLAYER_ANIM[iAnimState];
		int iNumFrames = pAnim[0];
		int iNumDirs = pAnim[1];
		int iOffFrames = pAnim[2];
		int iAnimDir = m_iDir /(8 / iNumDirs);
		if(m_iAnimState == 1)
		{
			if(m_iDir == 0)
				iAnimDir = 1;
			else if(m_iDir == 4)
				iAnimDir = 0;
		}
		if(m_iAnimState == 14)
		{
			iAnimDir = m_iJukeDir /(8 / iNumDirs);
			m_iJukeDir =(m_iJukeDir + 1)% 8;
			if(m_iJukeDir == m_iDir)
			{
				m_iAnimState = 0;
				m_bAnimLock = false;
			}
		}
		UpdateSpecialIcon();
		if(m_iAnimNum >= iNumFrames)
		{
			m_iAnimNum = 0;
		}
		FrameTrigger(m_iAnimNum);
		m_iFrame = pAnim[2 + 1 + m_iAnimNum]+(iOffFrames * iAnimDir);
		m_iBallHandleX = PLAYER_FRAMES[m_iFrame][6];
		m_iBallHandleY = PLAYER_FRAMES[m_iFrame][7];
		m_pPlayerObj.SetFrame(PLAYER_FRAMES[m_iFrame][0], PLAYER_FRAMES[m_iFrame][1], PLAYER_FRAMES[m_iFrame][2], PLAYER_FRAMES[m_iFrame][3], PLAYER_FRAMES[m_iFrame][4], PLAYER_FRAMES[m_iFrame][5], m_iDir);
		m_pPlayerObj.Transform(m_fPos[0], m_fPos[1], m_fPos[2]);
		if(m_iAnimState == 12)
		{
			if(m_bQueShot)
			{
				m_bQueShot = false;
				AttemptShot();
			}
		}
		if(m_iAnimNum < iNumFrames - 1)
		{
			m_iAnimNum++;
		}
		else
		{
			if(m_bAnimLock)
				m_iAnimState = 0;
			if(m_iAnimState == 12)
				m_iAnimState = 0;
			m_bAnimLock = false;
			m_iAnimNum = 0;
			m_bDirLock = false;
		}
		if(m_iDirCount <= 0)
		{
			m_bDirLock = false;
			m_iDir = m_iMoveDir;
		}
	}
	void UpdateSpecialIcon()
	{
		if(m_bUser == true)
		{
			if(m_bHasBall)
				m_pPlayerObj.SetIcon(5);
			else
				m_pPlayerObj.SetIcon(0);
		}
		else if(m_bCallForPass == true)
		{
			m_pPlayerObj.SetIcon(3);
		}
		else
		{
			m_pPlayerObj.SetIcon(- 99);
		}
	}
	void ReduceVelocityXY()
	{
		m_fVel[0]= 0;
		m_fVel[1]= 0;
	}
	void PreMovePlayer(int iDeltaT)
	{
		if(m_bSlowDown == true)
		{
			for(int i = 0; i < 2; i++)
			{
				m_fNextPos[i]= m_fPos[i]+(((m_fVel[i]* iDeltaT)/ 2)>> 10);
			}
			m_iSlowDownTimer -= iDeltaT;
			if(m_iSlowDownTimer <= 0)
			{
				m_iSlowDownTimer = 0;
				m_bSlowDown = false;
			}
		}
		else
		{
			for(int i = 0; i < 2; i++)
			{
				m_fNextPos[i]= m_fPos[i]+((m_fVel[i]* iDeltaT)>> 10);
			}
		}
		if(m_iAnimState != 13)
		{
			m_fNextPos[2]= m_fPos[2]+((m_fVel[2]* iDeltaT)>> 10);
			int iGravity =(m_iAnimState == 9)? 11000 : 11000;
			if(m_fPos[2]> 0)
			{
				if(m_iAnimState == 1)
				{
					m_iAnimState = 13;
					m_iAnimNum = 0;
					m_fNextPos[0]= m_fPos[0];
					m_fNextPos[1]= m_fPos[1];
				}
				m_fVel[2]-=((iGravity * 8)* iDeltaT)>> 10;
			}
		}
		else
		{
		}
	}
	void PostMovePlayer()
	{
		for(int i = 0; i < 3; i++)
		{
			m_fPos[i]= m_fNextPos[i];
		}
		ChkCourtBounds();
	}
	void FrameTrigger(int iFrame)
	{
		switch(m_iAnimState)
		{
			case 2 :
				if(iFrame == 4)
					EndShot();
				break;
			case 7 :
				if(iFrame == 6)
					EndLayup();
				break;
			case 8 :
				if(iFrame == 4)
					EndPass();
				break;
			case 10 :
				case 9 :
					if(iFrame == 9)
					EndDunk();
				break;
			case 16 :
				if(iFrame == 4)
					EndAllyOOP();
				break;
			case 1 :
				default :
					break;
		}
	}
	void updateUser()
	{
		if(m_bTeamHasBall == true)
			return;
		Player pBallHandler = Basketball.hGameWnd.GetControlPlayer();
		if(pBallHandler != null)
		{
			int iGuardState = pBallHandler.GetAnimState();
			if(iGuardState != 2 && 5 != 7)
			{
				if(pBallHandler.GetDistBasket()> m_iManhattanShotDist)
				{
					int fGuardX = pBallHandler.GetPosX();
					int fGuardY = pBallHandler.GetPosY();
					int iDistX = Basketball.ABS((fGuardX - m_fPos[0])>> 10);
					int iDistY = Basketball.ABS((fGuardY - m_fPos[1])>> 10);
					int iDist =(iDistX * iDistX)+(iDistY * iDistY);
					if(iDist < 16)
					{
						if(m_bAnimLock == false)
							m_iAnimState = 4;
					}
				}
			}
		}
	}
	void updateAI()
	{
		if(m_bAnimLock == true)
		{
			m_iAIDelayCounter = 2;
			return;
		}
		if(m_iJukeDelay > 0)
		{
			if(m_bTeamHasBall == true && m_bHasBall == false)
				m_iJukeDelay = 0;
			else
				m_iJukeDelay--;
			ChkStopped();
			return;
		}
		switch(Basketball.hGameWnd.GetState())
		{
			case 0 :
				updateLooseBallAI();
				break;
			case 1 :
				case 7 :
					updateReboundAI();
				break;
			case 8 :
				case 5 :
					case 3 :
					if(m_bTeamHasBall)
					updateOffenseAI();
				else
					updateDefenseAI();
				break;
			case 2 :
				FaceDir((0 << 10),(42 << 10)* -m_iOffenseDir, false);
				break;
			case 4 :
				default :
					break;
		}
		int iTargetDistX = Basketball.ABS(m_fTargetPos[0]- m_fPos[0])>> 10;
		int iTargetDistY = Basketball.ABS(m_fTargetPos[1]- m_fPos[1])>> 10;
		if(((iTargetDistX > 1)||(iTargetDistY > 1))&& m_bAnimLock == false)
		{
			m_iAnimState = 1;
			FaceDir(m_fTargetPos[0], m_fTargetPos[1], false);
			int iDist =(iTargetDistX * iTargetDistX)+(iTargetDistY * iTargetDistY);
			if(iDist < m_iInPosDelta)
			{
				if(m_iAIDelayCounter <= 0 && !m_bHasBall)
					m_bInPlayPos = true;
			}
		}
		else
		{
			if(m_iAIDelayCounter <= 0)
				m_bInPlayPos = true;
		}
	}
	void updateOffenseAI()
	{
		m_iAIDelayCounter--;
		if(m_iAIDelayCounter > 0)
		{
			m_bInPlayPos = false;
		}
		if(m_iAIPlayState != m_iAIPlayerState)
		{
			updateOffenseNextPlayPosAI();
		}
		if(m_bAnimLock == false)
		{
			updateScriptedActionAI();
			updateSituationalAI();
		}
		if(m_iAnimState == 0)
			FaceDir(Basketball.hGameWnd.GetPosX(), Basketball.hGameWnd.GetPosY(), false);
	}
	void updateScriptedActionAI()
	{
		switch(m_iAIScriptedSpecial)
		{
			case 3 :
				if(m_bInPlayPos == true)
					m_iAnimState = 4;
				break;
			case 1 :
				if(m_bHasBall == true)
					AttemptShot();
				break;
			case 2 :
				if(m_bHasBall == true)
				{
					AttemptPass(m_iAIScriptedTarget);
				}
				break;
			case 4 :
				if(m_bHasBall == false)
				{
					if(m_bUserTeam == false)
						m_iAIDelayCounter = 2;
					CallForBall();
				}
				break;
			case 6 :
				if(m_bHasBall == true)
				{
					if(CalcGoodShotAI())
					{
						AttemptShot();
					}
					else
					{
						AttemptPass(m_iAIScriptedTarget);
					}
				}
				break;
			case 5 :
				if(m_bHasBall == true)
				{
					if(CalcGoodShotAI())
					{
						AttemptShot();
					}
				}
				break;
			case 7 :
				if(m_bHasBall == true)
				{
					m_iAIDelayCounter = 2;
					m_bInPlayPos = false;
				}
				else
				{
					m_bInPlayPos = true;
				}
				break;
			case 0 :
				break;
		}
	}
	void updateSituationalAI()
	{
		if(m_bHasBall == true && Basketball.hGameWnd.ChkOBPlay(m_iTeamIndex)== false)
		{
			if(ChkHighPrioritySituationAI()== true)
				return;
			if(m_iAIScriptedSpecial == 0)
			{
				if(ChkMedPrioritySituationAI()== true)
					return;
				if(m_bInPlayPos == true)
				{
					if(ChkLowPrioritySituationAI()== true)
						return;
				}
			}
		}
		else
		{
			if(ChkUnguarded()== true)
				SetCallForPass(true);
		}
	}
	boolean ChkHighPrioritySituationAI()
	{
		if(ChkShotClockAI()== true)
			return true;
		if(ChkReallyCloseToBasket()== true)
			return true;
		return false;
	}
	boolean ChkMedPrioritySituationAI()
	{
		if(ChkBreakAway()== true)
			return true;
		if(ChkWideAssOpen()== true)
			return true;
		return false;
	}
	boolean ChkLowPrioritySituationAI()
	{
		int iRand = Basketball.GetRand()% 20;
		switch(iRand)
		{
			case 0 :
				case 1 :
					case 2 :
					case 3 :
					case 4 :
					DriveToHole();
				return true;
				case 5 :
					case 6 :
					case 7 :
					case 8 :
					if(m_iPlayerType != 0)
				{
					AttemptShot();
					return true;
				}
				default :
				if(ChkPassToOpenMan())
					return true;
				break;
		}
		return false;
	}
	boolean ChkBeatDefender()
	{
		if(m_pGuard.GetJukeDelay()> 0)
		{
			DriveToHole();
			return true;
		}
		return false;
	}
	boolean ChkStopped()
	{
		if(m_bHasBall == true && m_iJukeDelay > 0 && Basketball.hGameWnd.ChkOBPlay(m_iTeamIndex)== false)
		{
			int iRand = Basketball.GetRand()& 0x0003;
			if(iRand == 0)
			{
				ChkPassToOpenMan();
				return true;
			}
		}
		return false;
	}
	boolean ChkBreakAway()
	{
		int iDefendersBack = 0;
		int fPosY = m_fPos[1]* m_iOffenseDir;

⌨️ 快捷键说明

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