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

📄 game.java

📁 game for basketball. Midlet,support MIDP2.0
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.*;
import java.lang.*;
import java.io.*;
//import javax.microedition.media.*;
public class Game extends win
{
	private static final int RIM_ANIM[]= { 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 3, 3, 3, 4, 4, 4 };
	private static final int RIM_FRAMES[][]=
	{
		{ 26, 49, 9, 13, 4, 11 },
		{ 35, 49, 9, 13, 4, 11 },
		{ 44, 49, 9, 13, 4, 11 },
		{ 26, 24, 9, 13, 4, 11 },
		{ 37, 24, 9, 13, 4, 11 },
	};
	private static final int OFFSCREENIND_FRAMES[][]=
	{
		{ 0, 0, 8, 12 },
		{ 8, 0, 10, 10 },
		{ 18, 0, 12, 9 },
		{ 30, 0, 10, 10 },
		{ 0, 12, 8, 12 },
		{ 8, 12, 10, 11 },
		{ 18, 12, 12, 8 },
		{ 30, 12, 10, 10 },
	};
	private boolean m_bCenterCommentary;
	private boolean m_bReady;
	private boolean m_bUserHome;
	private boolean m_bDrawOffscreenIndicators;
	private boolean m_bUserLock;
	private boolean m_bPause;
	private boolean m_bGameOver;
	private boolean m_bBallOB;
	private boolean m_bBallBackCourt;
	private boolean m_bPlayCrowd;
	private boolean m_bTogglePositionIcons;
	private boolean m_bQtrOverlaySet;
	private long m_iLastTime;
	private int m_iClockState;
	private int m_iPositionTextTimer;
	private int m_iCommentaryOffsetX;
	private int m_iIndicatorX;
	private int m_iIndicatorY;
	private int m_iIndicatorDir;
	private int m_iRimAnim;
	private int m_iRimState;
	public int m_iCommentaryTime;
	private int m_iLeft;
	private int m_iUpLeft;
	private int m_iUp;
	private int m_iUpRight;
	private int m_iRight;
	private int m_iDownRight;
	private int m_iDown;
	private int m_iDownLeft;
	private int m_iDblTap;
	private int m_iDblTapDir;
	private int m_iDblTapTime;
	private int m_iTippOffDelay;
	private int m_iMoveMomentum;
	public int m_iQtrNum;
	public int m_iQtrTime;
	public int m_iQtrSecs;
	public int m_iShotSecs;
	public int m_iBkCrtSecs;
	public int m_iInbndSecs;
	public int m_iLaneSecs;
	private int m_iShotClock;
	private int m_iPaintFlags;
	private int m_iOffenseDir;
	private int m_iHomeScore;
	private int m_iAwayScore;
	private int m_iHomeTeamColor;
	private int m_pDrawOrder[];
	private int m_iTeamThatWonTippOff;
	public String m_pCommentaryMsg;
	private String m_pHomeTeamName;
	private String m_pAwayTeamName;
	private RenderObj m_pObjList[];
	private Player m_pUserPlayer;
	private Player m_pPlayers[];
	private int m_iHomeTeamIndex;
	private int m_iAwayTeamIndex;
	private int m_iOffenseTeamIndex;
	private int m_iUserTeamIndex;
	private bhFont m_pFont;
	private static Image m_pImgHomeTeam;
	private static Image m_pImgAwayTeam;
	private static Image m_pImgGameRes;
	private static Image m_pImgCommentary;
	private static png pTmpPng = null;
//	static javax.microedition.media.Player m_pSndHorn;
	Game(boolean bHome)
	{
		m_bReady = false;
		m_iPaintFlags = 0;
		m_iQtrNum = 0;
		m_iRimAnim = 0;
		m_iRimState = 0;
		m_bUserHome = bHome;
		m_bUserLock = false;
		m_pObjList = new RenderObj[17];
		m_pDrawOrder = new int[17];
		m_pPlayers = new Player[10];
		ready = true;
		topWinList.addElement((Object)this);
	}
	public static void Touch()
	{
	}
	static int LastiHomeTeamID, LastiAwayTeamID;
	public boolean LoadGameRes(int iHomeTeamID, int iAwayTeamID)
	{
		if(LastiHomeTeamID != iHomeTeamID || LastiAwayTeamID != iAwayTeamID){
				m_pImgHomeTeam = null;
			m_pImgAwayTeam = null;
		}
		for(int i = 11; i < 17; i++)
		{
			m_pObjList[i]= null;
		}
		for(int j = 0; j < 10; j++)
		{
			m_pPlayers[j]= null;
		}
		LastiHomeTeamID = iHomeTeamID;
		LastiAwayTeamID = iAwayTeamID;
		System.gc();
		FrontEnd.LoadTeamStats(iHomeTeamID, 0);
		FrontEnd.LoadTeamStats(iAwayTeamID, 1);
		for(int i = 0; i < 10; i++)
		{
			if(i < 5){
					if(m_pPlayers[i]== null){
						m_pPlayers[i]= new Player(m_pImgHomeTeam, m_pImgGameRes, true, m_bUserHome);
				} else {
					m_pPlayers[i].reassignData(m_pImgHomeTeam, m_pImgGameRes, true, m_bUserHome);
				}
			} else {
				if(m_pPlayers[i]== null){
						m_pPlayers[i]= new Player(m_pImgAwayTeam, m_pImgGameRes, false, !m_bUserHome);
				} else {
					m_pPlayers[i].reassignData(m_pImgAwayTeam, m_pImgGameRes, false, !m_bUserHome);
				}
			}
			if(m_pPlayers[i]== null)
				return false;
			m_pObjList[i]= m_pPlayers[i].GetObj();
		}
		m_iHomeTeamIndex = 0;
		m_iAwayTeamIndex = 1;
		AllocStaticTeamArrays();
		Team(m_iHomeTeamIndex, 0, 0, m_pPlayers);
		Team(m_iAwayTeamIndex, 5, 1, m_pPlayers);
		if(m_bUserHome)
			m_iUserTeamIndex = m_iHomeTeamIndex;
		else
			m_iUserTeamIndex = m_iAwayTeamIndex;
		Ball();
		m_pObjList[10]= m_pBallObj;
		m_pObjList[11]= new RenderObj();
		m_pObjList[11].SetFrame(0, 24, 26, 33, 26 / 2, 33, 0);
		m_pObjList[11].Transform((0 << 10), -(43 << 10),(29 << 10));
		m_pObjList[12]= new RenderObj();
		m_pObjList[12].SetFrame(0, 24, 26, 33, 26 / 2, 33, 0);
		m_pObjList[12].Transform((0 << 10),(43 << 10),(29 << 10));
		m_pObjList[13]= new RenderObj();
		m_pObjList[13].SetFrame(RIM_FRAMES[0][0], RIM_FRAMES[0][1], RIM_FRAMES[0][2], RIM_FRAMES[0][3], RIM_FRAMES[0][4], RIM_FRAMES[0][5], 0);
		m_pObjList[13].Transform((0 << 10), -(42 << 10),(30 << 10));
		m_pObjList[14]= new RenderObj();
		m_pObjList[14].SetFrame(RIM_FRAMES[0][0], RIM_FRAMES[0][1], RIM_FRAMES[0][2], RIM_FRAMES[0][3], RIM_FRAMES[0][4], RIM_FRAMES[0][5], 0);
		m_pObjList[14].Transform((0 << 10),(42 << 10),(30 << 10));
		m_pObjList[15]= new RenderObj();
		m_pObjList[15].SetFrame(46, 23, 11, 14, 7, 0, 0);
		m_pObjList[15].Transform((0 << 10), -(42 << 10),(30 << 10)+(30 << 10)+ 10000);
		m_pObjList[16]= new RenderObj();
		m_pObjList[16].SetFrame(46, 23, 11, 14, 0, 0, 0);
		m_pObjList[16].Transform((0 << 10),(42 << 10),(30 << 10)+(30 << 10)+ 11264);
		for(int j = 0; j < 5; j++)
		{
			int index1 = 0;
			int index2 = 0;
			for(int k = 0; k < 5; k++)
			{
				if(k == j)
					continue;
				m_pPlayers[j + 0].SetTeamate(index1, m_pPlayers[k + 0]);
				m_pPlayers[j + 5].SetTeamate(index1, m_pPlayers[k + 5]);
				index1++;
			}
			for(int m = 0; m < 5; m++)
			{
				m_pPlayers[j + 0].SetOpponent(index2, m_pPlayers[m + 5]);
				m_pPlayers[j + 5].SetOpponent(index2, m_pPlayers[m + 0]);
				index2++;
			}
			m_pPlayers[j + 0].SetOffenseDir(1);
			m_pPlayers[j + 5].SetOffenseDir(- 1);
		}
		for(int n = 0; n < 17; n++)
		{
			m_pDrawOrder[n]= n;
		}
		m_bTogglePositionIcons = false;
		m_iPositionTextTimer = 6000;
		SetTeamPositionText(m_iUserTeamIndex, true);
		return true;
	}
	boolean LoadGameResLarge()
	{
		if(LoadCourtRes()== false)
			return false;
		if(Basketball.pTeamName[0].equals("Nuggets"))
		{
			m_iHomeTeamColor = 0x004040FF;
		}
		else
		{
			byte iRed = Basketball.pAwayRemaps[0][0][1];
			byte iGreen = Basketball.pAwayRemaps[0][0][2];
			byte iBlue = Basketball.pAwayRemaps[0][0][3];
			m_iHomeTeamColor =((iRed << 16)& 0x00ff0000)+((iGreen << 8)& 0x0000ff00)+((iBlue)& 0x000000ff);
		}
		byte pHomeTeamRemaps[]= new byte[4 * 4];
		byte pAwayTeamRemaps[]= new byte[4 * 4];
		for(int i = 0; i < 4; i++)
		{
			for(int j = 0; j < 4; j++)
			{
				pHomeTeamRemaps[i * 4 + j]= Basketball.pHomeRemaps[0][i][j];
				pAwayTeamRemaps[i * 4 + j]= Basketball.pAwayRemaps[1][i][j];
			}
		}
		if(m_pImgHomeTeam == null){
				pTmpPng = new png("/player.png", pHomeTeamRemaps, 4);
			m_pImgHomeTeam = pTmpPng.getImage();
			pTmpPng = null;
		}
		if(m_pImgHomeTeam == null)
			return false;
		if(m_pImgAwayTeam == null){
				pTmpPng = new png("/player.png", pAwayTeamRemaps, 4);
			m_pImgAwayTeam = pTmpPng.getImage();
			pTmpPng = null;
		}
		if(m_pImgAwayTeam == null)
			return false;
		return true;
	}
	boolean LoadGameResSmall()
	{
		m_pFont = getColoredFont(0xFFFFFF, false);
		/*if(m_pSndHorn == null)
			m_pSndHorn = Basketball.LoadSnd("/horn.wav", "audio/x-wav");*/
		byte pBackBoardRemaps[]= new byte[2 * 4];
		for(int i = 0; i < 2; i++)
		{
			for(int j = 0; j < 4; j++)
			{
				pBackBoardRemaps[i * 4 + j]= Basketball.pAwayRemaps[0][2][j];
			}
		}
		for(int clr = 0; clr < 3; clr++)
		{
			int tc =((int)pBackBoardRemaps[1 * 4 + clr])& 0xFF;
			tc += 25;
			if(tc > 255)
				tc = 255;
			pBackBoardRemaps[1 * 4 + clr]=(byte)tc;
		}
		for(int clr = 0; clr < 3; clr++)
		{
			int tc =((int)pBackBoardRemaps[0 * 4 + clr])& 0xFF;
			tc -= 25;
			if(tc < 0)
				tc = 0;
			pBackBoardRemaps[0 * 4 + clr]=(byte)tc;
		}
		pBackBoardRemaps[0 * 4 + 0]= 5;
		pBackBoardRemaps[1 * 4 + 0]= 6;
		if(m_pImgGameRes == null){
				pTmpPng = new png("/courtstuff.png", pBackBoardRemaps, 2);
			m_pImgGameRes = pTmpPng.getImage();
			pTmpPng = null;
		}
		if(m_pImgCommentary == null){
				m_pImgCommentary = Image.createImage(176 * 2, 11+5);
		}
		Graphics g = m_pImgCommentary.getGraphics();
		g.setColor(0x000000);
		g.fillRect(0, 0, m_pImgCommentary.getWidth(), m_pImgCommentary.getHeight());
		return true;
	}
	void SetImages()
	{
		for(int i = 0; i < 5; i++)
		{
			m_pPlayers[i + 0].SetPlayerImg(m_pImgHomeTeam, m_pImgGameRes);
			m_pPlayers[i + 5].SetPlayerImg(m_pImgAwayTeam, m_pImgGameRes);
		}
		SetBallImg(m_pImgGameRes, m_pImgGameRes);
		for(int i = 11; i < 17; i++)
			m_pObjList[i].SetImg(m_pImgGameRes, m_pImgGameRes);
		m_iPaintFlags |= 0x02 | 0x01 | 0x04;
	}
	public boolean ChkGameReady()
	{
		return m_bReady;
	}
	void UnLoadGameRes()
	{
		m_bReady = false;
		Basketball.myCanvas.setUpdate(false);
		System.gc();
	}
	void UnLoadGameResLarge()
	{
		System.gc();
	}
	void UnLoadGameResSmall()
	{
		m_iPaintFlags = 0;
		System.gc();
	}
	boolean GetGameOver()
	{
		return m_bGameOver;
	}
	public int GetHomeTeam()
	{
		return m_iHomeTeamIndex;
	}
	public int GetAwayTeam()
	{
		return m_iAwayTeamIndex;
	}
	public void StartGame()
	{
		StartHalf();
		m_iQtrNum = 1;
		m_iOffenseDir = 1;
		CreateOverlay(33);
		m_bQtrOverlaySet = false;
	}
	void StartHalf()
	{
		DoTippOff();
		if(m_bUserHome)
			m_pUserPlayer = m_pPlayers[4];
		else
			m_pUserPlayer = m_pPlayers[9];
		m_pUserPlayer.SetUser(true);
		for(int i = 0; i < 5; i++)
		{
			m_pPlayers[i + 0].SetOffenseDir(1);
			m_pPlayers[i + 5].SetOffenseDir(- 1);
		}
		for(int j = 0; j < 10; j++)
		{
			m_pPlayers[j].ResetPlay();
			m_pPlayers[j].SetTeamHasBall(false);
			m_pPlayers[j].SetTippoffPos();
			m_pPlayers[j].SetAnim(j % 4);
		}
		SetScoreQtr(m_iQtrNum);
		SetControlTeam(m_iAwayTeamIndex);
		DoResetShotClock();
		m_iQtrTime = Basketball.iQuarterlength;
	}
	void StartQtr()
	{
		m_iClockState = 1;
		int iTeamThatWonTippOff = m_iTeamThatWonTippOff;
		if(m_iQtrNum == 3 || m_iQtrNum == 5 || m_iQtrNum == 7 || m_iQtrNum == 9 || m_iQtrNum == 11 || m_iQtrNum == 13 || m_iQtrNum == 15)
		{
			iTeamThatWonTippOff =(iTeamThatWonTippOff == 5)? 0 : 5;
		}
		if(iTeamThatWonTippOff == 0)
			m_iOffenseTeamIndex = m_iAwayTeamIndex;
		else
			m_iOffenseTeamIndex = m_iHomeTeamIndex;
		for(int j = 0; j < 10; j++)
		{
			m_pPlayers[j].ResetPlay();
			m_pPlayers[j].SetTeamHasBall(false);
			m_pPlayers[j].SetHasBall(false);
			m_pPlayers[j].SetTippoffPos();
		}
		int iTeamOffset = GetTeamOffset(m_iOffenseTeamIndex);
		for(int k = iTeamOffset; k < iTeamOffset + 5; k++)
		{
			m_pPlayers[k].SetTeamHasBall(true);
		}
		m_iOffenseDir = GetTeamOffenseDir(m_iOffenseTeamIndex);
		SetVelocity(0, 0, 0);
		SetPosition(8 << 10, - m_iOffenseDir *((50)<< 10), 0);
		SetController(null);
		SetState(5);
		m_bBallBackCourt = true;
		SetControlTeam(m_iOffenseTeamIndex);
		if(m_iOffenseTeamIndex == m_iUserTeamIndex)
			SetNextOffensePlay(m_iOffenseTeamIndex, 15);
		else
			SetNextOffensePlay(m_iOffenseTeamIndex, 11);
		SetPlayNum(m_iOffenseTeamIndex, 1);
		SetScoreQtr(m_iQtrNum);
		DoResetBkCourClock();
		DoResetInbndsClock();
		DoResetShotClock();
		System.out.println("THREEMIN" + 180000);
		if(Basketball.iQuarterlength > 180000)
		{
			if(m_iQtrNum > 4)
				m_iQtrTime = 300000;
			else
				m_iQtrTime = Basketball.iQuarterlength;
		}
		else
		{
			m_iQtrTime = Basketball.iQuarterlength;
		}
	}
	void ResumeGame()
	{
		if(m_bQtrOverlaySet == false)
		{
			Basketball.iSelType = -99;
			//Basketball.myCanvas.setLeftCommandText("暂停");
			Basketball.myCanvas.setLeftCommandText("");
			Basketball.myCanvas.setRightCommandText("");
			Basketball.myCanvas.setUpdate(true);
			setFocus(this);
			m_bReady = true;
			m_bPause = false;
		}
		else
		{
			m_bReady = false;
			m_bPause = true;
			CreateOverlay(34);
			m_bQtrOverlaySet = false;
		}
	}
	public void EndGame()
	{
		m_iPaintFlags = 0;
		UnLoadGameRes();
		endDialog();
		Basketball.hGameWnd = null;
		System.out.println("EndGame() GC");
		System.gc();
	}
	public void PauseGame()
	{
		m_iPaintFlags = 0;
		m_bReady = false;
		m_bPause = true;
		Basketball.myCanvas.setUpdate(false);
		UnLoadGameResSmall();
		FrontEnd.LoadFrontEndOnlyArt();
		CreateOverlay(7);
		ClrInput();
	}
	void SetQtrOverlaySet(boolean bQtrOverlaySet)
	{
		m_bQtrOverlaySet = bQtrOverlaySet;
	}
	public int message(int msg, int param1, int param2)
	{
		switch(msg)
		{
			case 0x0205 :
				return message(0x0109, 99, 0);
				case 0x0206 :
					return message(0x0201, Canvas.FIRE, 0);
				case 0x0109 :
					switch(param1)
				{
					case 99 :
//						Basketball.StopAllSounds();
						PauseGame();
						return 1;
						default :
							break;
				}
				return 1;
				case 0x0201 :
					switch(param1)
				{
					case Canvas.LEFT :
						m_iLeft = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.RIGHT :
						m_iRight = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.UP :
						m_iUp = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.DOWN :
						m_iDown = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.FIRE :
						m_pUserPlayer.Action1();
						break;
					default :
						break;
				}
				switch(param2)
				{
					case Canvas.KEY_NUM4 :
						m_iLeft = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM6 :
						m_iRight = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM2 :
						m_iUp = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM8 :
						m_iDown = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM3 :
						m_iUpRight = 3;
						m_iMoveMomentum = 2;
						break;
					case Canvas.KEY_NUM1 :
						m_iUpLeft = 3;

⌨️ 快捷键说明

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