贪吃蛇的算法分析(5)
James @ www.chenshen.com
WormMain类
最主要的类,继承自MIDlet父类并实现了CommandListener接口。
l protected void startApp()
实现MIDlet父类的方法,当开始程序时首先执行这个函数
// 显示画板 Display.getDisplay(this).setCurrent(theGame); try { // 开始游戏线程 Thread myThread = new Thread(theGame); myThread.start(); } catch (Error e) { destroyApp(false); notifyDestroyed(); } |
l public void commandAction(Command c, Displayable d)
接受并处理用户输入事件
// 重新开始 if (c == restartCmd) { theGame.restart(); };
// 改变难度等级 if (c == levelCmd) { Item[] levelItem = { new Gauge("Level", true, 9, theGame.getLevel()) }; Form f = new Form("Change Level", levelItem); f.addCommand(OKCmd); f.addCommand(cancelCmd); f.setCommandListener(this); Display.getDisplay(this).setCurrent(f); };
// 离开游戏 if (c == exitCmd) { destroyApp(false); notifyDestroyed(); };
// 开始游戏 if (c == startCmd) { theGame.removeCommand(startCmd); theGame.addCommand(restartCmd); theGame.restart(); };
// 确定 if (c == OKCmd) { Form f = (Form)d; Gauge g = (Gauge)f.get(0); theGame.setLevel(g.getValue()); Display.getDisplay(this).setCurrent(theGame); };
// 取消 if (c == cancelCmd) { Display.getDisplay(this).setCurrent(theGame); };
// 打开音效 if (c == audioOnCmd) { /* 打开音效 */ theGame.createAudioPlayer(); theGame.removeCommand(audioOnCmd); theGame.addCommand(audioOffCmd); };
// 关闭音效 if (c == audioOffCmd) { /* 关闭音效 */ theGame.destroyAudioPlayer(); theGame.removeCommand(audioOffCmd); theGame.addCommand(audioOnCmd); } |
关于作者:
沈晨,高级程序员,SCJP
August 10, 2003