1、石家庄科技信息职业学院毕业设计(论文)任务书专 业: 软件开发(游戏方向) 学生姓名: 周志波 学 号: 090124010 设计(论文)题目: 基于 J2ME 的推箱子游戏 起讫日期: 指导教师: 刘永伟 任务书下达日期: 年 月 日1基于 J2ME 的推箱子游戏摘要:手机是人们日常生活中所用的非常频繁的通信工具。随着 JAVA 技术的不断更新提高,J2ME 技术的出现,使得手机游戏越来越成为我们关注的焦点。J2ME 技术目前最流行的就是在制作手机游戏方面,JAVA 手机的出现使得这一技术更有它的用武之地,发挥着他灵活、轻便、快捷的作用。J2ME 平台被是最杰出的手机游戏手机游戏平台,它一些
2、非常重要的特征对开发者都有很大益处。因为 J2ME 应用在不同设备上都是便携式的,他们常常可以在网络上下载和执行。本设计通过 MapList 和 SpriteThread 等类进行推箱子游戏设计,最后编程实现了全过程。关键词:J2ME MapList SpriteThread 推箱子2目录一、 设计过程 3(1)游戏策划 3(2)游戏的准备工作 3(3)设计背景. 6(4)游戏框架设计 7 (5)设计细节 7二、 欢迎界面设计 8(1)PushBoxActivity 类框架的搭建 8(2)欢迎界面 WelcomeView 类的实现 13(3)刷帧线程 WelcomeViewDrawThread
3、 类的实现 16(4)动画线程 WelcomeViewGoThread 类的实现 17三、 游戏界面设计 19四、 游戏界面框架设计 23(1)GameView 框架的实现. 24(2)地图类 MapList 的实现 29(3)角色类 MySprite 的实现. 31(4)onDraw 方法的实现 36五、 设计总结 38参考文献 383正文一 设计过程(1) 游戏策划游戏策划主要包括游戏的情节、目标受众、运行的目标平台、采用的呈现技术、操作方式等几个方面。游戏情节:本游戏为轻量级的益智游戏,因此不存在很复杂的情节。这方面朱焘做的就是为设计游戏各管仓库的形状、大小、可通过区域,以及各关中箱子的
4、初始位置和目的地。目标受众:本游戏受众方面比较广,应该是老少皆宜的。运行的目标平台:本游戏的目标平台为 Android2.1。才有的呈现技术:本游戏采用 2D 的呈现技术。操作方法:本游戏拟采用手机键盘进行操作,对于没有键盘的型号也可以考虑采用虚拟键盘。(2)游戏的准备工作根据游戏的策划来制作和搜集游戏要用到的图片、声音等。本游戏有道的图片如下图片清单图片 大小(KB)像素(wrh)用途3.5 50*63 角色向下走图片2.8 50*63 角色向左走图片6.6 48*48 游戏图标45.92 50*63 正常的箱子3.35 50*63 角色向上走图片3.35 50*63 角色向右走图片9.5
5、200*80 菜单退出按钮2.5 85*45 游戏界面的退出14.3 300*250 恭喜过关图片9.6 200*80 游戏说明菜单41.2 300*475 图片的铁门图片4.4 200*80 声音开按钮5.1 200*80 菜单开始游戏33.5 160*450 左半部分墙45 640*480 游戏背景图片52.8 50*63 角色向下推箱子3.5 50*30 角色向左推箱子3.5 50*63 角色向上推箱子3.3 50*63 角色向右推箱子7.8 50*63 绿色的箱子53.7 160*450 右侧的木门53.7 160*450 左侧的木门82.9 278*420 菜单界面按钮背景18.4
6、640*480 菜单界面的背景22.3 480*200 欢迎界面背景64.4 200*80 声音关按钮4.7 50*63 游戏中的墙27.5 160*450 右半部分墙声音清单声音文件名 大小(kb) 格式 用途Sound1 22 Mp3 游戏背景音乐Sound2 7 Mp3 推箱子的声音Sound3 215 Mp3 欢迎界面背景音乐Winsound 8 Mp3 游戏胜利的声音(3)设计背景 游戏中,首先必须要有个主应用程序类,其次,为了把程序的画面呈现出来,就是要有画布;为了比较容易管理地图、增加或修改地图比较方便,应该把地图和画布分开;然后最主要的是要有个来推箱子的人;当然箱子也是需要管理
7、的。这其中需要先了解游戏中应用到的类。欢迎界面类 WelcomeView:主要负责欢迎界面的绘制工作。欢迎界面的绘制线程类 WelcomeViewDrawThread:负责的工作是定时重绘欢迎界面。欢迎界面的动画实现类 WelcomeViewGoThread:是通过改变 WelcomeView 中所用到的图片坐标实现的。菜单界面类 MenuView:只负责绘制工作菜单界面的绘制线程类 MenuViewDrawThread:负责的工作是定时重绘菜单界面。菜单界面的动画实现类 MenuViewGoThread:用来生成菜单界面中背景的滚动效果。游戏主界面类 GameView:负责绘制游戏过程中所有
8、的信息,如地图、玩家角色、所推的箱子、恭喜过关图片等。7游戏主界面的绘制线程类 GameViewDrawThread:通过对调节线程中的睡眠时间便可调整游戏的 FPS 的高低,改善用户的体验。地图信息类 MapList:包含着地图的相关信息,这里的一个地图是用三维函数族中的二维矩阵表示的,关于该类的使用方法将在后面进行介绍。角色封装类 MySprite:包含了所有与角色有关的信息。角色移动线程类 SpriteMoveThread:负责角色的无级移动,运用时只需给出起始点和目标点的坐标,同时该类还承担起屏幕的滚动工作。角色换帧线程类 SpriteThread:负责根据角色的信息时时改变角色的图片
9、。箱子移动类 BoxThread:负责子昂子的无级移动。(4) 游戏框架设计游戏基本框架类图:图一 游戏基本框架类图(5) 设计细节要做的游戏是让一个小人推箱子,操作方法就是通过四个方向键对小人进行上,下,左,右移动。当箱子移动到指定位置时,游戏就会产生过关事件。下面是游戏流程图:8开始判断用户是否按键读取按键信息输出新地图判断箱子是否在目标上结束过关否是否是图二 程序流程图二 欢迎界面设计(1) PushBoxActivity 类框架的搭建代码如下:package wyf.ytl;import android.app.Activity;import android.media.MediaPl
10、ayer;import android.os.Bundle;import android.os.Handler;9import android.os.Message;import android.view.KeyEvent;import android.view.Window;import android.view.WindowManager;public class PushBoxActivity extends ActivityWelcomeView welcomeView = null;/欢迎界面WelcomeViewGoThread welcomeViewGoThread = null
11、;/欢迎界面中的移动线程MenuView menuView = null;MenuViewGoThread menuViewGoThread = null;/菜单界面中的移动线程GameView gameView = null;boolean isSound = true;/是否播放声音MediaPlayer pushBoxSound;/推箱子声音MediaPlayer backSound;/背景音乐MediaPlayer winSound;/胜利的音乐MediaPlayer startSound;/开始和菜单时的音乐int map1;int map2;/当前游戏的地图int selectMa
12、p = 0;/选中的地图MySprite mySprite;/精灵KeyThread kt;/键盘监听线程int action = 0;/键盘的状态,二进制表示 从左往右表示上下左右Handler myHandler = new Handler()/用来更新 UI 线程中的控件public void handleMessage(Message msg) if(msg.what = 1)/收到 WelcomeViewGoThread/Welcome 发来的消息welcomeViewGoThread.setFlag(false);if(welcomeView != null)welcomeView = null; initAndToMenuView();else if(msg.what = 2)/收到 MenuView 发来的消息