📄 basketball.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.*;
import java.lang.*;
import java.io.*;
//import javax.microedition.media.*;
import com.nokia.mid.ui.DeviceControl;
public class Basketball extends MIDlet
{
static public Display myDisplay;
static public bhCanvas myCanvas;
static public Random rand;
public static long m_iFreeMemory;
public static int iHomeTeam;
public static int iAwayTeam;
public static int iTeamSel;
public static int iPlayerSel;
public static int iStatSel;
public static int iQuarterlength;
public static boolean bUpdate;
public static boolean bQuickGame;
public static boolean bSoundOn;
public static boolean bSelTeam1;
public static boolean bSavedGames;
public static boolean bVibrationON;
public static boolean bLoadSaveStart = false;
public static boolean bComingFromEndQtr;
public static boolean bComingFromGame;
public static int iOverallRating[];
public static int iOffenseRating[];
public static int iDefenseRating[];
public static byte pHomeRemaps[][][];
public static byte pAwayRemaps[][][];
public static byte pPlayerStats_iSpeed[][];
public static byte pPlayerStats_i2ptShotRating[][];
public static byte pPlayerStats_i3ptShotRating[][];
public static byte pPlayerStats_iDunkRating[][];
public static byte pPlayerStats_iReboundRating[][];
public static byte pPlayerStats_iBlockRating[][];
public static byte pPlayerStats_iDribPassRating[][];
public static String pPlayerStats_pFirstName[][];
public static String pPlayerStats_pLastName[][];
public static String pTeamName[];
public static String pTeamCity[];
public static String pNickName[];
public static String pHomeTeamName;
public static String pAwayTeamName;
public static String pTeamOvrRat;
public static String pTeamOffRat;
public static String pTeamDefRat;
public static String pStatHeader1;
public static String pStatHeader2;
public static String pPlayerNames[];
public static String pPlayerStat[][];
public static int iSaveState;
public static Game hGameWnd;
public static FrontEnd hMenuWnd;
public static Image pButton;
public static Image pFrontEndArt;
// public static javax.microedition.media.Player pSndJingle;
public static int iSelType;
public static byte m_pStatBuf[];
public static byte m_pRsgBuf[];
static public byte intfFontSizes[]=
{
5, 8, 10, 6, 11, 8, 3, 8, 8, 11, 11, 3, 8, 4, 6, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 4, 3, 5, 7, 5, 8, 8,
10, 8, 8, 8, 8, 7, 9, 9, 5, 8, 8, 7, 10, 8, 9, 8, 9, 8, 8, 8, 8, 10, 12, 8, 8, 7,
8, 8, 8, 8, 8, 6, 8, 8, 4, 6, 7, 4, 10, 8, 8, 8, 8, 6, 8, 6, 8, 9, 12, 8, 8, 7,
};
static public byte intfFontSizesSM[]=
{
2, 4, 7, 8, 8, 7, 2, 8, 8, 8, 8, 3, 4, 3, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 2, 3, 5, 6, 5, 5, 8,
6, 5, 6, 6, 5, 5, 6, 6, 2, 3, 6, 5, 6, 6, 7, 5, 7, 5, 5, 6, 6, 6, 6, 6, 6, 6,
5, 5, 4, 5, 5, 5, 5, 5, 2, 3, 5, 2, 6, 5, 5, 5, 5, 4, 4, 4, 5, 6, 6, 6, 6, 5,
};
public void startApp()
{
if(null != myDisplay)
{
myCanvas.resumeApp();
resumeApp();
return;
}
TouchEmAll();
myDisplay = Display.getDisplay(this);
myCanvas = new bhCanvas(this);
rand = new Random();
win.setFontFileAndStats("/fs.png", 8, 9, 0, intfFontSizesSM, "/fb.png", 11, 11, - 1, intfFontSizes);
Basketball.hGameWnd = null;
Basketball.hMenuWnd = null;
Basketball.iHomeTeam = 12;
Basketball.iAwayTeam = 7;
Basketball.iTeamSel = 0;
Basketball.bSelTeam1 = true;
Basketball.bQuickGame = false;
Basketball.m_pRsgBuf = GetFileBuf("/Basketball.rsg");
if(Basketball.m_pRsgBuf == null)
destroyApp(true);
Basketball.m_pStatBuf = GetFileBuf("/bball.stats");
if(Basketball.m_pStatBuf == null)
destroyApp(true);
if(!AllocStaticArrays())
{
destroyApp(true);
}
if(!LoadMenuImages())
{
destroyApp(true);
}
System.gc();
System.out.println("StartApp() GC");
if(LoadUserPrefs()== false)
{
Basketball.hMenuWnd = new FrontEnd(32);
myDisplay.setCurrent(myCanvas);
return;
}
else
{
Basketball.hMenuWnd = new FrontEnd(0);
myDisplay.setCurrent(myCanvas);
return;
}
}
private void TouchEmAll()
{
FrontEnd.Touch();
Game.Touch();
RenderObj.Touch();
Player.Touch();
win.Touch();
bhFont.Touch();
png.Touch();
bhCanvas.Touch();
}
public void pauseApp()
{
// StopAllSounds();
if(Basketball.hGameWnd == win.getFocus()&& Basketball.hGameWnd.ChkGameReady())
{
Basketball.hGameWnd.PauseGame();
}
if(null != myCanvas)
{
myCanvas.pauseApp();
}
UnLoadFrontEndOnlyJingle();
System.gc();
return;
}
public void resumeApp()
{
if(Basketball.hGameWnd == null)
{
System.out.println("Trying to load jingle BasketballJava ResumeApp()");
// Basketball.Play(Basketball.pSndJingle, - 1);
}
else
System.out.println("resumeApp gamewnd not null");
}
public void destroyApp(boolean unconditional)
{
myCanvas.stop();
SaveUserPrefs();
UnLoadMenuImages();
Basketball.hMenuWnd = null;
Basketball.hGameWnd = null;
System.gc();
System.out.println("destroyApp() GC");
}
public void exitApp()
{
destroyApp(false);
notifyDestroyed();
}
public static Image getImage(String name)
{
Image finalImage;
try
{
finalImage = Image.createImage(name);
}
catch(Throwable e)
{
long iMem = Runtime.getRuntime().freeMemory();
myDisplay.setCurrent(
new Alert(
"ERROR",
"Sorry - Not enough memory to continue",
null,
AlertType.ERROR));
return null;
}
return finalImage;
}
private static void SetUserDefaults()
{
Basketball.bSavedGames = false;
Basketball.iQuarterlength = 180000;
// Basketball.bVibrationON = true;
// Basketball.bSoundOn = true;
}
private static boolean LoadUserPrefs()
{
if(win.BufferOpen("savegame.dat", false)== false)
{
SetUserDefaults();
if(win.BufferOpen("savegame.dat", true)== false)
return false;
}
else
{
try
{
byte pBuf[]= new byte[7];
win.BufferSeek(0, 2155);
win.BufferRead(pBuf, 7);
ByteArrayInputStream pBS = new ByteArrayInputStream(pBuf);
DataInputStream pDI = new DataInputStream(pBS);
Basketball.bSavedGames = pDI.readBoolean();
Basketball.bSoundOn = pDI.readBoolean();
Basketball.bVibrationON = pDI.readBoolean();
Basketball.iQuarterlength = pDI.readInt();
pDI.close();
}
catch(Exception e)
{
SetUserDefaults();
}
if(Basketball.iQuarterlength < 180000)
{
SetUserDefaults();
}
}
win.BufferClose();
/*if(Basketball.bSoundOn)
Basketball.SetSoundON(true);
else
Basketball.SetSoundON(false);*/
return true;
}
public static void SaveUserPrefs()
{
if(win.BufferOpen("savegame.dat", false)== false)
{
if(win.BufferOpen("savegame.dat", true)== false)
return;
}
try
{
ByteArrayOutputStream pBS = new ByteArrayOutputStream(7);
DataOutputStream pDI = new DataOutputStream(pBS);
pDI.writeBoolean(Basketball.bSavedGames);
pDI.writeBoolean(Basketball.bSoundOn);
pDI.writeBoolean(Basketball.bVibrationON);
pDI.writeInt(Basketball.iQuarterlength);
win.BufferSeek(0, 2155);
win.BufferWrite(pBS.toByteArray(), 7);
pDI.close();
}
catch(Exception e)
{
}
}
public static boolean LoadMenuImages()
{
System.out.println("LoadMenuImages!!!!!");
if(Basketball.pButton == null)
Basketball.pButton = Basketball.getImage("/button.png");
else
System.out.println("No Menu image unloaded needed");
if(Basketball.pButton == null)
return false;
if(FrontEnd.LoadFrontEndOnlyArt()== false)
return false;
return true;
}
public static boolean LoadFrontEndOnlyJingle()
{/*
if(Basketball.pSndJingle == null){
Basketball.pSndJingle = Basketball.LoadSnd("/theme.mid", "audio/midi");
System.out.println("LoadedSnd LoadFrontEndOnlyJingle() + Repeat " + - 1);
}
Basketball.Play(pSndJingle, - 1);*/
System.out.println("Play LoadFrontEndOnlyJingle()");
return true;
}
public static void UnLoadMenuImages()
{
UnLoadFrontEndOnlyJingle();
FrontEnd.UnLoadFrontEndOnlyArt();
Basketball.pButton = null;
}
public static void UnLoadFrontEndOnlyJingle()
{
/*if(Basketball.pSndJingle == null)
return;*/
// Basketball.Stop();
}
public static int sqrtN(int a)
{
int g = 1;
int ng = 0;
int og = 0;
while(g != ng && g != og)
{
og = ng;
ng = g;
g =((a / ng)+ ng)/ 2;
}
return(g);
}
public static int ABS(int x)
{
if(x < 0)
return - x;
return x;
}
static final int BUTTON_LAYOUT[][]=
{
{ 0, 0, 80, 16 },
{ 0, 16, 80, 16 },
{ 0, 32, 80, 16 },
{ 80, 0, 50, 16 },
{ 80, 16, 50, 16 },
{ 80, 32, 50, 16 },
};
private static final String PLAYNAMES[]=
{
/*"Isolation",
"High Screen",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -