使用Game API开发J2ME 2D游戏[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

    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 };

本文关键:使用Game API开发J2ME 2D游戏
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top