图片都是从联众世界的对对碰游戏一点一点扣下来的 游戏基本和原游戏一样 纯触摸笔操作(天语触屏手机测试通过) 不支持键盘操作
jar纳米盘下载地址:http://www.namipan.com/d/b05ab22de9036289be08e7edfa7c9515bab18d6078bf0100
技术上也没什么 仍然是方块游戏
就是在游戏失败输入姓名后 因为是手写笔的系统 输入姓名时我调用了高级用户界面 天语的手机自动启动手写笔(别的手机没试不知道)然后就得到了输入的限制3个字以内的汉字了 然后就是用流把汉字转成2进制存到rms里
我只开了三个记录 储存时先检测是否有空的记录位置 有的话就直接存 没有的话比较一下新的游戏记录得分是否大于原来三条记录的最小的 如果大于就重写最小记录 排行榜也会重列
代码如下 就是int的存取 string的存取
public static byte[] StringtoBytes(String Str) { //写成字节
byte[] STB = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(Str);
STB = baos.toByteArray();
baos.close();
dos.close();
} catch (Exception e) {
e.printStackTrace();
}
return STB;
}
public static String BytesToString(byte[] rec) { //从字节读取内容
ByteArrayInputStream bais = new ByteArrayInputStream(rec);
DataInputStream dis = new DataInputStream(bais);
String BTS = null;
try {
BTS = dis.readUTF();
bais.close();
dis.close();
} catch (Exception e) {
e.printStackTrace();
}
return BTS;
}
//5位
public static byte[] IntToBytes(int score){
byte src[]=new byte[5];
src[0]=(byte)(score/10000%10);
src[1]=(byte)(score/1000%10);
src[2]=(byte)(score/100%10);
src[3]=(byte)(score/10%10);
src[4]=(byte)(score%10);
return src;
}
public static int BytesToInt(byte[] src){
int score=0;
score += src[0] * 10000;
score += src[1] * 1000;
score += src[2] * 100;
score += src[3] * 10;
score += src[4];
return score;
}
/**
* 得到记录
* @return byte[][][]
*/
public static byte[][][] loadRecord(){
byte name1[]=null,name2[]=null,name3[]=null;
byte data1[]=null,data2[]=null,data3[]=null;
try {
RecordStore recordStore = RecordStore.openRecordStore(sc1, true);
if (recordStore.getNumRecords() != 0) { //不无记录
name1=recordStore.getRecord(1);
data1 = recordStore.getRecord(2);
}
recordStore.closeRecordStore();
recordStore=RecordStore.openRecordStore(sc2,true);
if (recordStore.getNumRecords() != 0) { //不无记录
name2=recordStore.getRecord(1);
data2 = recordStore.getRecord(2);
}
recordStore.closeRecordStore();
recordStore = RecordStore.openRecordStore(sc3, true);
if (recordStore.getNumRecords() != 0) { //不无记录
name3=recordStore.getRecord(1);
data3 = recordStore.getRecord(2);
}
recordStore.closeRecordStore();
} catch (Exception e) {
if (Type.isprint) {System.out.println("Record fail");
e.printStackTrace();
}
}
byte tempData[][][]=new byte[3][2][];
if(name1!=null)
tempData[0][0]=name1;
if(data1!=null)
tempData[0][1]=data1;
if(name2!=null)
tempData[1][0] = name2;
if(data2!=null)
tempData[1][1] = data2;
if(name3!=null)
tempData[2][0] = name3;
if(data3!=null)
tempData[2][1] = data3;
return tempData;
}
public static Vector getRecord(){
Vector v=new Vector();
int score[]=null;
String name[][]=null;
byte data[][][]=loadRecord();
int score1=0,score2=0,score3=0;
String name1=null,name2=null,name3=null;
int show=0;
//名字
if (data[0] != null&&data[0][0]!=null) {
name1 = BytesToString(data[0][0]);
show++;
}
if (data[1] != null&&data[1][0]!=null) {
name2 = BytesToString(data[1][0]);
show++;
}
if (data[2] != null&&data[2][0]!=null) {
name3 = BytesToString(data[2][0]);
show++;
}
//得分
if (data[0] != null&&data[0][1]!=null)
score1 = BytesToInt(data[0][1]);
if (data[1] != null&&data[1][1]!=null)
score2 = BytesToInt(data[1][1]);
if (data[2] != null&&data[2][1]!=null)
score3 = BytesToInt(data[2][1]);
//三记录
if(show==3){
score=new int[3];
name=new String[3][2];
//从大到小排序
if (score1 >= score2) { //1>2
if (score1 >= score3) { //1最大
if (score2 >= score3) { // 123
score[0] = score1;
score[1] = score2;
score[2] = score3;
name[0][1] = name1;
name[1][1] = name2;
name[2][1] = name3;
name[0][0] = sc1;
name[1][0] = sc2;
name[2][0] = sc3;
} else { //132
score[0] = score1;
score[1] = score3;
score[2] = score2;
name[0][1] = name1;
name[1][1] = name3;
name[2][1] = name2;
name[0][0] = sc1;
name[1][0] = sc3;
name[2][0] = sc1;
}
} else { //3最大 312
score[0] = score3;
score[1] = score1;
score[2] = score2;
name[0][1] = name3;
name[1][1] = name1;
name[2][1] = name2;
name[0][0] = sc3;
name[1][0] = sc1;
name[2][0] = sc2;
}
} else { //2>1
if (score2 >= score3) { //2最大
if (score1 >= score3) { //213
score[0] = score2;
score[1] = score1;
score[2] = score3;
name[0][1] = name2;
name[1][1] = name1;
name[2][1] = name3;
name[0][0] = sc2;
name[1][0] = sc1;
name[2][0] = sc3;
} else { //231
score[0] = score2;
score[1] = score3;
score[2] = score1;
name[0][1] = name2;
name[1][1] = name3;
name[2][1] = name1;
name[0][0] = sc2;
name[1][0] = sc3;
name[2][0] = sc1;
}
} else { //321
score[0] = score3;
score[1] = score2;
score[2] = score1;
name[0][1] = name3;
name[1][1] = name2;
name[2][1] = name1;
name[0][0] = sc3;
name[1][0] = sc2;
name[2][0] = sc1;
}
}
}else if(show==2){//2记录
score=new int[2];
name=new String[2][2];
if(score1!=0&&score2!=0){
if(score1>=score2){
score[0] = score1;
score[1] = score2;
name[0][1] = name1;
name[1][1] = name2;
name[0][0] = sc1;
name[1][0] = sc2;
}else {
score[0] = score2;
score[1] = score1;
name[0][1] = name2;
name[1][1] = name1;
name[0][0] = sc2;
name[1][0] = sc1;
}
}else if(score1!=0&&score3!=0){
if(score1>=score3){
score[0] = score1;
score[1] = score3;
name[0][1] = name1;
name[1][1] = name3;
name[0][0] = sc1;
name[1][0] = sc3;
}else {
score[0] = score3;
score[1] = score1;
name[0][1] = name3;
name[1][1] = name1;
name[0][0] = sc3;
name[1][0] = sc1;
}
}else if(score2!=0&&score3!=0){
if(score2>=score3){
score[0] = score2;
score[1] = score3;
name[0][1] = name2;
name[1][1] = name3;
name[0][0] = sc2;
name[1][0] = sc3;
}else {
score[0] = score3;
score[1] = score2;
name[0][1] = name3;
name[1][1] = name2;
name[0][0] = sc3;
name[1][0] = sc2;
}
}
}else if(show==1){//1记录
score=new int[1];
name=new String[1][2];
if(score1!=0){
score[0] = score1;
name[0][1] = name1;
name[0][0] = sc1;
}else if(score2!=0){
score[0] = score2;
name[0][1] = name2;
name[0][0] = sc2;
}else {
score[0] = score3;
name[0][1] = name3;
name[0][0] = sc3;
}
}else {
}
if(score!=null)
v.addElement(score);
if(name!=null)
v.addElement(name);
return v;
}
public static void saveRecord(String name,int score){
boolean ok=false;
try {
RecordStore recordStore = RecordStore.openRecordStore(sc1, true);
if(recordStore.getNumRecords()==0){// 1空写1
byte data1[]=StringtoBytes(name);
byte data2[]=IntToBytes(score);
recordStore.addRecord(data1, 0, data1.length);
recordStore.addRecord(data2, 0, data2.length);
recordStore.closeRecordStore();
ok=true;
}else {
recordStore.closeRecordStore();
recordStore = RecordStore.openRecordStore(sc2, true);
if (recordStore.getNumRecords() == 0) {//2空写2
byte data1[] = StringtoBytes(name);
byte data2[] = IntToBytes(score);
recordStore.addRecord(data1, 0, data1.length);
recordStore.addRecord(data2, 0, data2.length);
recordStore.closeRecordStore();
ok=true;
}else {
recordStore.closeRecordStore();
recordStore = RecordStore.openRecordStore(sc3, true);
if (recordStore.getNumRecords() == 0) {//3空写3
byte data1[] = StringtoBytes(name);
byte data2[] = IntToBytes(score);
recordStore.addRecord(data1, 0, data1.length);
recordStore.addRecord(data2, 0, data2.length);
ok=true;
}
recordStore.closeRecordStore();
}
}
if(!ok){//如果没有空的
Vector v=getRecord();
if(score>((int[])v.elementAt(0))[2]){//如果大于最小值 冲掉最小值 写入
byte data1[] = StringtoBytes(name);
byte data2[] = IntToBytes(score);
recordStore = RecordStore.openRecordStore(((String[][])v.elementAt(1))[2][0], true);
// RecordStore.deleteRecordStore(((String[][])v.elementAt(1))[2][0]);//删除
recordStore.setRecord(1,data1,0,data1.length);//重写
recordStore.setRecord(2,data2,0,data2.length);
}
}
} catch (Exception e) {
if (Type.isprint) System.out.println("Record fail");
}
}