📄 sokoban.java
字号:
/* * @(#)Sokoban.java 1.4 01/04/04 * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved. */package examples.sokoban;import javax.microedition.lcdui.*;import javax.microedition.midlet.*;import java.io.*;/** * Sokoban implements the command handling and initialization * needed to be a MIDlet. It creates and initializes the commands, * scores, and Sokoban canvas that displays the game board. */public class Sokoban extends MIDlet implements CommandListener { Display display; SokoCanvas canvas; Score score; Screen scoreScreen; Command undoCommand = new Command("Undo", Command.BACK, 1); Command restartCommand = new Command("Start Over", Command.SCREEN, 21); Command exitCommand = new Command("Exit", Command.EXIT, 60); Command scoresCommand = new Command("Show Scores", Command.SCREEN, 25); Command okCommand = new Command("OK", Command.OK, 30); Command nextCommand = new Command("Next Level", Command.SCREEN, 22); Command prevCommand = new Command("Previous Level", Command.SCREEN, 23); /** * Creates a new Sokoban instance and caches the Display, * Score, and SokoCanvas objects. */ public Sokoban() { display = Display.getDisplay(this); score = new Score(); canvas = new SokoCanvas(this, score); } /** * The startApp method opens the score file and retrieves * the last level. The method initializes the canvas * and adds the commands to it and make itself the listener * for the commands. * It should return immediately to keep the dispatcher * from hanging. */ public void startApp() { score.open(); canvas.addCommand(undoCommand); canvas.addCommand(scoresCommand); canvas.addCommand(restartCommand); canvas.addCommand(exitCommand); canvas.addCommand(nextCommand); canvas.addCommand(prevCommand); canvas.setCommandListener(this); display.setCurrent(canvas); canvas.init(); } /** * The pauseApp method is used to close the store of Scores. */ public void pauseApp() { score.close(); } /** * Destroy must cleanup. * Close the store of scores. */ public void destroyApp(boolean unconditional) { score.close(); } /* * Respond to a commands issued on any Screen */ public void commandAction(Command c, Displayable s) { if (c == undoCommand) { canvas.undoMove(); } else if (c == restartCommand) { canvas.restartLevel(); } else if (c == scoresCommand) { scoreScreen = canvas.getScoreScreen(); scoreScreen.addCommand(okCommand); scoreScreen.setCommandListener(this); display.setCurrent(scoreScreen); } else if (c == okCommand && s == scoreScreen) { display.setCurrent(canvas); } else if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } else if (c == List.SELECT_COMMAND && s == canvas) { // Solved the level scoreScreen = canvas.getScoreScreen(); scoreScreen.addCommand(okCommand); scoreScreen.setCommandListener(this); display.setCurrent(scoreScreen); canvas.nextLevel(1); } else if (c == nextCommand) { canvas.nextLevel(1); display.setCurrent(canvas); } else if (c == prevCommand) { canvas.nextLevel(-1); display.setCurrent(canvas); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -