1、赛车手机游戏实训工作报告综 合 实 训 报 告20082009学年第一学期课题名称手机游戏设计综合实训赛车手机游戏开发系 别专 业计算机多媒体技术班 级学 号学生姓名 指导教师: 2008 年 11 月 14 日一、 综合实训项目名称赛车手机游戏开发二、 实训目的让我们能够熟练掌握eclipse软件的使用,能够自己独立编写J2ME手机游戏程序代码。巩固我们的所学知识,使我们把理论知识与实践结合起来,能够更好的理解J2ME手机游戏程序的编写,掌握它各部分的含义。掌握游戏闪屏设计技术,游戏屏幕类GameCanvas制作游戏界面,游戏多重背景的制作技巧,实现赛车的各种功能以及游戏实现技巧。 三、 实
2、训内容和要求a) 用JAVA ME MIDP2.0提供的Game API实现手机赛车游戏程序开发;b) 游戏屏幕类GameCanvas的应用;c) 应用图层类LayerManager实现游戏场景;d) 应用图层管理类LayerManager实现对游戏背景的管理。e) 应用游戏精灵类Sprite实现赛车的功能。f) 游戏线程的应用;g) 手机程序代码优化;h) 综合掌握调试手机游戏程序技巧。四、 实训工作记录实训工作记录日 期项目内容项目实施存在的问题解决方法不足2008.10.2731市场调研、制定方案、收集素材、赛车游戏的准备工作1、在网上查找各赛车游戏的类型与前景;2、利用网络收集赛车游戏
3、所须的材料;3、利用photoshop软件对素材进行整理与修改。1 、网络上的赛车游戏太难,以我的水平还无法制作;2 、网络上的材料很难找到自己所须的;3、在eclipse软件所在的操作系统上没有photoshop软件。1、 只能自己设计一个较简单的赛车游戏;2、 只能找一些差不多的材料,再利用photoshop软件修改;3 、先在其他操作系统上进行修改材料,再返回原系统。因为材料不够好,所以游戏中的障碍物显得很粗糙。因为不断的改换操作系统,所以浪费了较多的时间。2008.11.13游戏策划、游戏功能架构图、流程图、类继承关系图1、根据所收集的资料对赛车游戏进行策划;2、根据自己的策划绘制手机
4、游戏功能架构图、流程图和类继承关系图。对于各图的含义和它们之间的区别不太清楚,所以一开始不会绘制。通过查找书本资料和在网上查找资料,并且通过询问同学,基本上理解了各个图的含义和其之间的关系和区别。并没有对各图做到深刻了解。2008.11.411游戏开发、各功能模块的实现1、开始制作游戏,编写游戏程序代码;2、通过实训中的各模块的要求,一步步的编写代码,实现各个模块的功能。由于对J2ME知识还不够深入了解,所以在许多细节方面还不会编写。通过对书本上的知识进行巩固和进一步的了解,并且向同学进行询问,基本上解决了这个问题。只是基本上解决了这个问题,并没有能够完美的解决,还存在许多方面的问题。2008
5、.11.1214游戏测试、优化及改进,完成实训报告1、通过eclipse软件进行游戏测试,使其显示在手机屏幕上;2、对游戏的各个功能进行检测和完善;3、通过对程序进行分析,完成实训报告。1、一开始程序上存在着许多细节方面的不足,使其无法在手机屏幕上显示;2、各个功能不够完善,存在缺陷。1、通过查找书本和询问同学,解决了这些不足, 并能够在手机屏幕上显示;2、通过查找书本和询问同学,尽量完善各个功能。各个功能还是存在一些不足。五、 功能模块(算法)描述(可用文字描述,也可用流程图)1、闪屏的实现2、欢迎界面的实现3、进行游戏各功能的选择4、进行游戏(显示计分)5、结束游戏6、退出程序六、 关键类
6、的源代码(*.java文件。程序应符合以下规范要求: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 clas
7、s CARDemoMIDlet extends MIDlet implements CommandListener Display 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() d
9、isplay.setCurrent(alert,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=o
10、kCommand)/设置按钮为确定状态 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.s
11、et(0,在这个游戏中,玩家可以用上下左右键来控制赛车向下行驶. + 注意不要撞到其他赛车和人物, 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
12、.lcdui.Graphics;import javax.microedition.lcdui.game.*;public class CARCanvas extends GameCanvas implements Runnable private static final int X = 0; /定义常量X的值为0 private static final int Y = 1; /定义常量Y的值为1 private static final int WIDTH = 2; /定义常量WIDTH的值为2 private static final int HEIGHT = 3; /定义常量HEIG
13、HT的值为3 private static final int STEP = 3; /定义常量STEP的值为3 private Hero loader; private Sprite hero; private Thread thread; private TiledLayer layer; private Map map; private int lastState = -1; private int WORLD_WIDTH; /定义常量WORLD_WIDTH private int WORLD_HEIGHT; /定义常量WORLD_HEIGHT private int view = new
14、 int4; /定义整型数组view private boolean initialized = false; private boolean paused = false; /布尔变量用来控制是否暂停 private Object executionLock = new Object(); int score=100;/定义初始化分数为100 String scoreStr=得分:; public CARCanvas() super(true); /抑制键盘 setFullScreenMode(true); /设置全屏模式为真 public void showNotify() if(initialized) synchronized (executionLock) /同步 if (paused) paused = false; executionLock.notify();/死锁的通知 public voi
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1