HighScoreRecordStore.java
上传用户:jinxueyang
上传日期:2016-05-15
资源大小:104k
文件大小:5k
源码类别:

J2ME

开发平台:

Java

  1. package game;
  2. import javax.microedition.rms.*;
  3. public class HighScoreRecordStore
  4. {
  5. /**
  6.  * 保存最高分
  7.  * @param name 姓名
  8.  * @param score 分数
  9.  * */
  10.     public static void saveHighScore(String name, int score)
  11.     {
  12.      RecordStore nameRs = null;
  13.      RecordStore scoreRs = null;
  14.      int rsNum = 0;
  15.      byte b[];
  16.     
  17.      try
  18.      {
  19.             //打开记录集
  20.      nameRs = RecordStore.openRecordStore("name", true);
  21.      scoreRs = RecordStore.openRecordStore("score", true);
  22.     
  23.      try
  24.      {
  25.          rsNum = nameRs.getNumRecords();
  26.      }
  27.      catch(RecordStoreNotOpenException e)
  28.      {
  29.      rsNum = 0;
  30.      }
  31.             //记录数大于零
  32.      if ( rsNum > 0 )
  33.      {   
  34.      //记录数小于5
  35.                 if ( rsNum < 5 )
  36.                 {
  37.            b = name.getBytes();
  38.            nameRs.addRecord( b, 0, b.length);
  39.             b = intToByte(score);
  40.             scoreRs.addRecord( b, 0, b.length);
  41.                  for ( int i = rsNum; i > 0; i-- )
  42.                  {
  43.                  if ( i > 1 && byteToInt(scoreRs.getRecord(i)) < score )
  44.                  {
  45.                   b = nameRs.getRecord(i);
  46.                   nameRs.setRecord( i+1, b, 0, b.length);
  47.                   b = scoreRs.getRecord(i);
  48.                   scoreRs.setRecord( i+1, b, 0, b.length);
  49.                  }
  50.                  else
  51.                  {
  52.                   if ( i == rsNum )
  53.                   {
  54.                   break;
  55.                   }
  56.                   b = name.getBytes();
  57.                   nameRs.setRecord( i, b, 0, b.length);
  58.                   b = intToByte(score);
  59.                   scoreRs.setRecord( i, b, 0, b.length);
  60.                  }
  61.                  }
  62.                 }
  63.                 //记录集等于5
  64.                 else
  65.                 {
  66.                  for ( int i = rsNum; i > 0; i-- )
  67.                  {
  68.                  if ( i > 1 && byteToInt(scoreRs.getRecord(i)) < score )
  69.                  {
  70.                   b = nameRs.getRecord(i+1);
  71.                   nameRs.setRecord( i, b, 0, b.length);
  72.                   b = scoreRs.getRecord(i+1);
  73.                   scoreRs.setRecord( i, b, 0, b.length);
  74.                  }
  75.                  else
  76.                  {
  77.                   if ( i == rsNum )
  78.                   {
  79.                   break;
  80.                   }
  81.                   b = name.getBytes();
  82.                   nameRs.setRecord( i, b, 0, b.length);
  83.                   b = intToByte(score);
  84.                   scoreRs.setRecord( i, b, 0, b.length);
  85.                  }
  86.                  }
  87.                 }
  88.      }
  89.      else
  90.      {
  91.      b = name.getBytes();
  92.      nameRs.addRecord( b, 0, b.length);
  93.      b = intToByte(score);
  94.      scoreRs.addRecord( b, 0, b.length);
  95.      }
  96.     
  97.      //关闭记录集
  98.      nameRs.closeRecordStore();
  99.             scoreRs.closeRecordStore();
  100.          nameRs = null;
  101.          scoreRs = null;  
  102.      }
  103.      catch(Exception e)
  104.      {
  105.     
  106.      }
  107.     
  108.     }
  109.     /**
  110.      * 取高分记录
  111.      * */
  112.     public static int getHighScore(String name[], int score[])
  113.     {
  114.      RecordStore nameRs = null;
  115.      RecordStore scoreRs = null;
  116.      int rsNum = 0;
  117.      try
  118.      {
  119.             //打开记录集
  120.      nameRs = RecordStore.openRecordStore("name", false);
  121.      scoreRs = RecordStore.openRecordStore("score", false);
  122.     
  123.      try
  124.      {
  125.          rsNum = nameRs.getNumRecords();
  126.      }
  127.      catch(RecordStoreNotOpenException e)
  128.      {
  129.      rsNum = 0;
  130.      }
  131.     
  132.      for ( int i = 0; i < rsNum; i++ )
  133.      {
  134.      name[i] = new String(nameRs.getRecord(i+1));
  135.      score[i] = byteToInt(scoreRs.getRecord(i+1));
  136.      }
  137.     
  138.      //关闭记录集
  139.      nameRs.closeRecordStore();
  140.             scoreRs.closeRecordStore();
  141.          nameRs = null;
  142.          scoreRs = null;
  143.      }
  144.      catch(Exception e)
  145.      {
  146.      System.out.println(e);
  147.      }
  148. return rsNum;
  149.     }
  150.     
  151.     /**
  152.      * 将整数转换为字节数组
  153.      * @param number 要转换的整数
  154.      * @return 字节数组
  155.      * */
  156.     public static byte[] intToByte(int number)
  157.     {
  158.      return String.valueOf(number).getBytes();
  159.     }
  160.     
  161.     /**
  162.      * 将字节数组转换为整数
  163.      * @param number 要转换的字节数组
  164.      * @return 整数
  165.      * */
  166.     public static int byteToInt(byte[] bytes)
  167.     {
  168.      return Integer.parseInt(new String(bytes));
  169.     }
  170.     
  171.     public boolean moveArrayElement(int data[], int from, int to)
  172.     {
  173.      if ( to > data.length )
  174.      {
  175.      return false;
  176.      }
  177.      else
  178.      {
  179.      data[to] = data[from];
  180.      }
  181.      return true;
  182.     }
  183. }