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

📄 game.java

📁 game for basketball. Midlet,support MIDP2.0
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM7 :
						m_iDownLeft = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM9 :
						m_iDownRight = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM5 :
						m_pUserPlayer.Action1();
						break;
					case Canvas.KEY_NUM0 :
						if(m_pUserPlayer.GetHasBall())
							m_pUserPlayer.Action2();
						else
							SwitchUserPlayers();
						break;
					case Canvas.KEY_POUND :
						ClrInput();
						if(ChkOBPlay(m_iUserTeamIndex)== false)
						{
							m_iPositionTextTimer = 6000;
							SetTeamPositionText(m_iUserTeamIndex, true);
							if(m_pUserPlayer.GetHasBall())
								CreateOverlay(40);
							else
								CreateOverlay(41);
						}
						return 1;
						case Canvas.KEY_STAR :
							if(m_iPositionTextTimer > 0)
						{
							m_bTogglePositionIcons = false;
							m_iPositionTextTimer = 0;
						}
						else
							m_bTogglePositionIcons = !m_bTogglePositionIcons;
						SetTeamPositionText(m_iUserTeamIndex, m_bTogglePositionIcons);
						return 1;
						default :
							break;
				}
				if(!ChkDblTapDown(param1))
					ChkDblTapDown(param2);
				return 1;
				case 0x0202 :
					switch(param1)
				{
					case Canvas.LEFT :
						m_iLeft &= ~2;
						break;
					case Canvas.RIGHT :
						m_iRight &= ~2;
						break;
					case Canvas.UP :
						m_iUp &= ~2;
						break;
					case Canvas.DOWN :
						m_iDown &= ~2;
						break;
					default :
						break;
				}
				switch(param2)
				{
					case Canvas.KEY_NUM4 :
						m_iLeft &= ~2;
						break;
					case Canvas.KEY_NUM6 :
						m_iRight &= ~2;
						break;
					case Canvas.KEY_NUM2 :
						m_iUp &= ~2;
						break;
					case Canvas.KEY_NUM8 :
						m_iDown &= ~2;
						break;
					case Canvas.KEY_NUM3 :
						m_iUpRight &= ~2;
						break;
					case Canvas.KEY_NUM1 :
						m_iUpLeft &= ~2;
						break;
					case Canvas.KEY_NUM7 :
						m_iDownLeft &= ~2;
						break;
					case Canvas.KEY_NUM9 :
						m_iDownRight &= ~2;
						break;
					default :
						break;
				}
				ChkDblTapUp(param1, param2);
				return 1;
		}
		return super.message(msg, param1, param2);
	}
	boolean ChkDblTapDown(int param1)
	{
		if(m_iDblTapTime > 0 && m_iDblTapDir == param1 && m_iDblTap == 2)
		{
			m_iDblTap = 3;
		}
		else
		{
			switch(param1)
			{
				case Canvas.KEY_NUM4 :
					case Canvas.LEFT :
						case Canvas.KEY_NUM6 :
						case Canvas.RIGHT :
						case Canvas.KEY_NUM2 :
						case Canvas.UP :
						case Canvas.KEY_NUM8 :
						case Canvas.DOWN :
						case Canvas.KEY_NUM3 :
						case Canvas.KEY_NUM1 :
						case Canvas.KEY_NUM7 :
						case Canvas.KEY_NUM9 :
						break;
				default :
					return false;
			}
			m_iDblTap = 1;
			m_iDblTapTime = 500;
			m_iDblTapDir = param1;
		}
		return true;
	}
	void ChkDblTapUp(int param1, int param2)
	{
		if(m_iDblTapTime > 0 && m_iDblTap == 1 &&(m_iDblTapDir == param1 || m_iDblTapDir == param2))
		{
			m_iDblTap = 2;
		}
		else
		{
			m_iDblTap = 0;
			m_iDblTapTime = 0;
			m_iDblTapDir = 0;
		}
	}
	private void AcknowledgeInput()
	{
		if(m_pUserPlayer.GetAnimLock())
		{
			return;
		}
		if(m_iDblTap == 3 && m_pUserPlayer.GetHasBall()== true && m_pUserPlayer.ChkUserLockPlay()== false)
		{
			m_pUserPlayer.SetDir(GetKeyDir(m_iDblTapDir), true);
			m_pUserPlayer.AttemptJuke();
			m_iDblTap = 0;
			m_iDblTapTime = 0;
			m_iDblTapDir = 0;
			return;
		}
		boolean bMove = false;
		if(m_iLeft > 0)
		{
			m_pUserPlayer.SetDir(0, true);
			m_iLeft &= ~1;
			bMove = true;
		}
		if(m_iUpLeft > 0)
		{
			m_pUserPlayer.SetDir(1, true);
			m_iUpLeft &= ~1;
			bMove = true;
		}
		if(m_iUp > 0)
		{
			m_pUserPlayer.SetDir(2, true);
			m_iUp &= ~1;
			bMove = true;
		}
		if(m_iUpRight > 0)
		{
			m_pUserPlayer.SetDir(3, true);
			m_iUpRight &= ~1;
			bMove = true;
		}
		if(m_iRight > 0)
		{
			m_pUserPlayer.SetDir(4, true);
			m_iRight &= ~1;
			bMove = true;
		}
		if(m_iDownRight > 0)
		{
			m_pUserPlayer.SetDir(5, true);
			m_iDownRight &= ~1;
			bMove = true;
		}
		if(m_iDown > 0)
		{
			m_pUserPlayer.SetDir(6, true);
			m_iDown &= ~1;
			bMove = true;
		}
		if(m_iDownLeft > 0)
		{
			m_pUserPlayer.SetDir(7, true);
			m_iDownLeft &= ~1;
			bMove = true;
		}
		if((m_iMoveMomentum > 0 || bMove == true)&& m_pUserPlayer.ChkUserLockPlay()== false)
		{
			m_pUserPlayer.SetAnimState(1);
		}
		m_iMoveMomentum =(m_iMoveMomentum > 0)? m_iMoveMomentum - 1 : 0;
	}
	private void SwitchUserPlayers()
	{
		int iBallState = GetState();
		switch(iBallState)
		{
			case 0 :
				default :
					m_pUserPlayer.SetUser(false);
				m_pUserPlayer = GetPlayerBetweenBallAndBasket(GetTeamOffset(m_iUserTeamIndex), m_pUserPlayer);
				m_pUserPlayer.SetUser(true);
				break;
		}
	}
	Player GetPlayerBetweenBallAndBasket(int iTeamOffset, Player pUserPlayer)
	{
		int iPlayersBack = 0;
		Player pPlayersBack[]= new Player[4];
		int fBallX = GetPosX();
		int fBallY = GetPosY();
		for(int i = 0; i < 5; i++)
		{
			if(m_pPlayers[iTeamOffset + i]!= pUserPlayer && m_pPlayers[iTeamOffset + i].GetPosY()* m_iOffenseDir > fBallY * m_iOffenseDir)
			{
				pPlayersBack[iPlayersBack]= m_pPlayers[iTeamOffset + i];
				iPlayersBack++;
			}
		}
		Player pClosestBack = pUserPlayer.CalcClosestTeamMateAI(false, 0, fBallX, fBallY);
		int iShortestDist = 100000;
		for(int j = 0; j < iPlayersBack; j++)
		{
			int iDistX =(pPlayersBack[j].GetPosX()- fBallX)>> 10;
			int iDistY =(pPlayersBack[j].GetPosY()- fBallY)>> 10;
			int iDist =(iDistX * iDistX)+(iDistY * iDistY);
			if(iDist < iShortestDist)
			{
				pClosestBack = pPlayersBack[j];
				iShortestDist = iDist;
			}
		}
		return pClosestBack;
	}
	private int GetOffenseTeam(int iOffenseDir)
	{
		if(GetTeamOffenseDir(m_iHomeTeamIndex)== iOffenseDir)
		{
			return m_iHomeTeamIndex;
		}
		else
		{
			return m_iAwayTeamIndex;
		}
	}
	private void SortObjsY()
	{
		int i, j, k;
		for(i = 1; i < 17; i++)
		{
			k = m_pDrawOrder[i];
			j = i;
			while((j > 0)&&(m_pObjList[m_pDrawOrder[j - 1]].GetWorldY()<= m_pObjList[k].GetWorldY()))
			{
				if(m_pObjList[m_pDrawOrder[j - 1]].GetWorldY()== m_pObjList[k].GetWorldY())
				{
					SortObjsType(j - 1, k);
				}
				m_pDrawOrder[j]= m_pDrawOrder[j - 1];
				j = j - 1;
			}
			m_pDrawOrder[j]= k;
		}
	}
	private void SortObjsType(int iObjA, int iObjB)
	{
		int iTypeA = m_pObjList[m_pDrawOrder[iObjA]].GetType();
		int iTypeB = m_pObjList[m_pDrawOrder[iObjB]].GetType();
	}
	public void SetCommentary(String pMsg)
	{
		if(pMsg == null)
		{
			m_iCommentaryTime = 0;
			return;
		}
		m_pCommentaryMsg = pMsg;
		m_iCommentaryTime = 2000;
		Graphics g = m_pImgCommentary.getGraphics();
		int iDestX = 176 * 2;
		int idesty = 10;
		int iPosX = 0;
		int iPosY = 0;
		g.setClip(0, 0, m_pImgCommentary.getWidth(), m_pImgCommentary.getHeight());
		g.setColor(0x000000);
		g.fillRect(0, 0, m_pImgCommentary.getWidth(), m_pImgCommentary.getHeight());
		if(m_pFont.getStringWidth(m_pCommentaryMsg, - 1)> 176)
		{
			m_pFont.stringChar(g, 0, iPosY + 1, m_pCommentaryMsg, - 1, 0);
			m_bCenterCommentary = false;
		}
		else
		{
			iPosX = 176 / 2;
			m_pFont.stringChar(g, iPosX, iPosY + 1, m_pCommentaryMsg, - 1, 0x02);
			m_bCenterCommentary = true;
		}
	}
	int uCount = 10;
	int gcCount = 0;
	void update(int time, int freq)
	{
		if(m_bReady == false || m_bPause == true)
			return;
		Basketball.bUpdate = false;
		int iTime = time;
		if(iTime >(125 + 25))
			iTime =(125 + 25);
		if(m_iTippOffDelay > 0)
		{
			updateTippOff(iTime);
		}
		else
		{
			updatePlayers(iTime);
			ChkTurnOvers();
			updateBall(iTime);
			updateGameCourt(iTime);
			updateBackBoard(iTime);
			if(updateClock(iTime)== true)
				return;
			updateUser();
			updateCommentary(iTime);
		}
		AcknowledgeInput();
	}
	void updateTippOff(int iDeltaT)
	{
		m_iTippOffDelay -= iDeltaT;
		String pTmp;
		pTmp = "倒计时: " + m_iTippOffDelay / 1000;
		SetCommentary(pTmp);
		updateGameCourt(iDeltaT);
		updateCommentary(iDeltaT);
		for(int i = 0; i < 10; i++)
		{
			m_pPlayers[i].PostUpdate();
			m_pPlayers[i].FaceDir(0, 0, true);
			m_pPlayers[i].SetReboundBall(false);
		}
		ClrInput();
	}
	void updateUser()
	{
		if(GetControlTeam()== m_iUserTeamIndex && GetState()== 3)
		{
			m_pUserPlayer.SetUser(false);
			m_pUserPlayer = GetControlPlayer();
			m_pUserPlayer.SetUser(true);
		}
		updateOffscreenIndicators();
	}
	void updateGameCourt(int iDeltaT)
	{
		switch(GetState())
		{
			case 3 :
				SetFocusOn(GetControlPlayer().GetObj());
				break;
			case 2 :
				case 8 :
					case 4 :
					case 0 :
					case 1 :
					case 6 :
					case 7 :
					default :
					SetFocusOn(GetObj());
				SetCameraState(2);
				break;
		}
		UpdateCourt(iDeltaT);
	}
	void updateBall(int iDeltaT)
	{
		update(iDeltaT);
		m_bBallOB = false;
		if(GetPosY()* m_iOffenseDir < 0)
		{
			if(m_bBallBackCourt == false)
				DoAfterBackCourtViolation();
		}
		else
		{
			if(GetState()== 3 && m_iOffenseTeamIndex != - 99 && ChkOBPlay(m_iOffenseTeamIndex)== false)
				m_bBallBackCourt = false;
		}
		if(m_bInbounds == false)
		{
			DoResetShotClock();
			m_bBallOB = true;
			if(m_iOffenseTeamIndex == - 99 || ChkOBPlay(m_iOffenseTeamIndex)== false)
			{
				DoAfterOB();
				return;
			}
		}
		ChkCrowdRoar();
		if(GetState()== 1 || GetState()== 7)
		{
			m_bBallBackCourt = true;
			CalcRebounders();
			CalcRebound();
		}
		m_iOffenseTeamIndex = GetControlTeam();
		m_iOffenseDir =(m_iOffenseTeamIndex != - 99)? GetTeamOffenseDir(m_iOffenseTeamIndex): 0;
		SetCameraDir(m_iOffenseDir);
	}
	boolean ChkCrowdRoar()
	{
		if(GetState()== 5)
		{
			if(m_iOffenseTeamIndex == m_iAwayTeamIndex)
			{
				if(m_bPlayCrowd == true)
				{
					int iScoreDif = Basketball.ABS(GetTotalScore(m_iHomeTeamIndex)- GetTotalScore(m_iAwayTeamIndex));
					if(m_iQtrTime > 120000)
						iScoreDif += 15;
					if(GetSpecialShot()|| iScoreDif <= 3)
					{
						return true;
					}
				}
			}
		}
		m_bPlayCrowd = false;
		return false;
	}
	boolean ChkInbndClockCondition()
	{
		if(m_bBallOB && GetState()== 3)
			return true;
		return false;
	}
	boolean ChkHfcrtClockCondition()
	{
		if(m_bBallBackCourt == true && m_bBallOB == false && GetState()== 3 && ChkOBPlay(m_iOffenseTeamIndex)== false)
			return true;
		return false;
	}
	boolean ChkShtClockCondition()
	{
		if(m_iOffenseTeamIndex != - 99 && ChkOBPlay(m_iOffenseTeamIndex)== false)
			return true;
		return false;
	}
	boolean ChkGameClockCondition()
	{
		if(m_iOffenseTeamIndex != - 99 && ChkOBPlay(m_iOffenseTeamIndex)== true)
		{
			if(m_iClockState == 1 || m_iQtrTime < 120000)
			{
				return false;
			}
		}
		return true;
	}
	void DecrementClock(int iDeltaT, boolean bQtrNotOver)
	{
		m_iQtrTime -= iDeltaT;
		m_iPositionTextTimer -=(m_iPositionTextTimer > 0)? iDeltaT : 0;
		if(m_iPositionTextTimer <= 0)
		{
			if(m_bTogglePositionIcons == false)
				SetTeamPositionText(m_iUserTeamIndex, false);
			m_iPositionTextTimer = 0;
		}
		if(bQtrNotOver && m_iQtrTime < 750)
		{
			/*if(Basketball.GetState()!= 0x0001)
				Basketball.Play(m_pSndHorn, 0);*/
		}
	}
	boolean updateClock(int iDeltaT)
	{
		boolean bQtrNotOver =(m_iQtrTime > 0)? true : false;
		if(ChkGameClockCondition()== true)
		{
			m_iQtrTime -= iDeltaT;
			m_iPositionTextTimer -=(m_iPositionTextTimer > 0)? iDeltaT : 0;
			if(m_iPositionTextTimer < 0)
			{
				if(m_bTogglePositionIcons == false)
					SetTeamPositionText(m_iUserTeamIndex, false);
				m_iPositionTextTimer = 0;
			}
			if(bQtrNotOver == true && m_iQtrTime < 750)
			{
			}
		}
		m_iDblTapTime -= iDeltaT;
		int iSecs =(m_iQtrTime % 60000)/ 1000;
		if(m_iQtrSecs != iSecs)
		{
			m_iQtrSecs = iSecs;
			m_iPaintFlags |= 0x04;
		}
		m_iShotSecs -=(ChkShtClockCondition())? iDeltaT : 0;
		m_iBkCrtSecs -=(ChkHfcrtClockCondition())? iDeltaT : 0;
		m_iInbndSecs -=(ChkInbndClockCondition())? iDeltaT : 0;
		m_iLaneSecs -= iDeltaT;
		iSecs = m_iShotSecs / 1000;
		if(iSecs < 0)
			iSecs = 0;
		String pTmp;
		if(m_iShotSecs < m_iQtrTime)
			pTmp = "" +(iSecs / 10)+(iSecs % 10);
		else
			pTmp = "  ";
		m_pObjList[16].SetText(pTmp, false);
		m_pObjList[15].SetText(pTmp, false);
		ChkInbndClock();
		ChkBkCrtClock();
		ChkShotClock();
		if(ChkGameClock()== true)

⌨️ 快捷键说明

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