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

📄 recstore.java

📁 用J2ME写的手机游戏。“北京浮生记”是您工作学习之余消遣休闲理想的小游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import javax.microedition.rms.*;
import java.io.*;

public class RecStore {
   private RecordStore rs = null; //作保存游戏用
   //String rsname="save";
   long[] goodsPrice = { //构造持有物品价格的数组
       Base.vcd_price, Base.phone_price, Base.sk_price,
       Base.cigar_price, Base.wine_price, Base.toy_price,
       Base.book_price, Base.car_price
   };
   long[] goodsNumber = { //构造持有物品数量的数组
       Base.vcd_number, Base.phone_number, Base.sk_number,
       Base.cigar_number, Base.wine_number, Base.toy_number,
       Base.book_number, Base.car_number
   };
   long[] marketPrice = { // 构造当前物品价格的数组
       Base.market_vcd_price, Base.market_phone_price, Base.market_sk_price,
       Base.market_cigar_price, Base.market_wine_price,
       Base.market_toy_price,
       Base.market_book_price, Base.market_car_price
   };
   //标签偏移量
   int[] marks = {
       Base.index,
       Base.dx, Base.dy, //游戏界面偏移量
       Base.metro_dx, Base.metro_dy, //地铁界面偏移量
       Base.sysDy,
       Base.menuList, //game界面菜单的编号
       Base.goodsItem, //商品的编号
       Base.roomPage, //仓库的页面数
       Base.marketStatus, //市场界面的状态,包括交易成功失败的界面绘制的控制参数
       Base.bankStatus, //银行的界面编号
       Base.postOfficeStatus, //邮局界面编号
       Base.interStatus, //中介界面编号
       Base.hospitalStatus, //医院界面编号
       Base.addressID //地铁各站的编号
   };

   //属性变量
   long[] status = {
       Base.nDate, // 日期(游戏时间,上限40天)
       Base.nHealth, //健康点数-30到100点少于-20点就回家养伤,告别北京
       Base.lCash, //现金数
       Base.lSave, //存款
       Base.lDebt, //债务
       Base.lRoom //库房大小
   };

   public RecStore() {
      rs = openRSAnyway("saveGame2");
      System.out.println("constructor"+marks.length);
   }

//创建新的记录集
   public RecordStore openRSAnyway(String rsname) {
      //数据仓库的名称大于32个字符就不能够接受
      if (rsname.length() > 32) {
	 return null;
      }
      try {
	 rs = RecordStore.openRecordStore(rsname, true);

      }
      catch (Exception e) {
	 //return null;
	 System.out.println("openrs "+e);
      }
      return rs;
   }

//long2byte[]
    public static byte[] createByteGroup(long data) {
      String st = String.valueOf(data);
      return st.getBytes();
   }

//int2byte[]
   public byte[] createByteGroup(int data) {
      String st = String.valueOf(data);
      return st.getBytes();
   }

//byte[]2long
    public static long byte2Long(byte[] data) {
      String st = new String(data);
      return Long.parseLong(st);
   }

//byte[]2int
   public int byte2Int(byte[] data) {
      String st = new String(data);
      return Integer.parseInt(st);
   }

   /*
    *保存游戏当前数据 Base.java
    */
   public void saveGame() {

	 //ID为记录集中该记录所载的ID号
	 try {
	    if(rs.getNumRecords()==0){
	    //rs = RecordStore.openRecordStore(rsname, true);

	    /*
	     *******持有商品的价格*******
	     *ID.01 持有商品VCD的平均价格
	     *ID.02 持有商品手机的平均价格
	     *ID.03 持有商品化妆品的平均价格
	     *ID.04 持有商品香烟的平均价格
	     *ID.05 持有商品白酒的平均价格
	     *ID.06 持有商品玩具的平均价格
	     *ID.07 持有商品黄色书刊的平均价格
	     *ID.08 持有商品汽车的平均价格
	     */
	    for (int i = 0; i < goodsPrice.length; i++) {
	       rs.addRecord(createByteGroup(goodsPrice[i]), 0,
			    createByteGroup(goodsPrice[i]).length);
	    }
	    /*
	     ******持有商品的数量******
	     *ID.09 持有商品VCD的数量
	     *ID.10 持有商品手机的数量
	     *ID.11 持有商品化妆品的数量
	     *ID.12 持有商品香烟的数量
	     *ID.13 持有商品白酒的数量
	     *ID.14 持有商品玩具的数量
	     *ID.15 持有商品黄色书刊的数量
	     *ID.16 持有商品汽车的数量
	     */

	    for (int i = 0; i < goodsNumber.length; i++) {
	       rs.addRecord(createByteGroup(goodsNumber[i]), 0,
			    createByteGroup(goodsNumber[i]).length);
	    }

	    /*
	     *****当前黑市商品的价格****
	     *ID.17 黑市vcd的价格
	     *ID.18 黑市手机的价格
	     *ID.19 黑市化妆品的价格
	     *ID.20 黑市香烟的价格
	     *ID.21 黑市vcd的价格
	     *ID.22 黑市vcd的价格
	     *ID.23 黑市vcd的价格
	     *ID.24 黑市vcd的价格
	     */
	    for (int i = 0; i < marketPrice.length; i++) {
	       rs.addRecord(createByteGroup(marketPrice[i]), 0,
			    createByteGroup(marketPrice[i]).length);

	    }

	    /*
	     ******当前系统状态标签等的值******
	     *ID.25 index控制人物动画中人物的切割
	     *ID.26 游戏界面人物的偏移量,相对值 横坐标dx
	     *ID.27 游戏界面人物的偏移量,相对值 纵坐标dy
	     *ID.28 地铁界面光标的偏移量,相对值 横坐标metro_dx
	     *ID.29 地铁界面光标的偏移量,相对值 纵坐标metro_dy
	     *ID.30 sysDy,系统界面的纵坐标偏移量
	     *ID.31 game界面菜单的编号menulist
	     *ID.32 商品的编号
	     *ID.33 仓库的页面数roomPage
	     *ID.34 市场界面的状态,包括交易成功失败的界面绘制的控制参数marketStatus
	     *ID.35 银行的界面编号
	     *ID.36 邮局界面编号
	     *ID.37 中介界面编号
	     *ID.38 医院界面编号
	     */
	    for (int i = 0; i < marks.length; i++) {
	       rs.addRecord(createByteGroup(marks[i]), 0,
			    createByteGroup(marks[i]).length);
	    }

	    /*
	     ******属性变量的设置*****
	     *ID.39 nDate,游戏的时间
	     *ID.40 nHealth,人物的健康点数
	     *ID.41 lCash,先进的数量
	     *ID.42 lSave,存款的数量
	     *ID.43 lDebt,债务的数量
	     *ID.44 lRoom,库房的大小
	     */
	    for (int i = 0; i < marks.length; i++) {
	       if (i == 0) {
		  System.out.println("Base.ndate" + Base.nDate);
		  System.out.println("status[0]" + status[0]);
	       }
	       rs.addRecord(createByteGroup(status[i]), 0,
			    createByteGroup(status[i]).length);
	    }
	    rs.closeRecordStore();
	 }else if(rs.getNumRecords()>0){
	    for (int i = 1; i <= rs.getNumRecords(); i++) {
	       switch (i) {
		  /*
		   *******持有商品的价格*******
		   */
		  case 1: //ID.01 改变记录中持有商品VCD的平均价格
		     rs.setRecord(i,createByteGroup(Base.vcd_price), 0,
				  createByteGroup(Base.vcd_price).length);
		     break;
		  case 2: //ID.02 持有商品手机的平均价格
		     rs.setRecord(i,createByteGroup(Base.phone_price), 0,
				  createByteGroup(Base.phone_price).length);
		     break;
		  case 3: //ID.03 持有商品化妆品的平均价格
		     rs.setRecord(i,createByteGroup(Base.sk_price), 0,
				  createByteGroup(Base.sk_price).length);
		     break;
		  case 4: //ID.04 持有商品香烟的平均价格
		     rs.setRecord(i,createByteGroup(Base.cigar_price), 0,
				  createByteGroup(Base.cigar_price).length);
		     break;
		  case 5: //ID.05 持有商品白酒的平均价格
		     rs.setRecord(i,createByteGroup(Base.wine_price), 0,
				  createByteGroup(Base.wine_price).length);
		     break;
		  case 6: //ID.06 持有商品玩具的平均价格
		     rs.setRecord(i,createByteGroup(Base.toy_price), 0,
				  createByteGroup(Base.toy_price).length);
		     break;
		  case 7: //ID.07 持有商品黄色书刊的平均价格
		     rs.setRecord(i,createByteGroup(Base.book_price), 0,
				  createByteGroup(Base.book_price).length);
		     break;
		  case 8: //ID.08 持有商品汽车的平均价格
		     rs.setRecord(i,createByteGroup(Base.car_price), 0,
				  createByteGroup(Base.car_price).length);
		     break;
		     /*
		      ******持有商品的数量******
		  */
		  case 9: //ID.09 持有商品VCD的数量
		     rs.setRecord(i,createByteGroup(Base.vcd_number), 0,
				  createByteGroup(Base.vcd_number).length);
		     break;
		  case 10: //ID.10 持有商品手机的数量
		     rs.setRecord(i,createByteGroup(Base.phone_number), 0,
				  createByteGroup(Base.phone_number).length);
		     break;
		  case 11: //ID.11 持有商品化妆品的数量
		     rs.setRecord(i,createByteGroup(Base.sk_number), 0,
				  createByteGroup(Base.sk_number).length);
		     break;
		  case 12: //ID.12 持有商品香烟的数量
		     rs.setRecord(i,createByteGroup(Base.cigar_number), 0,
				  createByteGroup(Base.cigar_number).length);
		     break;
		  case 13: //ID.13 持有商品白酒的数量
		     rs.setRecord(i,createByteGroup(Base.wine_number), 0,
				  createByteGroup(Base.wine_number).length);
		     break;
		  case 14: //ID.14 持有商品玩具的数量
		     rs.setRecord(i,createByteGroup(Base.toy_number), 0,
				  createByteGroup(Base.toy_number).length);
		     break;
		  case 15: //ID.15 持有商品黄色书刊的数量
		     rs.setRecord(i,createByteGroup(Base.book_number), 0,
				  createByteGroup(Base.book_number).length);
		     break;
		  case 16: //ID.16 持有商品汽车的数量
		     rs.setRecord(i,createByteGroup(Base.car_number), 0,
				  createByteGroup(Base.car_number).length);
		     break;
		     /*
		      *****当前黑市商品的价格****
		  */
		  case 17: //ID.17 黑市vcd的价格
		     rs.setRecord(i,createByteGroup(Base.market_vcd_price), 0,
				  createByteGroup(Base.market_vcd_price).length);
		     break;
		  case 18: //ID.18 黑市手机的价格
		     rs.setRecord(i,createByteGroup(Base.market_phone_price), 0,
				  createByteGroup(Base.market_phone_price).length);
		     break;
		  case 19: //ID.19 黑市化妆品的价格
		     rs.setRecord(i,createByteGroup(Base.market_sk_price), 0,
				  createByteGroup(Base.market_sk_price).length);
		     break;
		  case 20: //ID.20 黑市香烟的价格
		     rs.setRecord(i,createByteGroup(Base.market_cigar_price), 0,

⌨️ 快捷键说明

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