贪吃蛇的算法分析(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