通过游戏代码学J2ME(一)

本文通过对一款简单射击类游戏的代码分析,介绍MIDP开发知识。该游戏由7个类组成,重点分析主类planemain.java,包括其包名、引入的J2ME包、构造方法、状态改变方法及菜单命令处理方法等,帮助读者理解J2ME游戏开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过一款游戏的代码分析,从中学习掌握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 如果有写的不对地方请大家指导.
05-08
### 关于微信及其相关功能的使用指南和开发文档 #### 微信视频号功能开发指南 微信视频号作为一个新兴的内容分享平台,提供了丰富的API支持开发者构建应用程序。通过VideosApi,开发者能够实现视频上传、管理和推荐等功能[^1]。这些功能不仅增强了用户体验,还促进了内容创作者与观众之间的互动。 为了保障用户权益以及数据的安全性,在开发过程中需特别注意版权问题及相关法律法规的要求[^1]。此外,合理设计隐私策略也是不可或缺的一部分,确保收集到的信息得到妥善保管并按照规定用途使用。 #### 小程序登录机制详解 对于基于微信生态的小程序而言,其核心之一便是身份验证流程。以下是关于如何利用`wx.login()`函数完成整个过程的具体描述: 小程序前端部分先调用 `wx.login()` 来取得临时票据即 code 值;随后借助该值连同其他必要参数一起传递至后台服务器进行下一步处理[^2]。而后台则负责向官方提供的 auth.code2Session 接口发起 HTTPS 请求,并附带 appid、appsecret 和先前获得的 code 参数来换取 session_key 及 openid 等信息[^2]。 ```javascript // 示例代码展示小程序端获取code的过程 wx.login({ success (res) { if (res.code) { console.log('Login succeeded! Code:', res.code); // 发送code给后端... } else { console.error('Failed to login, error message:', res.errMsg); } }, }); ``` 一旦成功接收到上述两项关键要素之后,就可以据此创建属于自己的 token 并将其反馈回客户端保存起来以便后续操作所需[^2]。 #### 微信支付集成方案概述 针对拥有PC站点的企业或者个人来说,“Native 支付”可能是最合适的解决方案之一[^3]。它允许商家无需跳转页面即可让用户顺利完成付款动作。不过在此之前还需要经历几个必要的环节——首先是准备齐全所需的材料并向腾讯公司递交审核申请;待批准后再签订合作协议从而正式成为合法注册商户进而拿到专属编号(即所谓的“商户号”)作为开展业务的前提条件[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值