《赛车手机游戏实训调查报告.doc》由会员分享,可在线阅读,更多相关《赛车手机游戏实训调查报告.doc(18页珍藏版)》请在金锄头文库上搜索。
1、综 合 实 训 报 告20082009学年第一学期课题名称手机游戏设计综合实训赛车手机游戏开发系 别专 业计算机多媒体技术班 级学 号学生姓名 指导教师: 2008 年 11 月 14 日一、 综合实训项目名称赛车手机游戏开发二、 实训目的让我们能够熟练掌握eclipse软件的使用,能够自己独立编写J2ME手机游戏程序代码。巩固我们的所学知识,使我们把理论知识与实践结合起来,能够更好的理解J2ME手机游戏程序的编写,掌握它各部分的含义。掌握游戏闪屏设计技术,游戏屏幕类GameCanvas制作游戏界面,游戏多重背景的制作技巧,实现赛车的各种功能以及游戏实现技巧。 三、 实训内容和要求a) 用JA
2、VA ME MIDP2.0提供的Game API实现手机赛车游戏程序开发;b) 游戏屏幕类GameCanvas的应用;c) 应用图层类LayerManager实现游戏场景;d) 应用图层管理类LayerManager实现对游戏背景的管理。e) 应用游戏精灵类Sprite实现赛车的功能。f) 游戏线程的应用;g) 手机程序代码优化;h) 综合掌握调试手机游戏程序技巧。四、 实训工作记录实训工作记录日 期项目内容项目实施存在的问题解决方法不足2008.10.2731市场调研、制定方案、收集素材、赛车游戏的准备工作1、在网上查找各赛车游戏的类型与前景;2、利用网络收集赛车游戏所须的材料;3、利用ph
3、otoshop软件对素材进行整理与修改。1 、网络上的赛车游戏太难,以我的水平还无法制作;2 、网络上的材料很难找到自己所须的;3、在eclipse软件所在的操作系统上没有photoshop软件。1、 只能自己设计一个较简单的赛车游戏;2、 只能找一些差不多的材料,再利用photoshop软件修改;3 、先在其他操作系统上进行修改材料,再返回原系统。因为材料不够好,所以游戏中的障碍物显得很粗糙。因为不断的改换操作系统,所以浪费了较多的时间。2008.11.13游戏策划、游戏功能架构图、流程图、类继承关系图1、根据所收集的资料对赛车游戏进行策划;2、根据自己的策划绘制手机游戏功能架构图、流程图和
4、类继承关系图。对于各图的含义和它们之间的区别不太清楚,所以一开始不会绘制。通过查找书本资料和在网上查找资料,并且通过询问同学,基本上理解了各个图的含义和其之间的关系和区别。并没有对各图做到深刻了解。2008.11.411游戏开发、各功能模块的实现1、开始制作游戏,编写游戏程序代码;2、通过实训中的各模块的要求,一步步的编写代码,实现各个模块的功能。由于对J2ME知识还不够深入了解,所以在许多细节方面还不会编写。通过对书本上的知识进行巩固和进一步的了解,并且向同学进行询问,基本上解决了这个问题。只是基本上解决了这个问题,并没有能够完美的解决,还存在许多方面的问题。2008.11.1214游戏测试
5、、优化及改进,完成实训报告1、通过eclipse软件进行游戏测试,使其显示在手机屏幕上;2、对游戏的各个功能进行检测和完善;3、通过对程序进行分析,完成实训报告。1、一开始程序上存在着许多细节方面的不足,使其无法在手机屏幕上显示;2、各个功能不够完善,存在缺陷。1、通过查找书本和询问同学,解决了这些不足, 并能够在手机屏幕上显示;2、通过查找书本和询问同学,尽量完善各个功能。各个功能还是存在一些不足。五、 功能模块(算法)描述(可用文字描述,也可用流程图)1、闪屏的实现2、欢迎界面的实现3、进行游戏各功能的选择4、进行游戏(显示计分)5、结束游戏6、退出程序六、 关键类的源代码(*.java文
6、件。程序应符合以下规范要求:A可读性:有注释;B交互性:有输入提示;C结构化程序设计风格:分层缩进、隔行书写)CARDemoMIDletimport javax.microedition.lcdui.Display;import javax.microedition.lcdui.*;import javax.microedition.midlet.*;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;public class CARDemoMID
7、let extends MIDlet implements CommandListenerDisplay display;List list;Command okCommand;/定义确定按钮Command backCommand;/定义返回按钮Command helpCommand;/定义帮助按钮Alert alert;int i; public CARDemoMIDlet() /创建构造函数CARDemoMIDlet() display=Display.getDisplay(this); alert=new Alert(游戏天地);/构造Alert的、默认的单参数构造函数为提示信息的头部
8、alert.setString(赛车游戏);/设置提示信息 alert.setTimeout(2000);/设置Alert的时间,单位为毫秒 list=new List(Welcome to the game,List.IMPLICIT);/设置欢迎界面的头部信息 okCommand=new Command(确认,Command.OK,2); backCommand=new Command(返回,Command.BACK,2); list.setCommandListener(this); /设置控制监听器 public void startApp() display.setCurrent(a
9、lert,list); list.append(开始游戏, null);/添加列表 list.append(游戏说明, null); list.append(离开, null); list.addCommand(okCommand); list.addCommand(backCommand); public void pauseApp() public void destroyApp(boolean unconditional) public void commandAction(Command cmd,Displayable disp) if(cmd=okCommand)/设置按钮为确定状态
10、 switch(list.getSelectedIndex() case 0: for(i=0;ilist.size();i+) list.delete(i); CARCanvas displayable = new CARCanvas(); Display.getDisplay(this).setCurrent(displayable);/设置显示的下一个屏幕为游戏界面 list.removeCommand(okCommand); break; case 1: for(i=0;ilist.size();i+) list.delete(i); list.set(0,在这个游戏中,玩家可以用上下
11、左右键来控制赛车向下行驶. + 注意不要撞到其他赛车和人物, null);/设置下一个界面的显示内容为括号中的内容 list.removeCommand(okCommand); break; case 2: destroyApp(false);/退出程序 notifyDestroyed(); break; else if(cmd=backCommand)/设置按键状态为返回 for(i=0;ilist.size();i+)list.delete(i); startApp();/开始程序 CARCanvasimport javax.microedition.lcdui.Graphics;impo
12、rt javax.microedition.lcdui.game.*;public class CARCanvas extends GameCanvas implements Runnableprivate static final int X = 0; /定义常量X的值为0private static final int Y = 1; /定义常量Y的值为1private static final int WIDTH = 2; /定义常量WIDTH的值为2private static final int HEIGHT = 3; /定义常量HEIGHT的值为3private static fin
13、al int STEP = 3; /定义常量STEP的值为3private Hero loader;private Sprite hero;private Thread thread;private TiledLayer layer;private Map map;private int lastState = -1;private int WORLD_WIDTH; /定义常量WORLD_WIDTHprivate int WORLD_HEIGHT; /定义常量WORLD_HEIGHTprivate int view = new int4; /定义整型数组viewprivate boolean initialized = false;private boolean paused = false; /布尔变量用来控制是否暂停private Object executionLock = new Object();int score=100;/定义初始化分数为100String scoreStr=得分:;public CARCanvas()super(true); /抑制键盘setFullScreenMode(true); /设置