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

📄 game.java

📁 game for basketball. Midlet,support MIDP2.0
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		for(int i = 0; i < 4; i++)
		{
			for(int j = 0; j < 4; j++)
			{
				pTeamRemaps[((i + 0)* 4)+ j]= Basketball.pAwayRemaps[0][i][j];
				pTeamRemaps[((i + 4)* 4)+ j]= Basketball.pHomeRemaps[0][i][j];
			}
		}
		for(int l = 0; l < 4; l++)
		{
			pTeamRemaps[8 * 4 + l]= Basketball.pAwayRemaps[0][2][l];
			pTeamRemaps[9 * 4 + l]= Basketball.pAwayRemaps[0][0][l];
			pTeamRemaps[10 * 4 + l]= Basketball.pAwayRemaps[0][0][l];
		}
		for(int k = 0; k < 2; k++)
		{
			for(int clr = 0; clr < 3; clr++)
			{
				int tc =((int)pTeamRemaps[8 + k + clr])& 0xFF;
				tc += 25;
				if(tc > 255)
					tc = 255;
				pTeamRemaps[8 * 4 + k + clr]=(byte)tc;
			}
		}
		for(int m = 0; m < 2; m++)
		{
			for(int clr = 0; clr < 3; clr++)
			{
				int tc =((int)pTeamRemaps[8 + m + clr])& 0xFF;
				tc -= 25;
				if(tc < 0)
					tc = 0;
				pTeamRemaps[8 * 4 + m + clr]=(byte)tc;
			}
		}
		pTeamRemaps[0 * 4 + 0]=(byte)192;
		pTeamRemaps[1 * 4 + 0]=(byte)1;
		pTeamRemaps[2 * 4 + 0]=(byte)212;
		pTeamRemaps[3 * 4 + 0]=(byte)194;
		pTeamRemaps[4 * 4 + 0]=(byte)79;
		pTeamRemaps[5 * 4 + 0]=(byte)78;
		pTeamRemaps[6 * 4 + 0]=(byte)207;
		pTeamRemaps[7 * 4 + 0]=(byte)111;
		pTeamRemaps[8 * 4 + 0]=(byte)3;
		pTeamRemaps[9 * 4 + 0]=(byte)2;
		pTeamRemaps[10 * 4 + 0]=(byte)35;
		{
			if(m_pCourtImgL == null){
					pTmpPng = new png("/fullcourtl.png", pTeamRemaps, 11);
				m_pCourtImgL = pTmpPng.getImage();
				pTmpPng = null;
			}
			if(m_pCourtImgR == null){
					pTmpPng = new png("/fullcourtr.png", pTeamRemaps, 11);
				m_pCourtImgR = pTmpPng.getImage();
				pTmpPng = null;
			}
		}
		if(m_pCourtImgL != null)
			m_bCourtReady = true;
		return true;
	}
	private void UnLoadCourtRes()
	{
		m_bCourtReady = false;
	}
	private void Render(Graphics g)
	{
		if(m_bCourtReady == false)
			return;
		int iPosX = -m_iOffsetX;
		int iPosY = 11 - m_iOffsetY;
		int iDestX = 24;
		g.setClip(0,(11 - 2), 176,((208 -(11 - 2))-((Basketball.hGameWnd.m_iCommentaryTime > 0)? 10 : 0)));
		g.drawImage(m_pCourtImgL, iPosX, iPosY - 48, 0);
		g.drawImage(m_pCourtImgR, iPosX + 216, iPosY - 48, 0);
	}
	private void UpdateCourt(int iDeltaT)
	{
		int iFocusX = m_pFocusObj.GetPosX();
		int iFocusY = m_pFocusObj.GetPosYNoZ();
		int iBiasX =(m_iCameraDir * 90)- iFocusX;
		int iBiasY =(m_iCameraDir * 25)- iFocusY;
		iFocusX +=(Basketball.ABS(iBiasX)< 40)? iBiasX :(iBiasX > 0)? 40 : -40;
		iFocusY -=(Basketball.ABS(iBiasY)< 60)? iBiasY :(iBiasY > 0)? 60 : -60;
		if(m_iCameraState == 0)
		{
			m_iCameraX = iFocusX;
			m_iCameraY = iFocusY - m_iCameraX / 5 * m_iCameraDir;
		}
		else if(m_iCameraState == 2)
		{
			int iDist =(m_iCameraX * m_iCameraX)+(m_iCameraY * m_iCameraY);
			if(iDist < 500)
				m_iCameraState = 0;
			m_iCameraX =(((3 * m_iCameraX)+ iFocusX)/ 4);
			m_iCameraY =(((3 * m_iCameraY)+ iFocusY)/ 4);
		}
		m_iOffsetX =((432 - 176)/ 2)+ m_iCameraX;
		m_iOffsetY =((144 -(208 - 11))/ 2)+ m_iCameraY;
		if(m_iOffsetX < 0)
			m_iOffsetX = 0;
		if(m_iOffsetX > 432 - 176)
			m_iOffsetX = 432 - 176;
		if(m_iOffsetY >(144 - 208)+ 11)
			m_iOffsetY =(144 - 208)+ 11;
		if(m_iOffsetY < - 36)
			m_iOffsetY = - 36;
	}
	private void SetFocusOn(RenderObj pFocusObj)
	{
		m_pFocusObj = pFocusObj;
	}
	private void SetCameraState(int iState)
	{
		m_iCameraState = iState;
	}
	private void SetCameraDir(int iDir)
	{
		if(m_iCameraDir != iDir)
		{
			m_iCameraDir = iDir;
			m_iCameraState = 2;
		}
	}
	private int GetOffsetX()
	{
		return m_iOffsetX;
	}
	private int GetOffsetY()
	{
		return m_iOffsetY;
	}
	private boolean m_bShotGood;
	private boolean m_bInbounds;
	private boolean m_bSpecialShot;
	private boolean m_bResetShotClock;
	private int m_iShotVal;
	private int m_iState;
	private int m_fOutboundPos[];
	private int m_fNextBouncePos[];
	private int m_fPos[];
	private int m_fVel[];
//	public javax.microedition.media.Player m_pSndBrick;
//	private javax.microedition.media.Player m_pSndSwish;
	private RenderObj m_pBallObj;
	private Player m_pPlayerLastTouch;
	private Player m_pControlPlayer;
	private int m_iControlTeam;
	private int m_iLastKnownControlTeam;
	public void Ball()
	{
		m_pBallObj = new RenderObj();
		m_pBallObj.SetFrame(52, 0, 5, 5, 5 / 2, 5 / 2, 0);
//		m_pSndSwish = Basketball.LoadSnd("/swish.wav", "audio/x-wav");
//		m_pSndBrick = Basketball.LoadSnd("/brick.wav", "audio/x-wav");
		m_fOutboundPos = new int[2];
		m_fNextBouncePos = new int[2];
		m_fPos = new int[3];
		m_fVel = new int[3];
		m_fPos[0]= 0;
		m_fPos[1]= 0;
		m_fPos[2]= 0;
		m_iState = 0;
		m_bInbounds = true;
		m_bSpecialShot = false;
		m_bResetShotClock = false;
	}
	private void SetBallImg(Image pObjImg, Image pIconImg)
	{
		m_pBallObj.SetImg(pObjImg, pIconImg);
	}
	int GetState()
	{
		return m_iState;
	}
	void TouchBall(Player pPlayer)
	{
		m_pPlayerLastTouch = pPlayer;
	}
	void SetVelocity(int fVelX, int fVelY, int fVelZ)
	{
		m_fVel[0]= fVelX;
		m_fVel[1]= fVelY;
		m_fVel[2]= fVelZ;
	}
	void SetPosition(int fPosX, int fPosY, int fPosZ)
	{
		m_fPos[0]= fPosX;
		m_fPos[1]= fPosY;
		m_fPos[2]= fPosZ;
	}
	void SetController(Player pPlayer)
	{
		if(pPlayer != null)
		{
			m_iState = 3;
			m_iControlTeam = pPlayer.GetTeam();
		}
		m_pControlPlayer = pPlayer;
		if(pPlayer != null)
		{
			TouchBall(pPlayer);
			m_bResetShotClock = false;
		}
	}
	void SetOutbound(int fOutboundX, int fOutboundY)
	{
		m_fOutboundPos[0]= fOutboundX;
		m_fOutboundPos[1]= fOutboundY;
	}
	int GetOutbound(int iIndex)
	{
		return m_fOutboundPos[iIndex];
	}
	void SetState(int iState)
	{
		m_iState = iState;
	}
	private void SetControlTeam(int iTeamIndex)
	{
		m_iControlTeam = iTeamIndex;
	}
	private RenderObj GetObj()
	{
		return m_pBallObj;
	}
	int GetPosX()
	{
		return m_fPos[0];
	}
	int GetPosY()
	{
		return m_fPos[1];
	}
	int GetPosZ()
	{
		return m_fPos[2];
	}
	int GetVelZ()
	{
		return m_fVel[2];
	}
	int GetVelX()
	{
		return m_fVel[0];
	}
	int GetVelY()
	{
		return m_fVel[1];
	}
	int GetNextBounceX()
	{
		return m_fNextBouncePos[0];
	}
	int GetNextBounceY()
	{
		return m_fNextBouncePos[1];
	}
	private int GetControlTeam()
	{
		return m_iControlTeam;
	}
	void SetShotVal(int iVal)
	{
		m_iShotVal = iVal;
	}
	private int GetShotValue()
	{
		return m_iShotVal;
	}
	Player GetControlPlayer()
	{
		return m_pControlPlayer;
	}
	private void SetShooterGood()
	{
		if(m_pPlayerLastTouch != null)
			m_pPlayerLastTouch.AddToShotStats(m_iShotVal);
	}
	private boolean GetSpecialShot()
	{
		return m_bSpecialShot;
	}
	void SetSpecialShot(boolean bSpecial)
	{
		m_bSpecialShot = bSpecial;
	}
	private void updateControlled(int iDeltaT)
	{
		m_fPos[0]= m_pControlPlayer.GetPosX();
		m_fPos[1]= m_pControlPlayer.GetPosY();
		m_fPos[2]= m_pControlPlayer.GetPosZ();
		int iHandleX = m_pControlPlayer.GetBallHandleX();
		int iHandleY = m_pControlPlayer.GetBallHandleY();
		m_pBallObj.SetFrame(52, 0, 5, 5, iHandleX, iHandleY, 0);
	}
	void SetShotGood(boolean bGood)
	{
		m_bShotGood = bGood;
	}
	private void updateFree(int iDeltaT)
	{
		for(int i = 0; i < 3; i++)
		{
			m_fPos[i]+=(m_fVel[i]* iDeltaT)>> 10;
		}
		if(m_iState != 6)
			AccountGravity(iDeltaT);
		CheckBasket();
		m_pBallObj.SetFrame(52, 0, 5, 5, 5 / 2, 5 / 2, 0);
	}
	void update(int iDeltaT)
	{
		ChkInbounds();
		switch(m_iState)
		{
			case 3 :
				updateControlled(iDeltaT);
				m_pBallObj.SetIcon(- 99);
				break;
			case 4 :
				m_pBallObj.SetIcon(2);
				break;
			case 5 :
				case 0 :
					case 2 :
					case 8 :
					case 1 :
					case 6 :
					case 7 :
					default :
					updateFree(iDeltaT);
				m_pBallObj.SetIcon(2);
		}
		m_pBallObj.Transform(m_fPos[0], m_fPos[1], m_fPos[2]);
	}
	private boolean ChkInbounds()
	{
		if(Basketball.ABS(m_fPos[0])+(512)>(50 << 10)/ 2)
		{
			if(m_bInbounds)
			{
				m_fOutboundPos[0]= m_fPos[0];
				m_fOutboundPos[1]= m_fPos[1];
			}
			m_bInbounds = false;
		}
		else if(Basketball.ABS(m_fPos[1])>(94 << 10)/ 2)
		{
			if(m_bInbounds)
			{
				m_fOutboundPos[0]= m_fPos[0];
				m_fOutboundPos[1]= m_fPos[1];
			}
			m_bInbounds = false;
		}
		else
			m_bInbounds = true;
		return m_bInbounds;
	}
	private void CheckBasket()
	{
		int fABSPosX = Basketball.ABS(m_fPos[0]);
		int fABSPosY = Basketball.ABS(m_fPos[1]);
		int fABSPosZ = Basketball.ABS(m_fPos[2]);
		if(ColBasket(fABSPosX, fABSPosY, fABSPosZ))
		{
			if(m_bShotGood)
			{
				int iRand = Basketball.GetRand()% 4;
				switch(iRand)
				{
					case 0 :
						Basketball.hGameWnd.SetCommentary("得分"/*"He scores"*/);
						break;
					case 1 :
						Basketball.hGameWnd.SetCommentary("好球!"/*"Yes, its good!"*/);
						break;
					case 2 :
						Basketball.hGameWnd.SetCommentary("得分"/*"He scores"*/);
						break;
					case 3 :
						default :
							Basketball.hGameWnd.SetCommentary("漂亮!"/*"Swish!"*/);
				}
				m_iState = 4;
				m_fPos[2]=(- 99 << 10);
//				Basketball.Play(m_pSndSwish, 0);
			}
			else
			{
				int iRand = Basketball.GetRand()% 5;
				switch(iRand)
				{
					case 0 :
						Basketball.hGameWnd.SetCommentary("差点!"/*"Brrrriccckkkk!"*/);
						break;
					case 1 :
						Basketball.hGameWnd.SetCommentary("不好!"/*"No good!"*/);
						break;
					case 2 :
						Basketball.hGameWnd.SetCommentary("不进!"/*"NO!"*/);
						break;
					case 3 :
						Basketball.hGameWnd.SetCommentary("没进!"/*"Off the mark!"*/);
						break;
					case 4 :
						default :
							Basketball.hGameWnd.SetCommentary("弹出来了!"/*"In and out!"*/);
						break;
				}
				m_fVel[2]= -((3 * m_fVel[2])/ 5);
				m_iState = 1;
				CalculateNextBouncePos();
//				Basketball.Play(m_pSndBrick, 0);
			}
			m_bResetShotClock = true;
		}
		if(ColBackboard(fABSPosX, fABSPosY, fABSPosZ))
		{
			int iDir = 1;
			if(m_fPos[1]< 0)
				iDir = -1;
			m_fVel[1]= -((3 * m_fVel[1])/ 5);
			m_fPos[1]= iDir *((43 << 10)-(512));
			CalculateNextBouncePos();
		}
	}
	private boolean ColBackboard(int fABSPosX, int fABSPosY, int fABSPosZ)
	{
		if(fABSPosX >(0 << 10)-(26 << 10))
		{
			if(fABSPosX <(0 << 10)+(26 << 10))
			{
				if(fABSPosY >(43 << 10)-(512))
				{
					if(fABSPosZ >(29 << 10))
					{
						if(fABSPosZ <(29 << 10)+(33 << 10))
						{
							if(m_fPos[1]== -45258 || m_fPos[1]== 45257)
							{
								return false;
							}
							else
							{
								return true;
							}
						}
					}
				}
			}
		}
		return false;
	}
	private boolean ColBasket(int fABSPosX, int fABSPosY, int fABSPosZ)
	{
		if(fABSPosX >(0 << 10)-(1 << 10))
		{
			if(fABSPosX <(0 << 10)+(1 << 10))
			{
				if(fABSPosY >(42 << 10)-(1 << 10))
				{
					if(fABSPosY <(42 << 10)+(1 << 10))
					{
						if(ColBasketZ(fABSPosZ))
						{
							return true;
						}
					}
				}
			}
		}
		return false;
	}
	private boolean ColBasketZ(int fABSPosZ)
	{
		int iFudgeFactor = Basketball.ABS(m_fVel[0])+ Basketball.ABS(m_fVel[1]);
		if(fABSPosZ <(30 << 10)+ iFudgeFactor)
		{
			if(fABSPosZ >(30 << 10)- 5000)
			{
				return true;
			}
		}
		return false;
	}
	private void CalculateNextBouncePos()
	{
		int iAirTime = Basketball.sqrtN(((30 << 10))/ 11000);
		m_fNextBouncePos[0]= m_fPos[0]+((3 * m_fVel[0]* iAirTime)/ 4);
		m_fNextBouncePos[1]= m_fPos[1]+((3 * m_fVel[1]* iAirTime)/ 4);
	}
	private void AccountGravity(int iDeltaT)
	{
		int iGravity = 11000 * 8;
		if(m_fPos[2]> 0)
		{
			m_fVel[2]-=(iGravity * iDeltaT)>> 10;
		}
		if(m_fPos[2]< 0)
		{
			if(m_fVel[2]>= -(iGravity / 2))
			{
				m_fVel[2]= 0;
				m_fVel[0]= 0;
				m_fVel[1]= 0;
			}
			else
			{
				m_fVel[2]= -((3 * m_fVel[2])/ 5);
				m_fVel[0]=(m_fVel[0]* 3)/ 5;
				m_fVel[1]=(m_fVel[1]* 3)/ 5;
			}
			if(m_iState != 5)
				m_iState = 0;
			m_fPos[2]= 0;
		}
	}
	boolean SaveBallState()
	{
		try
		{
			ByteArrayOutputStream pBS = new ByteArrayOutputStream(50);
			DataOutputStream pDO = new DataOutputStream(pBS);
			pDO.writeBoolean(m_bShotGood);
			pDO.writeBoolean(m_bInbounds);
			pDO.writeInt(m_iShotVal);
			pDO.writeInt(m_iState);
			pDO.writeInt(m_fOutboundPos[0]);
			pDO.writeInt(m_fOutboundPos[1]);
			pDO.writeInt(m_fNextBouncePos[0]);
			pDO.writeInt(m_fNextBouncePos[1]);
			pDO.writeInt(m_fPos[0]);
			pDO.writeInt(m_fPos[

⌨️ 快捷键说明

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