⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dossierrms.java

📁 一款Java管道连接游戏
💻 JAVA
字号:
/*
 * DossierRms.java
 *
 * Created on 2005年12月20日, 上午8:52
 * Download by http://www.codefans.net
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */
import javax.microedition.lcdui.*;
import java.io.*;
import java.util.*;
import javax.microedition.rms.*;
/**
 *
 * @author shide8848
 */
class DossierComparator implements RecordComparator{
    public int compare(byte[] rec1, byte[] rec2){
        byte p1=0;
        byte p2=0;
        try{
            DossierRms.deserialize(rec1);
            p1=DossierRms.dossierId;
            DossierRms.deserialize(rec2);
            p2=DossierRms.dossierId;
        }catch(Exception e){}
        if (p1==p2){
            return RecordComparator.EQUIVALENT;
        } else if(p1<p2){
            return RecordComparator.PRECEDES;
        } else{
            return RecordComparator.FOLLOWS;
        }
    }
}
public class DossierRms {
    public static byte tempId=0;
    public static byte dossierId=0;
    public static int totalCursor=0;
    public static int passWaitTime=0;
    public static int curx=0;
    public static int cury=0;
    public static byte[] mainGrids=new byte[Grids.gridW*Grids.gridW];
    public static int[] dossierIdList=null;
    public static void transDataIn(int tId){
        dossierId=(byte)tId;
        totalCursor=GameCanvas.totalCursor;
        passWaitTime=Grids.passWaitTime-1000;
        if (passWaitTime<0){
            passWaitTime=0;
        }
        curx=GameCanvas.curx;
        cury=GameCanvas.cury;
        for(int i=0;i<mainGrids.length;i++){
            mainGrids[i]=Grids.mainGrids[i];
        }
    }
    public static void transDataOut(){
        GameCanvas.totalCursor=totalCursor;
        Grids.passWaitTime=passWaitTime;
        GameCanvas.curx=curx;
        GameCanvas.cury=cury;
        for (int i=0;i<mainGrids.length;i++){
            Grids.mainGrids[i]=mainGrids[i];
        }
    }//返回值代表dosId对应的记录号  -1代表未找到这个存档
    public static int getRmsIdByDossierId(int dosId){
        int r=-1;
        RecordStore rs1=null;
        try{
            rs1=RecordStore.openRecordStore("dossier",true);
        }catch(Exception e){}
        if (rs1!=null){
            RecordEnumeration re=null;
            try{
                re=rs1.enumerateRecords(null,null,false);
                byte[] data=null;
                int id=-1;
                while(re.hasNextElement()){
                    id=re.nextRecordId();
                    data=rs1.getRecord(id);
                    deserializeDosId(data);
                    if (tempId==dosId){
                        r=id;
                        break;
                    }
                }
            }catch(Exception e){
            }
            if (re!=null){
                re.destroy();
                re=null;
            }
            try{
                rs1.closeRecordStore();
            }catch(Exception e){}
        }
        rs1=null;
        return r;
    }
    public static void writeDossier(int dosId){
        int rmsId=getRmsIdByDossierId(dosId);
        RecordStore rs1=null;
        try{
            rs1=RecordStore.openRecordStore("dossier",true);
        }catch(Exception e){}
        if (rs1!=null){
            transDataIn(dosId);
            byte[] data1=null;
            try{
                data1=serialize();
            }catch(Exception e){}
            if (rmsId==-1){//目前没有这个存档号的记录
                try{
                    rs1.addRecord(data1, 0, data1.length);
                }catch(Exception e){}
            } else{
                try{
                    rs1.setRecord(rmsId, data1, 0, data1.length);
                }catch(Exception e){}
            }
            try{
                rs1.closeRecordStore();
            }catch(Exception e){}
        }
        rs1=null;
    }
    public static void readDossier(int dosId){
        int rmsId=getRmsIdByDossierId(dosId);
        RecordStore rs1=null;
        try{
            rs1=RecordStore.openRecordStore("dossier",true);
        }catch(Exception e){}
        if (rs1!=null){
            try{
                byte[] data1=rs1.getRecord(rmsId);
                deserialize(data1);
            }catch(Exception e){}
            try{
                rs1.closeRecordStore();
            }catch(Exception e){}
        }
        transDataOut();
    }
    //返回值代表存档的个数,0代表无存档
    public static int setDossierIdList(){
        int rmsNum=0;
        RecordStore rs1=null;
        try{
            rs1=RecordStore.openRecordStore("dossier",true);
        }catch(Exception e){}
        if (rs1!=null){
            try{
                rmsNum=rs1.getNumRecords();
            }catch(Exception e){}
            if (rmsNum>0){
                dossierIdList=new int[rmsNum];
                RecordEnumeration re=null;
                try{
                    re=rs1.enumerateRecords(null,new DossierComparator(),false);
                    int id=0;
                    byte[] data1=null;
                    int j=0;
                    while(re.hasNextElement()){
                        id=re.nextRecordId();
                        data1=rs1.getRecord(id);
                        deserializeDosId(data1);
                        dossierIdList[j++]=tempId;
                    }
                }catch(Exception e){}
                if (re!=null){
                    re.destroy();
                    re=null;
                }
            }
            try{
                rs1.closeRecordStore();
            }catch(Exception e){}
        }
        return rmsNum;
    }
    public static byte[] serialize() throws
            IOException{
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        dos.writeByte(dossierId);
        dos.writeInt(totalCursor);
        dos.writeInt(passWaitTime);
        dos.writeInt(curx);
        dos.writeInt(cury);
        for(int i=0;i<mainGrids.length;i++){
            dos.writeByte(mainGrids[i]);
        }
        baos.close();
        dos.close();
        return baos.toByteArray();
    }
    public static void deserialize(byte[] data1) throws IOException{
        ByteArrayInputStream bais = new ByteArrayInputStream(data1);
        DataInputStream dis = new DataInputStream(bais);
        dossierId=dis.readByte();
        totalCursor=dis.readInt();
        passWaitTime=dis.readInt();
        curx=dis.readInt();
        cury=dis.readInt();
        for(int i=0;i<Grids.gridW*Grids.gridW;i++){
            mainGrids[i]=dis.readByte();
        }
        bais.close();
        dis.close();
    }
    public static void deserializeDosId(byte[] data1) throws IOException{
        ByteArrayInputStream bais = new ByteArrayInputStream(data1);
        DataInputStream dis = new DataInputStream(bais);
        tempId=dis.readByte();
        bais.close();
        dis.close();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -