贪吃蛇的算法的方法介绍

贪吃蛇的算法的方法介绍

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

www.chenshen.com

JinaShen@BenQ.com

August 10, 2003