扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
package net.frog_parrot.jump; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * This is the main class of the Tumbleweed game. * * @author Carol Hamer */ public class Jump extends MIDlet implements CommandListener { //--------------------------------------------------------- // Commands /** * The command to end the game. */ private Command myExitCommand = new Command("Exit", Command.EXIT, 99); /** * The command to start moving when the game is paused. */ private Command myGoCommand = new Command("Go", Command.SCREEN, 1); /** * The command to pause the game. */ private Command myPauseCommand = new Command("Pause", Command.SCREEN, 1); /** * The command to start a new game. */ private Command myNewCommand = new Command("Play Again", Command.SCREEN, 1); //--------------------------------------------------------- // Game object fields /** * The canvas that all of the game will be drawn on. */ private JumpCanvas myCanvas; /** * The thread that advances the cowboy. */ private GameThread myGameThread; //----------------------------------------------------- // Initialization and game state changes /** * Initialize the canvas and the commands. */ public Jump() { try { myCanvas = new JumpCanvas(this); myCanvas.addCommand(myExitCommand); myCanvas.addCommand(myPauseCommand); myCanvas.setCommandListener(this); } catch(Exception e) { errorMsg(e); } } /** * Switch the command to the play again command. */ void setNewCommand () { myCanvas.removeCommand(myPauseCommand); myCanvas.removeCommand(myGoCommand); myCanvas.addCommand(myNewCommand); } /** * Switch the command to the go command. */ private void setGoCommand() { myCanvas.removeCommand(myPauseCommand); myCanvas.removeCommand(myNewCommand); myCanvas.addCommand(myGoCommand); } /** * Switch the command to the pause command. */ private void setPauseCommand () { myCanvas.removeCommand(myNewCommand); myCanvas.removeCommand(myGoCommand); myCanvas.addCommand(myPauseCommand); } //---------------------------------------------------------------- // Implementation of MIDlet. // These methods may be called by the application management // software at any time, so you always check fields for null // before calling methods on them. /** * Start the application. */ public void startApp() throws MIDletStateChangeException { if(myCanvas != null) { if(myGameThread == null) { myGameThread = new GameThread(myCanvas); myCanvas.start(); myGameThread.start(); } else { myCanvas.removeCommand(myGoCommand); myCanvas.addCommand(myPauseCommand); myCanvas.flushKeys(); myGameThread.resumeGame(); } } } /** * Stop and throw out the garbage. */ public void destroyApp(boolean unconditional) throws MIDletStateChangeException { if(myGameThread != null) { myGameThread.requestStop(); } myGameThread = null; myCanvas = null; System.gc(); } /** * Request the thread to pause. */ public void pauseApp() { if(myCanvas != null) { setGoCommand(); } If(myGameThread != null) { myGameThread.pauseGame(); } } //---------------------------------------------------------------- // Implementation of CommandListener /* * Respond to a command issued on the Canvas. * (either reset or exit). */ public void commandAction(Command c, Displayable s) { if(c == myGoCommand) { myCanvas.removeCommand(myGoCommand); myCanvas.addCommand(myPauseCommand); myCanvas.flushKeys(); myGameThread.resumeGame(); } else if(c == myPauseCommand) { myCanvas.removeCommand(myPauseCommand); myCanvas.addCommand(myGoCommand); myGameThread.pauseGame(); } else if(c == myNewCommand) { myCanvas.removeCommand(myNewCommand); myCanvas.addCommand(myPauseCommand); myCanvas.reset(); myGameThread.resumeGame(); } else if((c == myExitCommand) || (c == Alert.DISMISS_COMMAND)) { try { destroyApp(false); notifyDestroyed(); } catch (MIDletStateChangeException ex) { } } } //------------------------------------------------------- // Error methods /** * Converts an exception to a message and displays * the message. */ void errorMsg(Exception e) { if(e.getMessage() == null) { errorMsg(e.getClass().getName()); } else { errorMsg(e.getClass().getName() + ":" + e.getMessage()); } } /** * Displays an error message alert if something goes wrong. */ void errorMsg(String msg) { Alert errorAlert = new Alert("error", msg, null, AlertType.ERROR); errorAlert.setCommandListener(this); errorAlert.setTimeout(Alert.FOREVER); Display.getDisplay(this).setCurrent(errorAlert); } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者