




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 前前 言言 1 1 第一章第一章绪绪 论论 4 4 1 1 手机软件现状 4 1 2 JAVA 和 J2ME 概况 4 1 2 J2ME 现状和前景展望 5 1 3 手机游戏业务 7 第二章第二章 开发环境及相关技术的介绍开发环境及相关技术的介绍 9 9 2 1 J2ME 平台总体结构 9 2 2 J2ME 分层结构及 MIDP 简介 9 2 3 J2ME WIRELESS TOOLKIT搭建 11 2 3 1 安装 J2ME Wireless ToolKit 12 2 3 2 使用 J2ME Wireless ToolKit 14 第三章第三章 手机俄罗斯游戏程序的开发手机俄罗斯游戏程序的开发 1717 3 1 程序流程设计 17 3 2 程序分析和具体实现 19 3 2 1 操作流程设计 19 3 2 2 算法实现 20 3 2 3 数据结构 22 第四章第四章 手机电话本程序的开发手机电话本程序的开发 2525 4 1 开发手机电话本需解决的相关技术问题 25 4 2 程序构思和流程 25 4 3 程序分析和具体实现 27 4 3 1 电话本进入前的选择 27 4 3 2 电话本设计及其涉及到的若干类 28 4 4 手机电话本的代码实现 30 设设 计计 总总 结结 3939 参考文献参考文献 4141 前前 言言 Java 语言是美国 Sun Microsystem 的 James Gosling Pratrick Naughton 及 Mike Sheridan 等人于 1991 年精心设计出来的计算机编程语言 其构想在于实现使用 同一种编程语言所写出来的程序可以在不同的平台上运作 这种架构对于消费性电子 产品而言是具有革命性的 因为在消费性电子产品中的处理器及操作系统各不相同 要在这些平台上开发程序必须要了解各个平台的特性 以及其提供的 API 使用方式 分别开发不同的版本才能执行 影响应用程序的普及性 近几年 由于微处理器性能的大幅提升 加上无线通讯技术的突破 手持式移动 设备开始受到大众的青睐 短短几年内 手机已经升级了几代产品 普及率逐年攀升 生产效率不断上升 产品价格比个人电脑的摩尔定律有更惊人的下调 以至手机是大 多是城市居民不可缺少的一件随身设备 继短信 彩信等服务之后 中国移动提供基 于 Java 的百宝箱业务 应用产品遍及商务应用 信息获取 英汉互译 游戏娱乐等多 媒体领域 根据官方公布的统计数据 我国移动电话用户已突破 3 亿 依托这样的市 场 一旦无线 Java 应用大规模开展起来 将会创造出比短信业务更为惊人的利润 Java 语言原先的开发目的与市场的需求不谋而合 并且也已经成为手机应用程序开发 的标准 国际大公司如 Nokia Motorola 及 Siemens 等所设计的手机内都加入 Java 程 序的支持 可见在不久的将来 Java 将会成为移动设备上最热门的语言 手机中将 Java 语言引入 作为一种通用的开发标准 并将向市场推广普及仅仅短 短几年 J2ME 仍是一种新型的技术 中文资料除台湾出版过相关书籍外 国内相关介 绍资源很有限 国内 J2ME 开发商也屈指可数 名声较响的 Digital Red 公司也仅成立 于 1999 年 采用早期的 KVM 和 com sun kjava 包 或者加上第三方的 kawt 类库 有很多早期 的文章和代码 但是这一技术将被 PDA Profile 取代 而且不保证兼容性 不建议开 发者采用这一方法 而是等待 PDA Profile 的最后完成及其实现 采用 CLDC 和 MIDP 开发 由于 MIDP 标准发布较早 智能手机的市场也远比 PDA 大 得多 这是目前大量的无线应用文章的主要内容 不过它最适合的目标是智能手机 虽然智能手机可能有一定的 PDA 的功能 但是这一技术并不是最适合 PDA 的 采用 CDC 和 Personal Profile 这样的技术不太多见 目前的移动信息设备硬件 能力还有所不足 但是下一代的 PDA 和智能手机肯定可以支持 就现有的 PDA 硬件条件而言 J2ME 应用要和已有的应用竞争还有比较多的困难 空间 现在一般的 Palm 类设备内存从 2M 到 16M 不等 目前较高档的机型都已支 持扩展卡 可以扩展到 128M 但是卡上运行程序的速度要慢得多 一般主要用来放数 据 运行程序不能依赖于卡 Palm 上一般现有程序的标准大小是几十 K 到 300K 以下 而仅 MIDP 的 Palm 参考实现库在 Palm 上就需要将近 600K 再加上 作为基础的 CLDC 库 加上程序 就快要接近 1M 了 和已有的应用相比 目前是没有 太大竞争力的 速度 由于 Palm 一直信奉的是 简单就是美 的原则 目前的 Palm 系列 PDA 主要 用的是 33MHz 的 Motorola 68000 系列 DragonBall 这虽然带来了成本的降低和节电 性 但 J2ME 应用的性能很难让人满意了 功能 目前最适合 Palm 的 PDA Profile 尚未完成 如果用 MIDP 开发则不太合适 用早期的 KVM 和 com sun kjava 则因为不是 J2ME 标准 程序兼容性无法保证 虽然如此 但是在移动信息设备上开发 J2ME 应用的前景还是非常美好的 硬件的发展 目前的 Palm 配 8M 到 16M 内存已经是主流 下一代超过 32M 是必然的 趋势 Palm OS 5 终于开始支持 32 位的 ARM RISC 处理器 其速度应该能够提高 10 倍 以上 事实上 Sharp 公司今年第一季度发售的 Zaurus SL 5500 已经采用了 Intel 206MHz StrongARM 处理器和 64M 内存 在这样的硬件上速度和内存都不会成为问题 标准的完善 PDA Profile 今年内将最后完成 可以预计很快会在主要操作系统上得 到实现 目前在 JCP 也有许多其他标准非常有意义 例如关于蓝牙技术 Bluetooth 游戏 定位等 平台的广泛性 移动信息设备的主要操作系统平台都是开放的 J2ME 的标准也是开 放的 因此基本上所有的主要操作系统平台都支持或将支持 J2ME 这带来的广阔市场 智能手机的市场尤其巨大 据称 Norkia 到今年就可以出货 5000 万只 Java 手机 而 到 2003 年可达 1 亿只 和真正的 一次编写 到处运行 是任何其他技术无法比拟的 对于开发者而言 可以不受操作系统的限制 不用担心在这个多变的市场上因平台的 变化而影响自己的应用 第一章第一章绪绪 论论 1 11 1 手机软件现状手机软件现状 在信息社会中 手机及其他无线设备越来越多的走进普通百姓的工作和生活 随 着信息网络化的不断进展 手机及其他无线设备上网络势在必行 但是传统手机存在 以下弊端 1 传统手机出厂时均由硬件厂商固化程序 程序不能增加 删除 有了错误也 不能更新 修改 若要增加新功能必须另换一部手机 2 传统手机访问互联网是通过 WAP Wireless Application Protocal 所有网 络资源必须接通网络才能在线访问 非常耗时 费用亦很高 而 Java 技术在无线应用方面的优势非常明显 1 应用程序可按需下载 而不是购买由硬件商提供的套件 可升级空间大 2 Java 技术提供了一个类库 它使的应用开发商可以创建更为直觉 丰富的用 户界面 GUI 3 Java 技术使网络带宽的应用更为有效 因为应用程序可以下载到器件上 并 在本地运行 仅仅是在连接到服务器时才会占用网络带宽 基于以上分析 Java 手机将是未来手机的发展方向 是业界的热点 1 21 2 JAVAJAVA 和和 J2MEJ2ME 概况概况 虽然 Java 已经被用到许多企业级软体上 可 是其实骨子里面还是非常适合用在嵌入式系统之中 Java 平台演进到 Java2 后 Java 平台分别针对不同 领域的需求被分成四个版本 亦即 J2EE J2SE J2ME 以及 JavaCard 其结构示意图见 图 1 1 其中 J2ME 定位在消费性电子产品的应用上 这个版本针对资源有限的电子消费产品的需求精简 核心类库 并提供了模块化的架构让不同类型产品能够随时增加支持的能力 这个版 图 1 1 Java 平台的结构 本的应用层面相当广泛 会是未来 Java 平台发展的重点项目 J2ME 在设计其规格的 时候 遵循着 对各种不同的装置而造出一个单一的开发系统是没有意义的事 这个 基本原则 于是 J2ME 先将所有的嵌入式装置大体上区分为两种 一种是运算功能有 限 电力供应也有限的嵌入式装置 比方说 PDA 手机 另外一种则是运算能力相对 较佳 在电力供应上相对比较充足的嵌入式装置 比方说冷气机 电冰箱 电视机上 盒 set top box 因为这两种型态的嵌入式装置 所以 Java 引入了一个叫做 Configuration 的概念 把上述运算功能有限 电力有限的嵌入式装置定义在 Connected Limited Device Configuration CLDC 规格之中 而另外一种装置则规范为 Connected Device Configuration CDC 规格 也就是说 J2ME 先把所有的嵌入式装置利用 Configuration 的概念区隔成两种抽象的型态 J2ME 平台被认为是最杰出的手机游戏 平台 它为开发者 设备制造商 网络通信公司和消费者广泛接受 它有一些非常重 要的特征对所有组织都有益 因为 J2ME 应用在不同设备上都是便携式的 他们常常可 在网络上下载和执行 如果没有正确的防范 它则为用户和无线通信公司冒着无数个 安全的风险 幸运的是 Java 被设计成一种安全的语言 所有字节码应用在执行之前 都要校验 JVM 在执行过程中监督应用的安全性和存储违反问题 MIDP v2 运行时间包 括一个完全特征化的 基于域的安全管理员 它在应用的数字签名者鉴别的基础上赋 予应用 API 级许可 1 21 2 J2MEJ2ME 现状和前景展望现状和前景展望 在消费电子和嵌入式设备的广阔领域中 目前最受关注的是移动通信设备 因此有必要介绍一下移动通信设备的主要操作系统平台 这对 J2ME 的开发是相当重要 的 移动通信设备主要包括 PDA 和智能手机 现在和将来都还会有一部分设备处于 PDA 和智能手机交界的位置 其中手机的市场远比 PDA 要大得多 所以许多国外谈到 J2ME 的文章都是以 Wireless 应用为主 PDA 也即掌上电脑 一般是指类似于 Palm 公司出品的 Palm 这样的设备 主要 的操作系统有 Palm OS 和 Pocket C 两大阵营 Palm OS 来自 Palm 公司 是一个开放的 系统 在 PDA 市场上占主导地位 已经有非常多的第三方厂商开发的应用和一大批非 常忠实和狂热的用户 目前采用 Palm OS 的主要有 Palm 公司的 Palm 系列和 Sony 公司 的 Clie 系列 Handspring 公司的 Visor 也属于这类产品 但是已经宣布退出传统 PDA 市场 主要发展 PDA 和无线通讯结合的产品 Treo Pocket PC 是微软及其合作伙伴 Casio Compaq Hewlett Packard 和 Symbol 推出 的 基于 Win CE 3 0 也是一个开放的标准系统 功能可以扩展 以往的 Win CE 是一 个封闭的不可扩展的系统 在这个平台上厂商可以自己开发软件 具体产品如 Compaq 的 iPAQ 另外 Sharp 公司 Zaurus 系列 PDA 采用 Linux 的一个针对嵌入式系统的版本 作为拥有高达 64M 内存的高端 PDA 可以满足 CDC 的标准 预装了 Personal Java 的虚 拟机 在智能手机领域 主要的平台是 Symbian 的 EPOC EPOC 最早由 Psion 开发 主 要面向智能手机 也有 PDA 的特征 Psion 就是第一批主要的 PDA 厂商之一 Psion 宣 布 EPOC 的第一个版本是开放的 OS 并向其它厂商授权 随后 Psion 与 Ericsson Nokia 及稍后的 Motorola 建立了名为 Symbian 的联盟 目前主要股东为 Motorola Nokia Panasonic Psion 和 SonyEricsson 而且 Siemens4 月也宣布加入 Symbian 在欧洲有很好的基础 为大多数主要手机厂商所采用 典型的产品如 Norkia 的 9210 在这些操作系统平台中 Palm OS 上已经有了 MIDP 的参考实现 但是并不是最适 合 PDA 的 Profile Symbian 实现了 CLDC 和 MIDP 作为智能手机的操作系统 是理想 的 MIDP 应用平台 在 Compaq 的 iPaq 上已经实现了 CDC 基于 Pocket PC 另外前面 提到过 IBM 的 WebSphere Micro Environment 在 Pocket PC 上实现了 CLDC CDC 和 MIDP Sharp 的 Zaurus 实现了 Personal Java 基于 Linux 由于这些主要操作系统 平台都是开放的 基本可以相信 主要的移动通信设备操作系统都将一直提供 J2ME 的 支持 但是具体支持哪个标准则并不一定死板地按照 CLDC 和 CDC 的最初定义 和设备 的硬件条件和厂商的选择有关 或者可能同时实现多个标准 1 31 3 手机游戏业务手机游戏业务 纵观 IT 产业的历史 就像军事的发展时常推动计算机的演化一样 计算机游戏已 经成为技术创新背后的动力之一 计算机游戏者渴望更加强大的硬件计算能力 渴望 不受不同的软件的限制 无论是将图形强制在人工智能 AI 上 还是网络安全性 游戏开发者和玩家常常是前沿计算机技术的最早的采用者 由于他们的创新天性 游 戏不再是由大型采购公司控制的技术产品 游戏领域总是有充足的空间给那些在这 方面有天分的单个创新者 手机游戏的盈利主要是由于它们的涉及面很广 手机已经与现代生活方式紧紧地 结合在一起 他们是最普遍携带的个人用品中仅次于钥匙和钱包的东西 传统的台式 机游戏将目标锁定在低级趣味的人和青少年身上 而手机游戏则每个人都可以访问的 到 随时 随地 尽管每个手机游戏都不贵 但是巨大的使用量 如 每人每星期 一个新游戏 将使得这个市场商机无限 但是 对于开发者来说 将控制台游戏迁移 到手机游戏工程很大 因为他们所面向的对象 生活方式和分布式模型都有着极大的 区别 一个成功的手机游戏大多具有以下特征 易于学习 既然手机游戏面向的是普通消费者而不是计算机专家 那么他们不 可能深入的学习游戏技巧 消费者不会花几个小时去研究一个 3 元的手动操作的游戏 保持游戏的简单是最基本的要求 可中断性 多任务处理是手机生活方式的基本特征 手机用户常常在任务 如 等一个电子邮件或者等车 之间有一小段时间 而游戏 日历管理 通讯和工作数据 访问使用的是同一个设备 所以一个好的手机游戏应该提供短时间的娱乐功能 并且 允许用户在游戏和工作模式之间顺利切换 基于订阅 手机游戏的盈利成功取决于他们巨大的使用量 一开始开发和设计 每个游戏都是昂贵的 如果一个手机游戏开发者要赢利的话 重要的是 同一个游戏 引擎 多个标题 基本的故事情节类似 基于订阅的游戏是不断产生收入的最好方法 丰富的社会交互 不管一个游戏设计得多好 只要玩家找到了它的根本模式或 者玩完了所有的游戏路径很快就会厌烦这个游戏 对于一个基于订阅的游戏 重要的 是与别的玩家合作以增强所玩游戏的智力和随机性 在今天纷繁复杂的多玩家游戏中 具有丰富社会交互的游戏证明是成功的 利用手机技术的优点 巨额的手机技术研发费用都花在提高设备和网络的可用 性和可靠性上面 因此 手机设备硬件和网络协议与桌面 控制台世界 如全球定位系 统 GPS 扩展 条形码扫描仪 和短消息服务 SMS 多媒体信息服务 MMS 通讯 有着 非常大的差别 好的手机游戏应该利用那些更新的设备特征和网络基础设备的优点 无违法内容 既然所有年龄 性别的人群都玩手机游戏并且常常在公共 工作场 合 就应该避免明显的暴力或者色情内容 第二章第二章 开发环境及相关技术的介绍开发环境及相关技术的介绍 2 12 1 J2MEJ2ME 平台总体结构平台总体结构 J2ME 虽然和 J2SE 有着许多不同 但仍然属于 Java 技术 具有 Java 方便开发的优 点 也使得 Java 程序员学习移动信息设备开发没有太大困难 J2ME 其作为一个可以与 J2EE J2SE 相提并论的平台是在 1999 年的 JavaOne 大会 上提出的随着时间的推移与技术逐渐地成熟其平台本身的构架也逐渐演绎嬗变下图给 出 J2ME 一个总体的构架 2 22 2 J2MEJ2ME 分层结构及分层结构及 MIDPMIDP 简简介介 J2ME是SUN的JAVA2平台微型版 JAVA2平台3个版本之一 另两个是标准版J2SE和 企业版J2EE 采用3层结构设计 最低层为配置层 Configuration 包括虚拟机 VM 和类库两部分 这一层与设备层 硬件及操作系统 关系紧密 由SUN提供参考 规范和源代码 设备厂商根据设备特征进行相应的移植 当前J2ME提供有两个配置 连接设备配置 CDC 和有限连接设备配置 CLDC 前者主要面向有较大内存和处理 能力而只需有限功能的设备 如电视置顶盒 冰箱 汽车导航设备等 这些设备都有 连接网络和相互交互的需求 其内存在2M以上 后者主要面向对内存和处理能力有较 大限制的手持设备 如现在使用的手机 PDA等 现在及将来大多数这些设备都已经能 够接入互联网 其内存范围160Kb 其中128Kb用于虚拟机及类库 至少32Kb用于CLDC 规范所要求的应用程序堆栈空间 到2M 二者主要区别在于能提供给VM及应用程序的 存储空间 CDC所用VM及类库实际是参考J2SE标准 去除了不需要的功能如AWT CLDC 所用VM 称作KVM 则有较大区别 包括类验证机制 对于下一代移动终端设备如智能 电话 高端PDA 则是CDC所应用对象 因为它们将有超过2M的内存 设备层之上是简表层 Profile 再之上则是应用层 Application 简表层扩 展了配置层功能为上层应用提供 API 如果说配置层面向设备 简表层则面向应用 可 以根据需要在 CDC 或 CLDC 基础之上提供多种简表 一个配置层之上也可以有多个简表 当前 CDC 之上有基础简表 Foundation Profile 和基于 FP 的 Personal Profile 和 RMI Profile CLDC 之上则主要提供有移动信息设备简表 MIDP 即用于手机 PDA 等移动终端的设备简表 提供 API 以支持无线应用的开发 CLDC 类库一部分来自 J2SE 这部分类库是经过裁减的 去除了不必要的功能 主 要包括 java lang 包中的系统类 数据类型类 异常处理类 java util 包的集合类 时间类和附加工具类 java io 包的 I O 处理类 CLDC 专有类则主要是 通用连接框架 GCF 为 CLDC 提供网络连接功能 这些网络接口都是 Connection 类的子类 由 类 Connector 所提供的方法调用 这些接口或类位于包 javax microedition io CDC 类库则是 CLDC 的超集 因此为 CLDC 开发的应用程序可以移植到 CDC 平台 由 于 CDC 采用标准的 J2SE VM 因此其开发与标准的 J2SE 开发一致 只是在用 javac 工 具编译源代码时需要使用 CDC 的类库 即使用 bootclasspath 参数指向 CDC 类库 MIDP 扩展了 CLDC 的功能 它继承了 GCF 并在此基础上增加了类 HttpConnection 用以提供 HTTP 连接功能 尽管从理论上 CLDC MIDP 可以提供 socket 数据报 文件 NFS 等多种连接类型 但现在标准的 CLDC MIDP 仅支持 HTTP 协议 一些设备实现则提供了 socket 和 HTTPS 协议的支持 MIDP 类库 总结如下 java io java lang java util 属于 MIDP 的核心包 分别用来提供系统 I O 语言支持和工具支持 包中的类来自 CLDC 并稍有增加 但都来自 J2SE javax microedition midlet 定义了 MIDP 应用程序 以及应用程序和它所运行 于环境之间的交互 javax microedition lcdui 为 MIDP 应用程序提供用户界面 API javax microedition rms 用来为 MIDlet 提供持久存储的机制 应用程序可以存 储数据 在以后需要的时候获取这些数据 javax microedition io 提供了基于 CLDC 通用连接框架的网络支持 2 32 3 J2MEJ2ME WirelessWireless ToolkitToolkit 搭建搭建 开发基于 J2ME 平台的手机应用程序第一步就是要选择一个好的开发工具 手 机程序开发与 PC 程序开发有很大的不同点 PC 程序可以直接在 PC 上开发并运行测 试 而在手机上没有也肯定不可能提供应用程序开发集成环境和测试工具 通常情 况下 我们都是先利用 PC 机上 Java 开发工具编写源代码并使用 Java 编译器和 J2ME 库一起生成 J2ME 手机程序 再将该程序上传到手机上运行 现在 大部分手 机厂商都提供其生产的不同机型的模拟器 此模拟器可以在 PC 上直接运行 真实 模拟该型号手机上提供的 J2ME 运行环境 如果安装了手机模拟器 就可以将编译 好的手机程序直接在 PC 的模拟器上测试 等到测试运行正常后再上传到实机上运 行 虽然当前有很多工具都可以开发 J2ME 手机程序 其中不乏有功能强大的 JBuilder 集成开发环境 但是对于初学者来说 使用 UltraEdit NotePad WTK 作为 手机程序的开发工具会更好一点 UltraEdit 和 NotePad 都是 PC 上常用的编辑软件 我们可以使用它们来编写手机程序的代码 然后使用 SUN 提供的 WTK J2ME 无线工 具包 对源代码进行编译 模拟运行以及上传实机 下面我们将重点介绍 WTK 的安 装和使用 2 3 12 3 1 安装安装 J2MEJ2ME WirelessWireless ToolKitToolKit J2ME Wireless ToolKit 它是由 SUN 公司开发用于支持开发那些可在与移动 信息设备框架 MIDP 兼容的设备 如手机 双向呼机和 PDA 上运行的 Java 应用 程序 当前 WTK 的高版本为 2 0 版 它支持最新的 MIDP2 0 您可以到 SUN 网站下 载安装 WTK 下面详细介绍下载安装 WTK 过程 1 登录 SUN J2ME WTK 中文版下载网页 2 中文版是通过本地化补丁实现的 首先需要下载 WTK2 0 英文版本 如图三所 示 在列表框中选择您的 PC 安装的操作系统类型 通常 PC 使用 Windows 系统居多 本文仅以 Windows 平台为例 其它平台可参照 再点击第一个 继续 按钮 图一 下载 WTK2 0 页面部分图 3 如果您未处于登录状态的话 将提示您登录 如果您还未成为 SUN 会员的话 可以马上注册会员 其登录过程同其它网站会员登录过程相似 4 成功登录后 进入英文版文件下载页面 如图四所示 点击下载链接即可下 载英文版文件 j2me wireless toolkit 2 0 windows exe 大小为 9 89M 图二 WTK2 0 英文版文件下载页面部分图 4 运行 j2me wireless toolkit 2 0 windows exe 安装程序 当系统提示您提 供安装目录时 请确保该安装目录的完全合法的路径中不包含任何空格 这将帮助 您在今后使用工具包时避免可能出现的问题 5 安装完 WTK2 0 英文版后 回到图三页面 点击第二个 继续 按钮下载中文 补丁文件 进入中文补丁文件下载页面 如图五所示 点击下载链接即可下载文件 j2me wireless toolkit 2 0 zh zip 大小为 4 07M 图 三 WTK2 0 中文补丁文件下载页面部分图 6 将 j2me wireless toolkit 2 0 zh zip 文件解压缩至 WTK2 0 英文版的安装 目录下 缺省安装目录为 C WTK2 0 确保文件是带着目录路径解压的 7 WTK2 0 中文版本安装成功 2 3 22 3 2 使用使用 J2MEJ2ME WirelessWireless ToolKitToolKit 如果安装 WTK 成功的话 在开始菜单上选择 程序 J2ME Wireless Toolkit2 0 Ktoolbar 启动 WTK 工具程序 主界面如图六所示 图四 WTK 运行界面 WTK 的主要功能包括 新建项目 打开项目 生成项目 运行项目等 新建项目新建项目 在编写手机程序之前 都需要使用 WTK 创建一个新的项目 新建项目的主要步骤 1 点击工具栏 新建项目 按钮 弹出 新建项目 对话框 如图七所示 图五 新建项目对话框 2 在 项目名字 栏中输入项目名称 如 MyProgram 在 MIDlet 类名 栏中 输入您的手机程序的主类名 如 MyMIDlet 在后面章节将会介绍到每个 J2ME 手机 程序都必须有一个 MIDlet 类的子类 3 点击 产生项目 按钮 弹出 项目配置 对话框 在此对话框中可以对项 目的相关配置进行修改 一般情况下都不需要修改 4 点击 确定 按钮 新建项目完成 请注意 此时在主窗口中列出项目 Java 源文件的路径 资源文件路径和库文件的路径的信息 由于 WTK 生成程序时 必须 要求项目的路径结构一定要规范化 否则不能生成运行程序 图八展示了 MyProgram 项目生成后 在 WTK 目录下的路径结构图 WTK 将在其子目 录 apps 下为每个项目创建一个同名子目录 并在此子目录下创建 bin src res lib 四个目录 其中 bin 目录用于存放目标程序 当使用生成工具 产生了可运行的程序将放在此处 一般有 jar 和 jad 文件 其具体意义将在后 面的章节详细说明 src 目录用于存放源代码 res 目录用于存放资源文件 lib 目 录用于存放程序调用的辅助库文件 图六 WTK 项目路径图 打开项目打开项目 打开项目是将已存在的项目打开 作为 WTK 的当前工作项目 通过点击 打开项目 按钮 弹出 打开项目 对话框 您可以从项目列表中选择打开项目 请注意 在 此项目列表中仅能选择 apps 目录下的项目 如果您的项目不在此项目下 将不能 使用 WTK 打开项目 生成项目生成项目 当您新建项目并编写好源代码或者打开旧项目后 可以通过点击工具栏上的 生成 项目 按钮 WTK 将自动调用 Java 编译器为项目程序进行编译 如果程序代码有语 法错误将在主窗口中产生错误提示 否则为项目生成 jar 和 jad 目标文件 运行项目运行项目 成功生成项目目标文件后 可点击工具栏上的 运行项目 按钮 WTK 将启动模拟 器 并加载项目 bin 目录下的 jar 和 jad 文件 模拟器界面同相应型号的外观相 似 您可以通过模拟器上的键盘操作项目程序 图九展示俄罗斯方块游戏游戏在模 拟器上运行结果 图七 俄罗斯方块游戏在模拟器上运行结果图 第三章第三章 手机俄罗斯游戏程序的开发手机俄罗斯游戏程序的开发 3 13 1 程序流程程序流程设计设计 MIDlet suite 是 MIDP 应用程序的最小单位 JAM 负责将手机内的 MIDlet suite 以图形化的方式呈现 让用户能够选取欲执行的 MIDlet suite 一旦选取了某个 MIDlet suite 操作系统就会激活 KVM 执行里面的 MIDlet MIDlet 及相关的支持类组 成了 MIDP 应用程序的实际内容 每个 MIDlet 都必须继承 javax microedition midlet MIDlet 这个抽象类 在 MIDP 规格中定义了 MIDlet 的生命周期 以及可以存在的三种状态 包括 Paused Active 以及 Destroyed 每一个 MIDlet 在任何时刻只可能处于其中的一个状 态 这三种状态的转换关系如图所示 本程序采用面向对象的设计模式 对游戏中的所有物体赋予对象的概念和属性 运行程序后允许用户选择执行选项菜单 用户控制的图片运行在主线程中 然后用户 控制手机键盘 键盘上的数字按键 1 9 控制图片 需要移动旋转某个图片时 只需按 下对应的数字键 主程序流程如图 3 2 所示 消减状态 Destroyed 停止状态 Paused 运行状态 Active StartApp DestroyApp 呼叫 MIDlet 的 构造函数 DestroyApp PauseApp 图 3 1 MIDlet 的流程 3 23 2 程序分析和具体实现程序分析和具体实现 3 2 1 操作流程设计操作流程设计 本游戏的操作流程非常简单 用户启动 MIDlet 启动后 即进入游戏主画面 屏幕开始 显示为欢迎画面 用户按下 开始 按钮后 就可以开始玩游戏了 当用户想暂停时 再次按一下 开始 按钮 游戏就暂停了 在暂停的情况下再按 开始 按钮 游戏继续 运行 任何时候按 退出 按钮 游戏 MIDlet 都会终止 游戏画面流程图如下 图 3 2 本程序的主流程图 3 2 2 算法实现算法实现 MIDP 的游戏设计 本质上就是用一个线程或者定时器产生重绘事件 用线程和用户 输入改变游戏状态 这个游戏也不例外 启动 MIDlet 后 就立即生成一个重绘线程 该线程每隔 50ms 绘制一次屏幕 当然 重绘时有一些优化措施 并不是屏幕上所有的 像素都需要重绘 而是有所选择 比如游戏画布上那些已经固定下来的下坠物 下坠物 一共有 7 种 由 4 个小砖块组成 每种下坠物颜色固定 可以上下左右旋转 就不需重绘 游戏画布是一个 CommandListener 可以接受用户键盘命令 控制下坠物的左移 右移 下移 旋转动作 整个游戏的流程控制体现在游戏画布对象的 paint 方法里 paint 根 据当前的游戏状态 绘制出当时的游戏画面 欢迎画面和 Game Over 画面的绘制相当 简单 游戏暂停画面的绘制也相当容易 就是设立标志 让 paint 执行的时候无需真 正执行重绘动作 对于游戏处于运行状态的画面的绘制 则需要在下坠物的当前位置 绘制下坠物 在绘制下坠物之前 判断下坠物是否还能下坠 如果能下坠的话 就让 它下落一格 再进行绘制 如果下坠物已无法下坠 则判断游戏是否处于 Game Over 状态 如果是处于 Game Over 状态的话 则设置游戏状态为 Game over 状态 这样画 布在下一次重绘时就绘出 Game Over 的画面 如果游戏不是处于 Game Over 状态 则把 下坠物固定下来 同时检查游戏画布上下坠物当前行下面的所有行 看是否需要进行行 删除动作 如果需要行删除 则清除游戏地图上被删行的数据 再把被删行绘制成背 景色 然后初始化一个新的下坠物 绘制这个新的下坠物 paint 方法的流程图如下所 示 3 2 33 2 3 数据结构数据结构 本游戏涉及到以下几种数据结构 1 1 游戏区域游戏区域 游戏区域为手机或者 PDA 屏幕的一部分 该区域为正方形 边长一定能被 16 整除 因为俄罗斯游戏区域刚好为 16 个小砖块长 16 个小砖块宽的方形 无论在水平方 向还是垂直方向 该区域都要处于屏幕的居中位置 游戏区域在水平方向上分为 2 部 分 一部分为 12 个小砖块宽 用来显示游戏容器 另一部分为 4 个小砖块宽 用来显 示下一个下坠物和分数 2 2 小砖块小砖块 小砖块是下坠物和游戏容器的组成部分 表现为一个正方形 边长为游戏区域边 长的 1 16 每个小砖块在绘制的时候 4 边会留出 1 个象素宽 绘制成白色或者灰色 这样砖块之间才有间隙 每种小砖块也有 id 分别为 1 到 8 我们可以用一个颜色数组 程序里叫 BRICK COLORS 存储这 8 种颜色 若某种小砖块的 id 为 3 那么该小砖的颜 色为 BRICK COLORS 3 1 3 3 下坠物下坠物 下坠物本质上为 16 个小砖块组成的正方形 下坠物一共有 7 种 比如有 田 字形 的 L 字形的等等 每种下坠物一共有 4 种旋转变化 每种下坠物都有一个 id 分 别为 1 到 7 因为对于一种下坠物来说 其颜色是固定的 我们同样可以用该种颜色在 BRICK COLORS 数组中的下标值加上 1 作为下坠物的 id 例如 L 形下坠物的 id 为 3 其变化形式为 那么用什么数据结构存储一个下坠物呢 我们以 L 形的下坠物为例子来说明 因为每一个下坠物有四种状态 所以我们可以考虑用一个长度为 4 的数组来存贮 一个下坠物的 4 种状态 数组中每一个元素表示该下坠物的一种状态 那么用什么东 西来表示某个下坠物的某种状态呢 从上图可以看出 用一个 4X4 的二维数组来存储 一种下坠物的一种状态最合适不过了 在有色砖块出现的位置 值为 1 而只有背景颜 色 无需绘制的位置 值为 0 因此 整个 L 形下坠物的 4 种状态可以用一个 3 维数 组来表示 protected int blockpattern3 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 4 4 游戏地图游戏地图 游戏地图是用来存储游戏容器上的固定砖块的 游戏容器为一个宽为 12 个小砖块 单位 高为 16 个小砖块单位 包括左右 2 堵墙和下边的容器底在内 所以用一个 16X12 的二维数组 程序里叫 mapdata 来存储固定砖块 如果 mapdata i j k k 0 那么就表示游戏容器的 i 行 j 列上有个固定的小砖块 小砖块的颜色值为 BRICK COLORS k 1 如果 k 0 则表示 i 行 j 列无砖块 因此对于以下这种游戏运行时刻 mapdata 的值为 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 1 1 8 8 0 0 0 0 0 0 0 0 1 1 8 8 0 0 0 0 0 7 7 5 1 1 8 8 0 5 0 0 7 2 5 5 1 1 8 8 8 8 8 8 8 8 8 8 8 8 8 第四章第四章 手机电话本程序的开发手机电话本程序的开发 4 14 1 开发手机电话本需解决的相关技术问题开发手机电话本需解决的相关技术问题 1 可以添加联系人信息到手机电话本 2 可以对手机数据存储的进行检索 3 3 可以查找和删除手机电话本里的原有的联系人信息 4 24 2 程序构思和流程程序构思和流程 MIDP 为 MIDlets 提供了一种永久存储和后来读出数据的数据库解决方案 被称为 Record Managerment System RMS 是一种类简单的基于记录的数据库 很显然 手机上的数据库系统不可能有 PC 上的强大功能 微小的存储空间也限制 了它们的结构不能过于复杂 RMS 是专门针对移动设备的服务的 RMS 包中包括 RecordStore 类 在一个 MIDlet suite 包里的所有 MIDlet 都允许创 建多个记录集 只要它们赋有不同的名称 当 MIDlet 包从平台中被移除后 所有与该 包有关的的记录集都同时会被移除 同一个包内的 MIDlets 可以直接互相访问它们的 记录集 不同包内也可产生共享 但这需要有包的授权属性决定 访问模式会在准备 提供共享的 RecordStore 被建立时被创建 访问模式允许私有使用或访问 RecordStore 的 API 采用了时间戳的概念 其长整型变量由 System 的 currentTimeMillis 函数返回决定 Record store 每次被修改后都会自动在其属性 上附加上时间戳 这为同步化引擎和程序的控制都极为有效 记录是字节数组 开发者可以利用 InputStream 的派生类 DataInputStream DataOutputStream 以及 ByteArrayInputStream ByteArrayOutputStream 将不同种类的数据类型打包 以字节 流的形式发送和接收 区别记录的唯一标记是他们的 ID 值 作为记录集的主键 第一项记录的 ID 是 1 其后的每个记录 ID 递增 Record 是以字节为基本单位来存放的 所以所有要写入 record 的数据都必须先将 其转为字节才能写入 从 record 所读出来的数据也是字节 必须将其转换为原先写入 时的数据类型才有意义 然而读取或写入的字节数组都只能代表一个字段的信息 如果需要读取或写入多 个字段就必须要将数据转换成字节信息 并且提供适当的机制来分隔这些信息 主要 有两种方法 1 标记法 将所有要存放的数据用字符串表示 但是在字段和字段之间以一个特殊的符号作 为分隔 符号不能和字段内的数据相同的字符 2 利用输入 输出流 这一种方法较上一种复杂 但是较为实用 方法一中所有的字段只能以字符串的 形式存储 要对这些字段作进一步的处理非常麻烦 利用输入输出流可以写入及读取 不同数据类型的数据 做法是在写入数据时先将一个 DataOutputStream 数据流对象串 接到一个 ByteArrayOutStream 数据流对象 然后再依字段的数据类型用 writeInt writeBoolean 等方法写入 最后把 ByteArrayOutputStream 内的元素数据写入 record 中 反之若要读取数据 则先要串接一个 DataInputStream 对象和 ByteArrayInputStream 依字段的数据类用 readInt readBoolean 等方法读取 本程序中主要存放在永久区的内容为联系人的信息 一共可以存储 100 条信 息 每次添加联系人信息就会插入进相应的位置 在输入记录前 要求用户在 TextField 框中写入名字等信息 返回的 getString 可以将名字输送给字节流 4 34 3 程序分析和具体实现程序分析和具体实现 4 3 1 电话本进入前的选择电话本进入前的选择 每个 MIDlet 程序都必须有一个主类 该类必须继承自 MIDlet 它控制着整个程序 的运行 并且可以通过相应函数从程序描述文件中获取相关的信息 该类中拥有可以 管理程序的创建 开始 暂停 手机中很可能有正在运行程序却突然来电的情况 这 Logo 画面 选项画面 主程序 信息处理 退出电话本 开始 初始化参数 图 4 2 本程序的主流程图 时应进入暂停状态 结束的函数 进入时 首先载入电话本的选项画面 运行画面如图 4 1 所示 当再次选择 添 加联系人 或 所有联系人 时 就进入主程序对联系人的信息进行添加 删除或着 查找 4 3 2 电话本设计及其涉及到的若干类电话本设计及其涉及到的若干类 1 1 javax microedition lcduijavax microedition lcdui 程序包程序包 在 MIDP1 0 中的 javax microedition lcdui 包内定义了 21 个类和 3 个接口 这 比 J2SE 中的 AWT 和 SWING 要简单很多 在这 24 个类中 Display 是负责设备的显示以 及输入的管理器 通常我们通过调用 setCurrent Displayable displayable 方法来把 displayable 组件显示在手机屏幕上 Displayable 代表了能够在屏幕上显示的组件对 象 它的两个抽象子类是 Canvas 和 Screen 他们分别代表了 MIDP 中的低级用户界面和 图 5 1 电话本选项画面 高级用户界面 Form Alert List 和 TextBox 都是从 Screen 继承过来的 他们构成了 MIDP 中的高级用 户界面 要清楚他们每个组件都必须单独占用一个屏幕 不能与其他组件放在一起 Form 类在 javax microedition lcdui 包中至关重要 它是 Item 的容器 通过调用 append Item item 方法 你可以把 TextField DateField 等 Item 放在 Form 内 2 2 javax microedition rmsjavax microedition rms 程序包程序包 MIDP 提供在移动设备上存储持久数据的支持 并且 MID 简表还特意规定兼容的移 动设备必须提供至少 8KB 的非动态内存用于数据存储的用途 时式上 大多数的 MIDP Java 设备提供的空间比这要求多得多 这就允许一个 midlet 充份利用应用程序的持久 数据 对于有 Java 2 标准版开发经验的开发者 应该注意这种数据存储能力与标准的 Java 有区别 J2ME 记录管理系统 RMS 允许数据流被储存并且在一个记录基础上访 问数据 由应用程序开发者把每个记录解析到字段水平 RMS 程序包内部的接口支持一 个应用程序定义的基础上的比较与检索功能 通过 javax microedition rms 包访问 J2ME 记录管理系统 这个包包括一个类 RecordStore 和好几个有用的接口 在下列表格中描述 RecordComparator 一个接口 定义一个比较机制 比较两个记录 以一个实现定义的 方式 看它们是否匹配或它们的相对排序次序是什么样的 RecordEnumeration 一个接口 一个双向的纪录模拟器 RecordFilter 一个接口 定义了一个过滤器用于检查一个记录 看其是否匹配 基于 一种应用程序定义的标准 RecordListener 一个监听者接口 从一个记录存储器中接受记录更改 添加 删除事件 这些接口对于实现自定义搜索和检索功能很有用 这些接口中使用的最多的就是 RecordEnumeration 这个接口从 RecordStore
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惠州市实验中学2026届高三化学第一学期期中质量跟踪监视试题含解析
- 情景交融疗法课件
- 江苏省东台市2026届化学高二第一学期期中考试试题含解析
- 幼儿园大班语言领域活动设计方案
- 小型超市活动策划方案
- 销售新人培训计划方案内容
- 五班级语文教学工作方案
- 灯具促销活动策划方案
- 布展工程施工设计方案
- 乐理模拟试题及答案
- 对新员工保密基本培训
- 2025届湖北省部分学校新高三新起点暑期效果联合质量检测数学试卷(解析版)
- GB/T 6553-2024严酷环境条件下使用的电气绝缘材料评定耐电痕化和蚀损的试验方法
- 2024年苏教版四年级数学上册全册教案
- 2024新科普版英语七年级上单词默写表
- 金融行业高质量发展专题研究报告
- 2024年首届全国“红旗杯”班组长大赛考试题库(单选、多选、判断题)
- 知识题库-人社练兵比武竞赛测试题及答案(五)
- 五年级上册科学青岛版全册教案
- 出入境证件承诺书
- 合理膳食 均衡营养课件
评论
0/150
提交评论