j2me游戏开发论文内容摘要:
分图 13 (3)、如果您未处于登录状态的话,将提示您登录。 如果您还未成为 SUN 会员的话,可以马上注册会员。 其登录过程同其它网站会员登录过程相似。 (4)、成功登录后,进入英文版文件下载页面,如图四所示,点击下载链接即可下载英文版文件 ,大小为。 图二: 英文版文件下载页面部分图 (4)、运行 安装程序,当系统提示您提供安装目录时,请确保该安装目录的完全合法的路 径中不包含任何空格。 这将帮助您在今后使用工具包时避免可能出现的问题。 (5)、安装完 英文版后,回到图三页面,点击第二个“继续”按钮下载中文补丁文件。 进入中文补丁文件下载页面,如图五所示,点击下载链接即可下载文件 ,大小为。 图三: 中文补丁文件下载页面部分图 14 (6)、将 文件解压缩至 英文版的安装目录下(缺省安装目录为 C:\),确保文件是带着目录路径解压的。 (7)、 中文版本安装成功。 使用 J2ME Wireless ToolKit 如果安装 WTK 成功的话,在开始菜单上选择“程序 J2ME Wireless Ktoolbar”,启动 WTK 工具程序,主界面如图六所示。 图四: WTK 运行界面 WTK的主要功能包括:新建项目、打开项目、生成项目、运行项目等。 ● 新建项目 在编写手机程序之前,都需要使用 WTK 创建一个新的项目。 新建项目的主要步骤: (1)、点击 工具栏“新建项目”按钮,弹出“新建项目”对话框,如图七所示。 15 图五:新建项目对话框 (2)、在“项目名字”栏中输入项目名称,如 MyProgram;在“ MIDlet 类名”栏中输入您的手机程序的主类名,如 MyMIDlet,在后面章节将会介绍到每个J2ME手机程序都必须有一个 MIDlet 类的子类。 (3)、点击“产生项目”按钮,弹出“项目配置”对话框,在此对话框中可以对项目的相关配置进行修改,一般情况下都不需要修改。 (4)、点击“确定”按钮,新建项目完成。 请注意,此时在主窗口中列出项目Java 源文件的路径、资源文件路径和库文件的路径的信息。 由于 WTK生成程序时,必须要求项目的路径结构一定要规范化,否则不能生成运行程序。 图八展示了 MyProgram 项目生成后,在 WTK 目录下的路径结构图。 WTK 将在其子目录 apps下为每个项目创建一个同名子目录,并在此 子目录下创建 bin、 src、res、 lib 四个目录,其中 bin 目录用于存放目标程序,当使用生成工具产生了可运行的程序将放在此处,一般有 *.jar 和 *.jad 文件,其具体意义将在后面的章节详细说明; src目录用于存放源代码; res 目录用于存放资源文件; lib目录用于存放程序调用的辅助库文件。 16 图六: WTK 项目路径图 ● 打开项目 打开项目是将已存在的项目打开,作为 WTK 的当前工作项目。 通过点击“打开项目”按钮,弹出“打开项目”对话框,您可以从项目列表中选择打开项目。 请注意,在此项目列表中仅能选择 apps 目录下的项目,如果您的项目不在此项目下,将不能使用 WTK 打开项目。 ● 生成项目 当您新建项目并编写好源代码或者打开旧项目后,可以通过点击工具栏上的“生成项目”按钮, WTK 将自动调用 Java 编译器为项目程序进行编译。 如果程序代码有语法错误将在主 窗口中产生错误提示,否则为项目生成 *.jar 和 *.jad目标文件。 ● 运行项目 成功生成项目目标文件后,可点击工具栏上的“运行项目”按钮, WTK 将启动模拟器,并加载项目 bin 目录下的 *.jar 和 *jad 文件。 模拟器界面同相应型号的外观相似,您可以通过模拟器上的键盘操作项目程序。 图九展示 俄罗斯 方块游戏游戏在模拟器上运行结果。 17 图七: 俄罗斯 方块 游戏在模拟器上运行结果图 第三章 手机 俄罗斯 游戏 程序 的开发 程序流程设计 MIDlet suite 是 MIDP 应用程序的最小单位, JAM负责将手机内的 MIDlet suite以图形化的方式呈现,让用户能够选取欲执行的 MIDlet suite,一旦选取了某个MIDlet suite,操作系统就会激活 KVM 执行里面的 MIDlet。 MIDlet 及相关的支持类组成了 MIDP 应用程序的实际内容。 每个 MIDlet 都必须继承 这个抽象类。 在 MIDP 规格中定义了 MIDlet 的生命周期,以及可以存在的三种状态,包括 Paused、Active 以及 Destroyed,每一个 MIDlet 在任何时刻只可能处于其中的一个状态。 这三种状态的转换关系如图所示: 18 本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。 运行程序后允许用户选择执行选项菜单,用户控制的图片运行在主线程中,然后用户控制手机键盘,键盘上的数字按键 19 控制图片, 需要移动旋转某个图片时,只需按下对应的数字键。 主程序流程如图 32 所示: 消减状态 (Destroyed) 停止状态 (Paused) 运行状态 (Active) StartApp() DestroyApp() 呼叫 MIDlet的构造函数 DestroyApp() PauseApp() 图 31 MIDlet 的流程 19 程序分析和具体实现 操作流程设计 本游戏的操作流程非常简单,用户启动 MIDlet 启动后,即进入游戏主画面,屏幕开始显示为欢迎画面。 用户按下 [开始 ]按钮后,就可以开始玩游戏了,当用户想暂停时,再次按一下 [开始 ]按钮,游戏就暂停了,在暂停的情况下再按 [开始 ]按钮,游戏继续运行。 任何时候按 [退 出 ]按钮,游戏 MIDlet 都会终止 . 游戏画面流程图如下 : 图 32 本程序的主流程图 20 算法实现 MIDP 的游戏设计,本质上就是用一个线程或者定时器产生重绘事件 ,用线程和用户输入改变游戏状态。 这个游戏也不例外,启动 MIDlet 后,就立即生成一个重绘线程,该线程每隔 50ms 绘制一次屏幕。 当然,重绘时有一些优化措施,并不是屏 幕上所有的像素都需要重绘,而是有所选择,比如游戏画布上那些已经固定下来的下坠物 (下坠物一共有 7 种,由 4 个小砖块组成 ,每种下坠物颜色固定 ,可以上下左右旋转 )就不需重绘。 游戏画布是一个 CommandListener,可以接受用户键盘命令,控制下坠物的左移,右移,下移,旋转动作。 整个游戏的流程控制体现在游戏画布对象的 paint()方法里。 paint()根据当前的游戏状态,绘制出当时的游戏画面。 欢迎画面和 Game Over 画面的绘制相当简单。 游戏暂停画面的绘制也相当容易,就是设立标志,让 paint()执行的时候无需 真正执行重绘动作。 对于游戏处于运行状态的画面的绘制,则需要在下坠物的当前位置,绘制下坠物。 在绘制下坠物之前,判断下坠物是否还能下坠,如果能下坠的话,就让它下落一格,再进行绘制,如果下坠物已无法下坠,则判断游戏是否处于 Game Over 状态,如果是处于 Game Over 状态的话,则设置游戏状态为 Game over 状态,这样画布在下一次重绘时就绘出 Game Over 的画面 .如果游戏不是处于 Game Over 状态,则把下坠物固定下来 ,同时检查游戏画布上下坠物当前行下面的所有行,看是否需要进行行删除动作,如果需要行 删除,则清除游戏地图上被删行的数据,再把被删行绘制成背景色。 然后初始化一个新的下坠物,绘制这个新的下坠物。 paint 方法的流程图如下所示 : 21 22 数据结构 本游戏涉及到以下几种数据结构。 游戏区域为手机或者 PDA 屏幕的一部分,该区域为正方形 ,边长一定能被 16整除(因为俄罗斯游戏区域刚好为 16 个小砖块长, 16 个小砖块宽的方形)。 无论在水平方向还是垂直方向,该区域都要处于屏幕的居中位置。 游戏区域在水平方向上分为 2 部分,一部分为 12个小砖块宽,用来显示游戏容器,另一部分为 4 个小砖块宽,用来显示下一个下坠物和分数。 小砖块是下坠物和游戏容器的组成部分。 表现为一个正方形,边长为游戏区域边长的 1/16。 每个小砖块在绘制的时候, 4 边会留出 1 个象素宽,绘制成白色或者灰色,这样砖块之间才有间隙。 每种小砖块也有 id,分别为 1 到 8。 我们可以用一个颜色数组 (程序里叫 BRICK_COLORS)存储这 8 种颜色。 若某种小砖块的 id为 3,那么该小砖的颜色为 BRICK_COLORS[31]. 下坠物本质上为 16个小砖块组成的正方形。 下坠物一共有 7 种,比如有 田 字形的, L字形的等等。 每种下坠物一共有 4 种旋转变化。 每种下坠物都有一个 id,分别为 1 到 7。 因为对于一种下坠物来说,其颜色是固定的。 我们同样可以用该种颜色在 BRICK_COLORS 数组中的下标值加上 1,作为下坠物的 id. 例如 L形下坠物的 id 为 3,其变化形式为 : 23 那么用什么数据结构存储一个下坠物呢,我们以 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}} }。 游戏地图是用来存储游戏容器上的固定砖块的。 游戏容器为一个宽为 12 个小砖块单位,高为 16个小砖块单位,包括左右 2 堵墙和下边的容器底在内。 所以用一个 16X12 的 二 维 数 组 ( 程 序 里 叫 mapdata) 来 存 储 固 定 砖 块。 如 果mapdata[i][j]=k(k!=0).那么就表示游戏容器的 i 行 j 列上有个固定的小砖块,小砖块的颜色值为 BRICK_COLORS[k1].如果 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, 24 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}} 25 第四章 手机电话本 程序 的开发 开发手机电话本需解决的相关技术问题 1. 可以添加联系人信息到手机电话本。 2. 可以对手机数据存储的进行检索。 3. 可以查找和删除手机电话本里的原有的联系人信息。 程序构思和流程 MIDP 为 MIDlets 提供了一种永久存储和后来读出数据的数据库解决方案,被称为 Record Managerment System(RMS),是一种类简单的基于记录的数据库。 很显然,手机上的数据库系统不可能有 PC上的强大功能。 微小的存储空间也。j2me游戏开发论文
相关推荐
h,int dayofmonth){ =year。 =month。 =dayofmonth。 } public Mydate(){ =2020。 =1。 =18。 } public byte[] toBytes(){ byte[] data = null。 try { ByteArrayOutputStream baos = new ByteArrayOutputStream()。
设计电子文档及其它相关材料。 太原理工大学毕业设计 (论文 )用纸 第 3 页 主要参考文献(资料): [1] 冯燕奎 ,赵德奎 .JSP 实用案例教程 [M].清华大学出版社 ,2020 [2] 张洪斌 .java2 高级程序设计 [M]中科多媒体出版社, 2020 [3] Jim and the Unified Process[M]机械工业出版社 ,2020 [4] 徐建波,周新莲. Web
xtArea[4].setText( 家教次数 () + )。 jTextArea[5].setText( 家教附加 () + )。 jTextArea[6].setText( 家教缺勤 () + )。 jTextArea[7].setText( 薪水 () + )。 jTextArea[8].setText(new ().toString())。 jTextArea[9]
.......................................................................................... 56 逻辑设计 ....................................................................................................
ce = new Appearance()。 // points to the mesh last made semi transparent private Mesh transparentMesh = null。 private Maze maze = new Maze(10, MAZE_SIDE_LENGTH, WALL_HEIGHT)。 private Thread mainThread
唤醒。 将屏幕解锁 向上拖动屏幕圆环即解锁屏幕。 如果您设置了闹钟、活动提 醒,可将 或 拖入圆环来延迟或解除闹钟、活 动提醒。 9 调节音量 如欲调节系统音量: • 按手机音量键。 • 从主屏幕,点击菜单键 → 设置 → 声音 → 音量,通过滑动滑块来设定铃 声、媒体、闹钟和通知的音量。 设定日期和时间 1. 从主屏幕,点击菜单键 → 设置 → 日期和时间。 2. 取消勾选自动后