📄 menu.java
字号:
import javax.microedition.lcdui.Canvas;import javax.microedition.midlet.MIDlet;public class Menu { private Main midlet; private Engine engine; private EngineState state; private AbstractMenu menu; private MainMenu mainMenu; private LevelMenu levelMenu; private boolean stepEnabled = true; public Menu() { mainMenu = new MainMenu(); levelMenu = new LevelMenu(); menu = mainMenu; state = new EngineState(); } public int getSelected() { return menu.getSelected(); } public void keyPressed(int keycode) { menu.keyPressed(keycode); } public MenuItem[] getItems() { return menu.getItems(); } public void setMIDlet(MIDlet midlet) { this.midlet = (Main) midlet; } public void setEngine(Engine engine) { this.engine = engine; engine.getState(state); } public void showResumeItem(boolean show) { mainMenu.showResumeItem(show); } public void resetSelected() { menu.resetSelected(); } private abstract class AbstractMenu { protected MenuItem back = new MenuItem("Back", true); protected MenuItem[] items; private int selected = 0; public void keyPressed(int keycode) { if (stepEnabled) { if ((keycode == Canvas.UP) && (selected > 0)) { setSelected(-1); return; } if ((keycode == Canvas.DOWN) && (selected < (items.length -1))) { setSelected(1); return; } } if (keycode == Canvas.FIRE) { executeCommand(selected); } } public MenuItem[] getItems() { return items; } public int getSelected() { return selected; } private void setSelected(int step) { if (step > 0) { selected++; } else { selected--; } if (!items[selected].isEnabled()) { setSelected(step); } } protected void resetSelected() { selected = 0; } protected abstract void executeCommand(int selected); } static class MenuItem { private String text; private boolean enabled; public MenuItem(String text, boolean enabled) { this.text = text; this.enabled = enabled; } public String getText() { return text; } public boolean isEnabled() { return enabled; } public void setText(String text) { this.text = text; } public void setEnabled(boolean enabled) { this.enabled = enabled; } } private class MainMenu extends AbstractMenu { protected static final int ITEM_RESUME = 0; protected static final int ITEM_START = 1; protected static final int ITEM_DOWNLOADLEVELS = 2; protected static final int ITEM_HELP = 3; protected static final int ITEM_EXIT = 4; protected MenuItem[] mainItems1 = { new MenuItem("Start Game", true), new MenuItem("Download Levels", true), new MenuItem("Game Help", true), new MenuItem("Exit", true), }; protected MenuItem[] mainItems2 = { new MenuItem("Resume Game", true), new MenuItem("Start Game", true), new MenuItem("Download Levels", true), new MenuItem("Game Help", true), new MenuItem("Exit", true), }; public MainMenu() { items = mainItems1; } protected void executeCommand(int selected) { if ((items == mainItems1)) { selected++; } switch (selected) { case ITEM_START: levelMenu.setItems(engine.getAvailableLevels()); menu = levelMenu; break;
case ITEM_DOWNLOADLEVELS:
engine.currentNum = 0;
engine.totalNum = 10;
engine.downloadLevel = true;
engine.setState(Engine.PROGRESS); break; case ITEM_HELP:
engine.setState(Engine.HELP); break; case ITEM_EXIT: engine.stop(); midlet.destroyApp(true); break; case ITEM_RESUME: engine.setState(Engine.PLAY); engine.resumeGame(); midlet.showCommandExit(true); } } protected void showResumeItem(boolean show) { if (show) { items = mainItems2; } else { items = mainItems1; } } } private class LevelMenu extends AbstractMenu { protected MenuItem[] levelItems; protected int levels = 0; protected void executeCommand(int selected) { if (selected < levels) { engine.startGame(selected); midlet.showCommandExit(true); mainMenu.showResumeItem(true); } menu = mainMenu; resetSelected(); } public void setItems(int levels) { this.levels = levels; levelItems = new MenuItem[levels + 1]; for (int i = 0; i < levels; i++) { levelItems[i] = new MenuItem("Level " + (i + 1), true); } levelItems[levels] = back; items = levelItems; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -