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

📄 game.java

📁 game for basketball. Midlet,support MIDP2.0
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		m_iTippOffDelay = 3000;
	}
	void SwitchOffenseTeam()
	{
		int iTeamOffset;
		if(GetState()!= 6)
		{
			for(int i = 0; i < 10; i++)
			{
				m_pPlayers[i].SetPassTarget(false, null);
			}
		}
		if(m_iOffenseTeamIndex != - 99)
		{
			iTeamOffset = GetTeamOffset(m_iOffenseTeamIndex);
			for(int i = iTeamOffset; i < iTeamOffset + 5; i++)
			{
				m_pPlayers[i].ResetPlay();
				m_pPlayers[i].SetTeamHasBall(false);
				m_pPlayers[i].SetHasBall(false);
			}
			m_iOffenseDir = -m_iOffenseDir;
			SetCameraDir(m_iOffenseDir);
			m_iOffenseTeamIndex = GetOffenseTeam(m_iOffenseDir);
		}
		else
		{
			m_iOffenseTeamIndex = GetControlTeam();
			if(m_iOffenseTeamIndex == - 99)
				return;
			m_iOffenseDir = GetTeamOffenseDir(m_iOffenseTeamIndex);
		}
		SetControlTeam(m_iOffenseTeamIndex);
		if(GetPosY()* m_iOffenseDir < 0)
			m_bBallBackCourt = true;
		iTeamOffset = GetTeamOffset(m_iOffenseTeamIndex);
		for(int j = iTeamOffset; j < iTeamOffset + 5; j++)
		{
			m_pPlayers[j].ResetPlay();
			m_pPlayers[j].SetTeamHasBall(true);
		}
	}
	public void ClrInput()
	{
		m_iLeft = 0;
		m_iUpLeft = 0;
		m_iUp = 0;
		m_iUpRight = 0;
		m_iRight = 0;
		m_iDownRight = 0;
		m_iDown = 0;
		m_iDownLeft = 0;
		m_iDblTapTime = 0;
		m_iDblTapDir = 0;
		m_iDblTap = 0;
		m_iMoveMomentum = 0;
	}
	int GetKeyDir(int iKey)
	{
		switch(iKey)
		{
			case Canvas.KEY_NUM4 :
				case Canvas.LEFT :
					return(0);
				case Canvas.KEY_NUM6 :
					case Canvas.RIGHT :
					return(4);
				case Canvas.KEY_NUM2 :
					case Canvas.UP :
					return(2);
				case Canvas.KEY_NUM8 :
					case Canvas.DOWN :
					return(6);
				case Canvas.KEY_NUM3 :
					return(3);
				case Canvas.KEY_NUM1 :
					return(1);
				case Canvas.KEY_NUM7 :
					return(7);
				case Canvas.KEY_NUM9 :
					default :
					return(5);
		}
	}
	void CreateOverlay(int iOverlay)
	{
		if(Basketball.hMenuWnd != null)
			Basketball.hMenuWnd.endDialog();
		Basketball.hMenuWnd = null;
		Basketball.hMenuWnd = new FrontEnd(iOverlay);
	}
	long m_iFullSecTime = 0;
	int m_iFrameCount = 0;
	int m_iFrameRate = 0;
	public void paint(Graphics g)
	{
		long iCurTime = System.currentTimeMillis();
		long iDeltaT = iCurTime - m_iLastTime;
		m_iLastTime = iCurTime;
		if(m_iPaintFlags != 0)
		{
			update((int)iDeltaT, 125);
			try
			{
				Render(g);
				RenderObjs(g);
				PaintScore(g);
				PaintClock(g);
				PaintAlerts(g);
				PaintOffscreenIndicators(g);
				PaintQtr(g);
				g.setClip(0, 208 - 10 - 8, 176, 10 + 8);
				g.setColor(0x000000);
				g.fillRect(0, 208 - 10 - 8, 176, 10 + 8);
				PaintCommentary(g);
			}
			catch(Exception e)
			{
			}
		}
	}
	void PaintQtr(Graphics g)
	{
		int iPosX =(176 / 2)-(32 / 2);
		int iPosY = 9+5;
		g.setClip(iPosX, iPosY, 32, 2);
		g.drawImage(m_pImgGameRes, iPosX - 26, iPosY - 38 - 9, 0);
		iPosX = 176 / 2 - 10;
		iPosY = 11+5;
		int iDestX = 20;
		int iDestY = 6;
		g.setColor(0);
		g.setClip(iPosX, iPosY, iDestX, iDestY);
		g.fillRect(iPosX, iPosY, iDestX, iDestY);
		for(int i = 0; i < m_iQtrNum; i++)
		{
			g.setColor(0xffffff);
			g.fillRect(iPosX + 1 +(i * 5), iPosY + 1, 3, 4);
		}
		for(int j = m_iQtrNum; j < 4; j++)
		{
			g.setColor(m_iHomeTeamColor);
			g.fillRect(iPosX + 1 +(j * 5), iPosY + 1, 3, 4);
		}
		if(m_iQtrNum > 4)
		{
			g.setColor(m_iHomeTeamColor);
			g.setClip(iPosX + 20, iPosY - 2, 25, 8);
			g.fillRect(iPosX + 20, iPosY - 2, 25, 8);
			String pTmp;
			pTmp = "" +(m_iQtrNum - 4)+ " OT";
			m_pFont.stringChar(g, iPosX + 20, iPosY - 2, pTmp, - 1, 0);
		}
	}
	void PaintAlerts(Graphics g)
	{
		if(ChkShtClockCondition()== true && m_iShotSecs < 11000 && m_iQtrTime > m_iShotSecs)
		{
			int iSecs = m_iShotSecs / 1000;
			PaintAlertSecs(g, iSecs);
		}
		else if(ChkInbndClockCondition()== true && m_iInbndSecs < 3000)
		{
			int iSecs = m_iInbndSecs / 1000;
			PaintAlertSecs(g, iSecs);
		}
		else if(ChkHfcrtClockCondition()== true && m_iBkCrtSecs < 4000)
		{
			int iSecs = m_iBkCrtSecs / 1000;
			PaintAlertSecs(g, iSecs);
		}
		else if(ChkGameClockCondition()== true && m_iQtrTime < 10000)
		{
			int iSecs = m_iQtrTime / 1000;
			iSecs =(iSecs > 0)? iSecs : 0;
			PaintAlertSecs(g, iSecs);
		}
	}
	void PaintClock(Graphics g)
	{
		int iPosX =(176 / 2)-(32 / 2);
		int iPosY = 0+5;
		g.setColor(0);
		g.fillRect(iPosX, iPosY-5, 32, 5);
		g.setClip(iPosX, iPosY, 32, 9);
		g.drawImage(m_pImgGameRes, iPosX - 26, iPosY - 38, 0);
		int iTotalMins = m_iQtrTime / 60000;
		int iSecs1 = m_iQtrSecs / 10;
		int iSecs2 = m_iQtrSecs % 10;
		if(iSecs1 < 0)
			iSecs1 = 0;
		if(iSecs2 < 0)
			iSecs2 = 0;
		g.setClip(0, 0, 176, 208);
		String pTmp;
		pTmp = "" + iTotalMins;
		m_pFont.stringChar(g, 176 / 2 - 2, 2, pTmp, - 1, 0x04);
		pTmp = ":" + iSecs1 + iSecs2;
		m_pFont.stringChar(g, 176 / 2 - 2, 2, pTmp, - 1, 0);
	}
	void PaintAlertSecs(Graphics g, int iSecs)
	{
		g.setColor(0xFF0000);
		g.setClip(176 / 2 - 4-3, 17+10-1, 8+5, 7+6);
		g.fillRect(176 / 2 - 4-3, 17+10-1, 8+5, 7+6);
		String pTmp = "" + iSecs;
		g.setClip(0, 0, 176, 208);
		int iPosX = 176 / 2 - 1;
		m_pFont.stringChar(g, iPosX, 17+10, pTmp, - 1, 0x02);
	}
	void PaintScore(Graphics g)
	{
		String pTmp;
		g.setClip(0, 0, 176, 9+5);//050426 +5
		g.setColor(m_iHomeTeamColor);
		g.fillRect(0, 0, 176, 9+5);//050426 +5
		m_pFont.stringChar(g,((176 / 2)+ 15), 1, GetNick(m_iHomeTeamIndex), - 1, 0);
		pTmp = "" + GetTotalScore(m_iHomeTeamIndex);
		int xOff = 4;
		m_pFont.stringChar(g,((176 / 2)+ 15)+ 45 + xOff, 1, pTmp, - 1, 0x04);
		m_pFont.stringChar(g, 0, 1, GetNick(m_iAwayTeamIndex), - 1, 0);
		pTmp = "" + GetTotalScore(m_iAwayTeamIndex);
		m_pFont.stringChar(g, 45 + xOff, 1, pTmp, - 1, 0x04);
	}
	void PaintOffscreenIndicators(Graphics g)
	{
		if(m_bDrawOffscreenIndicators == false)
			return;
		else
		{
			int iPosX = m_iIndicatorX;
			int iPosY = m_iIndicatorY;
			int iSrcX = OFFSCREENIND_FRAMES[m_iIndicatorDir][0];
			int iSrcY = OFFSCREENIND_FRAMES[m_iIndicatorDir][1];
			int iDestX = OFFSCREENIND_FRAMES[m_iIndicatorDir][2];
			int iDestY = OFFSCREENIND_FRAMES[m_iIndicatorDir][3];
			if(iPosX > 0)
				iPosX -= iDestX;
			if(iPosY >(11 - 2))
				iPosY -= iDestY;
			g.setClip(0,(11 - 2), 176,((208 -(11 - 2))-((Basketball.hGameWnd.m_iCommentaryTime > 0)? 10 : 0)));
			g.clipRect(iPosX, iPosY, iDestX, iDestY);
			g.drawImage(m_pImgGameRes, iPosX - iSrcX, iPosY - iSrcY, 0);
		}
	}
	void PaintCommentary(Graphics g)
	{
		if(m_iCommentaryTime <= 0)
			return;
		else if(m_iCommentaryTime + 250 >= 2000)
			m_iCommentaryOffsetX = 6;
		g.setClip(0, 208 - 10-5, 176, 10+5);
		if(m_bCenterCommentary == false)
		{
			g.setColor(0x000000);
			g.fillRect(0, 208 - 10-5, m_iCommentaryOffsetX, 10+5);
			g.drawImage(m_pImgCommentary, m_iCommentaryOffsetX, 208 - 10-5, 0);
		}
		else
		{
			g.drawImage(m_pImgCommentary, 0, 208 - 10-5, 0);
		}
	}
	void RenderObjs(Graphics g)
	{
		SortObjsY();
		int iOffsetX = GetOffsetX();
		int iOffsetY = GetOffsetY();
		for(int i = 0; i < 17; i++)
		{
			m_pObjList[m_pDrawOrder[i]].RenderIcon(g, iOffsetX, iOffsetY);
		}
		for(int j = 0; j < 17; j++)
		{
			m_pObjList[m_pDrawOrder[j]].Render(g, iOffsetX, iOffsetY);
			m_pObjList[m_pDrawOrder[j]].RenderText(g, m_pFont, iOffsetX, iOffsetY);
		}
	}
	boolean StartSaveGame()
	{
		if(win.BufferOpen("savegame.dat", false)== false)
		{
			if(win.BufferOpen("savegame.dat", true)== false)
				return false;
		}
		Basketball.bSavedGames = false;
		BufferSeek(0, 2155);
		try
		{
			Basketball.bSavedGames = false;
			ByteArrayOutputStream pBS = new ByteArrayOutputStream(1);
			DataOutputStream pDO = new DataOutputStream(pBS);
			pDO.writeBoolean(Basketball.bSavedGames);
			BufferWrite(pBS.toByteArray(), 1);
			pDO.close();
		}
		catch(Exception e)
		{
			BufferClose();
			return false;
		}
		BufferSeek(0, 0);
		Basketball.iSaveState = 0;
		return true;
	}
	boolean SaveGameUpdate()
	{
		if(Basketball.iSaveState == 0)
		{
			if(SaveGameState()== false)
			{
			}
		}
		else if(Basketball.iSaveState == 1)
		{
			if(SaveBallState()== false)
			{
			}
		}
		else if(Basketball.iSaveState == 2)
		{
			if(SaveTeamState(m_iHomeTeamIndex)== false)
			{
			}
		}
		else if(Basketball.iSaveState == 3)
		{
			if(SaveTeamState(m_iAwayTeamIndex)== false)
			{
			}
		}
		else
		{
			if(m_pPlayers[Basketball.iSaveState - 4].SavePlayerState()== false)
			{
			}
		}
		Basketball.iSaveState++;
		return true;
	}
	void EndSaveGame()
	{
		try
		{
			Basketball.bSavedGames = true;
			ByteArrayOutputStream pBS = new ByteArrayOutputStream(1);
			DataOutputStream pDO = new DataOutputStream(pBS);
			pDO.writeBoolean(Basketball.bSavedGames);
			BufferWrite(pBS.toByteArray(), 1);
			pDO.close();
		}
		catch(Exception e)
		{
		}
		BufferClose();
	}
	boolean SaveGameState()
	{
		try
		{
			ByteArrayOutputStream pBS = new ByteArrayOutputStream(154);
			DataOutputStream pDO = new DataOutputStream(pBS);
			pDO.writeInt(Basketball.iHomeTeam);
			pDO.writeInt(Basketball.iAwayTeam);
			pDO.writeBoolean(m_bUserHome);
			pDO.writeBoolean(m_bDrawOffscreenIndicators);
			pDO.writeBoolean(m_bUserLock);
			pDO.writeBoolean(m_bPause);
			pDO.writeBoolean(m_bBallOB);
			pDO.writeBoolean(m_bBallBackCourt);
			pDO.writeInt(m_iTippOffDelay);
			pDO.writeInt(m_iTeamThatWonTippOff);
			pDO.writeInt(m_iIndicatorX);
			pDO.writeInt(m_iIndicatorY);
			pDO.writeInt(m_iIndicatorDir);
			pDO.writeInt(m_iRimAnim);
			pDO.writeInt(m_iRimState);
			pDO.writeInt(m_iCommentaryTime);
			pDO.writeInt(m_iQtrNum);
			pDO.writeInt(m_iQtrTime);
			pDO.writeInt(m_iQtrSecs);
			pDO.writeInt(m_iShotSecs);
			pDO.writeInt(m_iBkCrtSecs);
			pDO.writeInt(m_iInbndSecs);
			pDO.writeInt(m_iLaneSecs);
			pDO.writeInt(m_iPaintFlags);
			pDO.writeInt(m_iOffenseDir);
			pDO.writeInt(m_iHomeScore);
			pDO.writeInt(m_iAwayScore);
			char pChar[]= m_pCommentaryMsg.toCharArray();
			byte pBuf[]= new byte[64];
			for(int i = 0; i < m_pCommentaryMsg.length(); i++)
				pBuf[i]=(byte)pChar[i];
			pDO.write(pBuf, 0, 64);
			win.BufferWrite(pBS.toByteArray(), 154);
			pDO.close();
		}
		catch(Exception e)
		{
			return false;
		}
		return true;
	}
	boolean StartLoadGame()
	{
		if(win.BufferOpen("savegame.dat", false)== false)
		{
			if(win.BufferOpen("savegame.dat", true)== false)
				return false;
		}
		m_iOffsetY = 0;
		BufferSeek(0, 0);
		return true;
	}
	boolean LoadGameUpdate()
	{
		if(Basketball.iSaveState == 1)
		{
			if(LoadGameState()== false)
			{
			}
		}
		else if(Basketball.iSaveState == 2)
		{
			if(LoadBallState()== false)
			{
			}
		}
		else if(Basketball.iSaveState == 3)
		{
			if(LoadTeamState(m_iHomeTeamIndex)== false)
			{
			}
		}
		else if(Basketball.iSaveState == 4)
		{
			if(LoadTeamState(m_iAwayTeamIndex)== false)
			{
			}
		}
		else
		{
			if(m_pPlayers[Basketball.iSaveState - 5].LoadPlayerState()== false)
			{
			}
		}
		Basketball.iSaveState++;
		return true;
	}
	void EndLoadGame()
	{
		BufferClose();;
		SetGamePtrs();
	}
	void SetGamePtrs()
	{
		m_iOffenseTeamIndex = m_iHomeTeamIndex;
		TouchBall(GetPlayer(m_iHomeTeamIndex, 0));
		m_pUserPlayer = m_pPlayers[GetTeamOffset(m_iUserTeamIndex)];
		for(int i = 0; i < 10; i++)
		{
			if(m_pPlayers[i].GetAnimState()== 8)
			{
				for(int j = 0; j < 10; j++)
				{
					if(m_pPlayers[j].ChkPassTarget()== true)
						m_pPlayers[i].SetTargetForPass(m_pPlayers[j]);
				}
			}
			if(m_pPlayers[i].GetHasBall()== true)
			{
				SetController(m_pPlayers[i]);
				m_iOffenseTeamIndex = m_pPlayers[i].GetTeam();
			}
		}
		m_bShotGood = false;
		m_bBallBackCourt = true;
	}
	boolean LoadGameState()
	{
		try
		{
			byte pBuf[]= new byte[154];
			win.BufferRead(pBuf, 154);
			ByteArrayInputStream pBS = new ByteArrayInputStream(pBuf);
			DataInputStream pDI = new DataInputStream(pBS);
			Basketball.iHomeTeam = pDI.readInt();
			Basketball.iAwayTeam = pDI.readInt();
			m_bUserHome = pDI.readBoolean();
			m_bDrawOffscreenIndicators = pDI.readBoolean();
			m_bUserLock = pDI.readBoolean();
			m_bPause = pDI.readBoolean();
			m_bBallOB = pDI.readBoolean();
			m_bBallBackCourt = pDI.readBoolean();
			m_iTippOffDelay = pDI.readInt();
			m_iTeamThatWonTippOff = pDI.readInt();
			m_iIndicatorX = pDI.readInt();
			m_iIndicatorY = pDI.readInt();
			m_iIndicatorDir = pDI.readInt();
			m_iRimAnim = pDI.readInt();
			m_iRimState = pDI.readInt();
			m_iCommentaryTime = pDI.readInt();
			m_iQtrNum = pDI.readInt();
			SetScoreQtr(m_iQtrNum - 1);
			m_iQtrTime = pDI.readInt();
			m_iQtrSecs = pDI.readInt();
			m_iShotSecs = pDI.readInt();
			m_iBkCrtSecs = pDI.readInt();
			m_iInbndSecs = pDI.readInt();
			m_iLaneSecs = pDI.readInt();
			m_iPaintFlags = pDI.readInt();
			m_iOffenseDir = pDI.readInt();
			m_iHomeScore = pDI.readInt();
			m_iAwayScore = pDI.readInt();
			byte pTmp[]= new byte[64];
			pDI.read(pTmp, 0, 64);
			m_pCommentaryMsg = FrontEnd.bufferToString(pTmp, 64);
			pDI.close();
		}
		catch(Exception e)
		{
			return false;
		}
		return true;
	}
	private int m_iCameraX;
	private int m_iCameraY;
	private int m_iCameraDir;
	private int m_iCameraState = 0;
	private int m_iOffsetX;
	private int m_iOffsetY = -45;
	private boolean m_bCourtReady = false;
	private RenderObj m_pFocusObj;
	private static Image m_pCourtImgL = null;
	private static Image m_pCourtImgR = null;
	private boolean LoadCourtRes()
	{
		byte pTeamRemaps[]= new byte[11 * 4];

⌨️ 快捷键说明

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