您的位置:首页 > 职场人生

手机游戏中记分系统的原理和实现

2009-09-08 13:28 363 查看

[align=left] [/b][/align]
[align=left]记分系统的功能指定在ScoreScreen类内。采用的是手机专用的一种简化的数据库RMS。MIDP规范要求运行平台提供某种稳固的存储手段(通过非挥发性的存储器,即掉电后存储的信息不会丢失的存储器)。RMS(记录管理系统)管理记录库,记录库即为二进制平面文件(flat file,由不包括重复组的一组同类型记录构成的文件)。记录库中的每一段数据都涉及到某一个记录,它还拥有一个由数字组成的记录ID号,ID在整个记录库中是互不重复的。每一个记录库的名字在创建它的MIDlet组件中也是互不相同的,MIDlet只可以访问它自己或同一组件中其它MIDlet所创建的记录库。当从设备(device)中删除MIDlet组件时,所有与MIDlet组件相关的记录库也全部被删除。javax.microedition.rms软件包中包含了RecordStore类,RecordStore类提供了访问记录库中的数据的初步方法。该软件包还包含了对记录库中的记录进行排序、搜索的其它类。[/align]
[align=left]J2ME中的基本存储概念是记录存储。记录存储是一个由记录组成的简单的数据库。一条记录是一条单独的数据,它有一个相关的唯一的数字标识符。也可以把数据记录看做是一张包括两列数据的简单的表格。[/align]



1.RecordStore类的运行

[align=left]RecordStore类的运行过程中,可以用静态RecordStore.openRecordStore方法打开一个已有的记录库,这会为这个指定名字的记录库返回一个RecordStore实例。如果指定的记录库的名字不存在,该方法也可以创建一个以改名字命名的新的记录库。使用getRecord方法就可以通过记录ID来得到ID对应的记录。还可以用addRecord和setRecord方法分别实现添加记录和更新记录的功能。当完成了对记录库的操作,可以用closeRecordStore来关闭这个记录库。[/align]
[align=left]使用RecordStore类的过程通常包括以下几个步骤:[/align]
[align=left]⒈打开/创建一个记录存储;[/align]
[align=left]⒉从记录存储读出数据或向记录存储写入数据;[/align]
[align=left]⒊关闭记录存储。[/align]
[align=left]RecordStore类中的一些用来和记录交互的重要方法有[/align]
[align=left]·openRecordStore()——打开一个记录存储,以便读出或导入;[/align]
[align=left]·getNumRecord()——获得记录存储中记录的数目;[/align]
[align=left]·getRecordSize()——获得一个特定的单独记录的数据大小;[/align]
[align=left]·getRecord()——从一个特定的单独记录中获得数据;[/align]
[align=left]·addRecord()——向一个记录存储添加一条记录的数据;[/align]
[align=left]·deleteRecord()——删除特定的单独记录;[/align]
[align=left]·deleteRecord()——删除整个记录存储;[/align]
[align=left]·closeRecordStore——关闭一个记录存储。[/align]
[align=left]可以看出,这些方法提供了一种执行最常用的记录管理任务的方法。RecordStore类中肯定还有更多的方法可以使用,但是这些方法对于手机游戏最高得分列表的持久性存储已经足够了。[/align]

2.关于记录ID

[align=left]在Sun公司的标准实现(Sun’s reference implementation)中,给定记录的ID号与它的插入次序是相同的。记录库中第一个插入的记录以1为它的ID号,第二个插入的记录以2为ID号,以此类推。尽管这听起来似乎很方便,但是实际上并不总是如此。MIDP规范只要求每个记录都有一个ID号——ID号是如何创建的问题则留给平台的实现者。RecordStore类的绝大多数方法都可以抛出一个或者多个RecordStoreException类型的异常。异常的子类和它们对应的意义如下所示:[/align]

InvalidRecordIDException异常,当某个被调用的方法涉及一个不存在的记录ID号(当读或者更新某个记录时)或者记录ID号无效(当添加记录时)时,就会抛出InvalidRecordIDException异常。
RecordStoreFullException异常,当RMS(记录管理系统)的存储器满时,就会抛出该异常。例如,用OpenRecordStore来打开一个指定名字的记录库时,即使没有更新记录库,它也有可能抛出RecordStoreFullException异常。
RecordStoreNotFoundException异常,当某个被调用的方法涉及到一个不存在的的记录库时,就会抛出该异常。如果指定名字的记录库不存在,OpenRecordStore也可以创建拥有该名字的记录库。该异常也可能从一个奇怪的地方抛出:CloseRecordStore方法。
RecordStoreNotOpenException异常,如果你试图访问一个尚未被打开的记录库(用OpenRecordStore方法打开记录库)时,就会抛出该异常。

[align=left] [/align]
[align=left]最后,由于被处理的对象是二进制数据,记录库访问方法(getRecord、addRecord和setRecord)均把记录数据做为字节数组处理。[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息