通过游戏代码学J2ME(一)

通过一款游戏的代码分析,从中学习掌握MIDP的开发知识。
以一个简单的射击类游戏为说明,代码中较多的涉及控制操作,显示操作的内容。
这个游戏由7个类组成,其中可以分为
主类 : planemain.java
游戏动作类: cortrol.java
游戏属性类: plane.java bullet.java
游戏辅助类:about.java cover.java backdrop.java
首先来介绍主类的代码
planemain.java   

package npc7776; // 包名

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;//引入相关的J2ME包

/*********************************************
 * 类功能介绍:主要屏幕用于控制现实启动封面及启动游戏
 *********************************************/

public class planemain
    extends MIDlet
    implements CommandListener { // 注释一
  private Display display = null;
  private List mainList = null;
  private Command cmdQuit, cmdOk;//注释二

  public planemain() {
    String option[] = {
        "继续", "新开一局", "最高分", "帮助", "关于"};
    mainList = new List("选项", List.IMPLICIT, option, null);
    display = Display.getDisplay(this);
    cmdQuit = new Command("退出", Command.EXIT, 1);
    cmdOk = new Command("选择", Command.OK, 2);
    mainList.addCommand(CmdQuit);
    mainList.addCommand(CmdOk);
    mainList.setCommandListener(this);
  }                              //注释三

  public void startApp() {
    display.setCurrent(new cover(this)); //注释四
  }

  public void pauseApp() {
  }

  public void destroyApp(boolean unconditional) {
    mainList = null;
    display = null;
  }

  /*************************************************
   * 功能介绍: 返回到主界面
   * 输入参数:
   * 返回参数:
   *************************************************/

  public void goBack() {
    display.setCurrent(mainList); // 显示主屏幕
  }                                    //注释五

  public void commandAction(Command c, Displayable d) {//注释六
    if (c == cmdOk) {
      switch (mainList.getSelectedIndex()) {
        case 0:
          break;
        case 1:
          display.setCurrent(new cortrol(this));
          break;
        case 2:
          break;
        case 3:
          break;
        case 4:
          display.setCurrent(new about(this));
          break;
      }
    }
    if (c == cmdQuit) {
      destroyApp(true);
      notifyDestroyed();
    }
  }                               //注释 七

}

注释:
一  . 通过代码:public class planemain extends MIDlet implements CommandListener 定义一个名为 planemain 的类,这个类通过MIDlet

派生,MIDlet 是一个虚类,从这个类派生时需要重载startApp,pauseApp,destroyApp 这3个方法,他们是在MIDlet状态发生改变时会被调用。
      1.当程序第一次运行或是恢复运行时,startApp方法会被调用。
      2.当程序暂停执行时,pasuseApp方法会被调用。
      3.当程序退出时,destroyApp方法会被调用。
同时planemain 类实现了CommandListener接口,实现这个接口是为了让 planemain 对象能够处理来自窗口的菜单命令。

二  .private Display display = null; private List mainList = null; private Command cmdQuit, cmdOk;这里我们定义了显示类,List

类和俩个事件按钮。

三  .public planemain(){} 在构造方法中,定义了List加载的内容,设定当前窗体,并定义监听事件。mainList.addCommand(CmdQuit) 的作用

是把命令添加到mainList中去,然后调用mainList.setCommandListener(this)将命令监听器设置在planemain对象上。

四  . 显示封面俩秒。startApp 这里我们在窗体开始后,设定窗体显示。注意我们将当前设定赋予cover类。在cover类中我们只现实封面特定

的时间(cover类将在后面写到).

五  .goBack类由cover类调用,在封面结束后,显示本页内容. 这里只做理解,等以后写到cover 类就会明白.

六  .commandAction 方法是CommandListener 接口所要求实现的方法,用于菜单命令处理.

七  .整个commandAction方法主要是监听控制按钮动作.在选取项目后点击确认分别作不同的处理.当选取继续时可以向其他页调用转回,选取新

开游戏时将当前页面交给cortrol类.当选择关于时,将当前页面控制权交给about类.最后当我们点下的是退出按钮时,则退出当前游戏,此时程序

将会调用destroyApp()方法.mainList.getSelectedIndex()意思是得到被选中的选项的位置索引.


注意 : 如果把上段代码写入JB 会出现一些红线.因为一些类还没有写,主要是理解程序,cover,about,cortrol类将在近期写出.

刚学j2me 如果有写的不对地方请大家指导.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值