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

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

1.RecordStore类的运行

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

 

2.关于记录ID

 
Sun公司的标准实现(Sun’s reference implementation)中,给定记录的ID号与它的插入次序是相同的。记录库中第一个插入的记录以1为它的ID号,第二个插入的记录以2ID号,以此类推。尽管这听起来似乎很方便,但是实际上并不总是如此。MIDP规范只要求每个记录都有一个ID——ID号是如何创建的问题则留给平台的实现者。RecordStore类的绝大多数方法都可以抛出一个或者多个RecordStoreException类型的异常。异常的子类和它们对应的意义如下所示:
  1. InvalidRecordIDException异常,当某个被调用的方法涉及一个不存在的记录ID号(当读或者更新某个记录时)或者记录ID号无效(当添加记录时)时,就会抛出InvalidRecordIDException异常。
  2. RecordStoreFullException异常,当RMS(记录管理系统)的存储器满时,就会抛出该异常。例如,用OpenRecordStore来打开一个指定名字的记录库时,即使没有更新记录库,它也有可能抛出RecordStoreFullException异常。
  3. RecordStoreNotFoundException异常,当某个被调用的方法涉及到一个不存在的的记录库时,就会抛出该异常。如果指定名字的记录库不存在,OpenRecordStore也可以创建拥有该名字的记录库。该异常也可能从一个奇怪的地方抛出:CloseRecordStore方法。
  4. RecordStoreNotOpenException异常,如果你试图访问一个尚未被打开的记录库(用OpenRecordStore方法打开记录库)时,就会抛出该异常。
 
最后,由于被处理的对象是二进制数据,记录库访问方法(getRecordaddRecordsetRecord)均把记录数据做为字节数组处理。
转载至:http://gaochaojs.blog.51cto.com/812546/199938
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值