private void input()
{
int keyStates = getKeyStates();
if ((keyStates & LEFT_PRESSED) != 0)
mX = Math.max(0, mX - 1);
if ((keyStates & RIGHT_PRESSED) != 0)
mX = Math.min(getWidth(), mX + 1);
if ((keyStates & UP_PRESSED) != 0)
mY = Math.max(0, mY - 1);
if ((keyStates & DOWN_PRESSED) != 0)
mY = Math.min(getHeight(), mY + 1);
}
private void render(Graphics g)
{
g.setColor(0xffffff);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0x0000ff);
g.drawLine(mX, mY, mX - 10 + mState, mY - 10);
g.drawLine(mX, mY, mX + 10, mY - 10 + mState);
g.drawLine(mX, mY, mX + 10 - mState, mY + 10);
g.drawLine(mX, mY, mX - 10, mY + 10 - mState);
flushGraphics();
}
}
mport javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class SimpleGameMIDlet
extends MIDlet
implements CommandListener {
private Display mDisplay;
private SimpleGameCanvas mCanvas;
private Command mExitCommand;
public void startApp() {
if (mCanvas == null) {
mCanvas = new SimpleGameCanvas();
mCanvas.start();
mExitCommand = new Command("Exit", Command.EXIT, 0);
mCanvas.addCommand(mExitCommand);
mCanvas.setCommandListener(this);
}
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mCanvas);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {
mCanvas.stop();
}
public void commandAction(Command c, Displayable s) {
if (c.getCommandType() == Command.EXIT) {
destroyApp(true);
notifyDestroyed();
}
}
}
在游戏开发中我们通常都要设置背景,TiledLayer就是为了解决这个问题而出现的。TiledLayer可以把一个整图分割成若干个你指定尺寸的小图,而你按照小图的编号来安排你的背景样子。例如下面的图片的大小为64*48
通过下面的代码我们可以创建一个这样的Tile
Image image = Image.createImage("/board.png");
TiledLayer tiledLayer = new TiledLayer(10, 10, image, 16, 16);
现在我们就可以按照我们的需要来布局背景了,通过方法setCell()。例如
int[] map = { 1, 1, 1, 1, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 1,
1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 11, 0, 0, 0,
0, 0, 0, 0, 7, 6, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 0, 0 };