贪吃蛇3-J2ME游戏报告.doc

上传人:scccc 文档编号:11184278 上传时间:2021-07-10 格式:DOC 页数:9 大小:610.50KB
返回 下载 相关 举报
贪吃蛇3-J2ME游戏报告.doc_第1页
第1页 / 共9页
贪吃蛇3-J2ME游戏报告.doc_第2页
第2页 / 共9页
贪吃蛇3-J2ME游戏报告.doc_第3页
第3页 / 共9页
贪吃蛇3-J2ME游戏报告.doc_第4页
第4页 / 共9页
贪吃蛇3-J2ME游戏报告.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《贪吃蛇3-J2ME游戏报告.doc》由会员分享,可在线阅读,更多相关《贪吃蛇3-J2ME游戏报告.doc(9页珍藏版)》请在三一文库上搜索。

1、 J2ME手机游戏开发报告系 别电子信息系专 业计算机科学与技术专业班 级40702姓 名指导教师2010年 6月28日东北大学秦皇岛分校J2ME贪吃蛇项目说明与分析1、游戏说明:* 运行环境:手机移动平台,经过实验多种型号手机都可以运行。当然前提下是手机要支持JAVA功能才行。* 本游戏支持RMS持久化数据库存,可以保存游戏计分,关数,速度。* 用户可以自行设置游戏速度,游戏关数。* 想在手机上运行,可以通过多种方式,将文件传送到手机中,当然最普通的方式就是通过USB连接将数据传送到手机上。由于我把项目的所有源代码都发布了,传送时只需要将项目文件当中.jar和.jad传进去。有的手机,可能不

2、需要那个.jad的文件,这两个文件在项目当中的dist目录下。不需要将其他的文件发送到手机上去。2、游戏分析: 首先分析此游戏,我们先来看一下抽象食物对象的类。Guttler.java:/* 此类是游戏场景上需要的对象*/package GuttlerGame;import javax.microedition.lcdui.Graphics;public class Guttler public int x,y; /确定对象的坐标位置的属性 private static int w=5,h=5; /确定对象的大小属性 /* 此构造方法构造一个具有坐标位置的对象*/ public Guttler

3、(int x,int y) this.x=x; this.y=y; /* 在游戏场景上画此对象的方法*/public void paint(Graphics g) g.setColor(255, 255, 255); g.fillRect(x, y, w, h); g.setColor(10,10,30); g.drawRect(x, y, w, h); /*获取此对象的一个Rectangle对象*/ public Rectangle getRect() return new Rectangle(x,y,w,h); 上面是抽象了一个在屏幕上的食物对象,在这个对象中要利用此对象的的x,y坐标和w

4、,h宽高大小获得一个方框对象,抽象一个Rectangle矩形对象,此对象主要是为了碰撞检测时候用的,下面我们来看一下这个类的内容:Rectangle.java:/* 此类是一个Rectangle类对象是为实现物体之间的相交,碰撞检测的类 */package GuttlerGame;public class Rectangle public int x,y,w,h; /此对象的坐标位置和高宽属性 /* 构造方法构造一个具坐标位置和高宽属性的对象 */ public Rectangle(int x,int y,int w,int h) this.x=x; this.y=y; this.w=w; t

5、his.h=h; /* Rectangle与Rectangle对象重合的方法*/ public boolean superposition(Rectangle rec) if(this.x=rec.x&this.y=rec.y) return true; return false; /* Rectangle与Rectangle对象相交的方法*/ public boolean intersect(Rectangle rec) if(this.x=rec.x&this.y=rec.y&this.x=rec.x+rec.w&this.y=rec.y+rec.h) return true; retur

6、n false; 当然有了这些东西当然不行,因为一个手机程序的入口点对象必须继承MIDLet这个类,所以我们必须创建一个主类,继承MIDLet这个类,然后重写MIDLet类当中的方法。下面是一个手机应用程序继承MIDLet必须重写的方法public void startApp() /*开始运行此类的方法*/public void pauseApp() /* 暂停,中止的方法*/public void destroyApp(boolean unconditional) /* 撤销此类的方法*/ J2ME就提供了RMS技术类似于数据库的一个技术,实现代码如下: 首先得创建一张数据表,只有手机没有这

7、张表的时候才会执行这段代码,也只有第一次运行的时候才会创建该表和初始化该表字段。 try rs = RecordStore.openRecordStore(GameDatabase, true); if(rs.getNumRecords()=0) String s1=Integer.toString(num); rs.addRecord(s1.getBytes(), 0, s1.length(); s1=Integer.toString(fraction); rs.addRecord(s1.getBytes(), 0, s1.length(); s1=Integer.toString(spee

8、d); rs.addRecord(s1.getBytes(), 0, s1.length(); catch (Exception ex) ex.printStackTrace(); 创建之后,这时每一次运行时就只读取数据表当中的内容 try num = Integer.parseInt(new String(rs.getRecord(1); fraction = Integer.parseInt(new String(rs.getRecord(2); speed = Integer.parseInt(new String(rs.getRecord(3); catch (RecordStoreE

9、xception ex) ex.printStackTrace(); 而当程序关闭的时候,必须将程序现在的数据更新到数据库当中,这样下次运行才看见数据改变过了,而实现了数据的存取结果,实现如下: /*执行按钮操作的方法*/ public void commandAction(Command c, Displayable s) if(c=exitCommand) String s2=Integer.toString(num); byte b1=s2.getBytes(); try rs.setRecord(1, b1, 0, s2.length(); /更新数据内容 s2=Integer.toS

10、tring(fraction); b1=s2.getBytes(); rs.setRecord(2, b1, 0, s2.length(); s2=Integer.toString(speed); b1=s2.getBytes(); rs.setRecord(3, b1, 0, s2.length(); rs.closeRecordStore(); catch (RecordStoreException ex) ex.printStackTrace(); this.notifyDestroyed(); 这样就实现了数据持久化的目的。因为写了两个版本一个是有障碍物对象的版本,一个是没有障碍物对象

11、的版本,下面是抽象障碍物对象类的内容如下:Bar.java:package GuttlerGame;import java.io.IOException;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;/*此类是一个表现游戏障碍物的类*/public class Bar private Image img_bar=null; /一个障碍物的图像对象 private int img_x,img_y; /障碍物的图像对象的x,y坐标 private String url; /障碍物图像的路

12、径 /*在游戏中构造一个障碍物对象*/ public Bar(int x,int y,String s) this.img_x=x; this.img_y=y; this.url=s; try img_bar = Image.createImage(url); catch (IOException ex) ex.printStackTrace(); /*在游戏画布上画出此障碍物对象*/ public void paint(Graphics g) g.drawImage(img_bar, img_x, img_y, Graphics.LEFT|Graphics.TOP); /*获取此障碍物的一个

13、Rectangle对象为碰撞检测时所用的一个对象*/ public Rectangle getRect() return new Rectangle(img_x+5,img_y+5,img_bar.getWidth()-5,img_bar.getHeight()-5); 这个类主要是实现在屏幕上加一些障碍物对象,如果碰到障碍物就Game Over.下面看一下运行情况:这个是程序一开始的运行状态图片:下面再来看一下Menu按钮打操作界面:下面是游戏说明的界面:下面定义游戏关数的界面:下面定义游戏速度的界面:下面没有障碍物版本的游戏运行界面下面是有障碍版本的游戏运行界面3、 实验心得 通过这次结课实验,从一开始构思、分析贪吃蛇游戏,到着手写程序,调试,修改,让我明白了,做项目的基本流程,从中学到了很多东西。手机游戏是一门新兴的产业,对以后就业方向的选择也有很大的帮助,在以后的学习中,一定更加努力的学习。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1