KMRichMan.java
上传用户:whhzxy
上传日期:2009-12-31
资源大小:269k
文件大小:23k
源码类别:

J2ME

开发平台:

Java

  1. import java.io.*;
  2. import javax.microedition.lcdui.*;
  3. import javax.microedition.midlet.MIDlet;
  4. import javax.microedition.rms.RecordStore;
  5. import javax.microedition.rms.*;
  6. /**
  7.  * 大富翁主程序。这个程序控制着所有列表,窗口的的跳转,
  8.  * 和一些要联系很多类的功能调用。
  9.  * @author SoftStar,嘟嘟熊
  10.  * @version 1.0
  11.  */
  12. public class KMRichMan extends MIDlet
  13. {
  14.     /**
  15.      * richMan实例
  16.      */
  17.     static KMRichMan richMan = null;
  18.     /**
  19.      * 游戏画板
  20.      */
  21.     PlayCanvas playCanvas;
  22.     /**
  23.      * 构造一个对象
  24.      */
  25.     public KMRichMan()
  26.     {
  27.         playCanvas = null;
  28.         richMan = this;
  29.     }
  30.     /**
  31.      * 创建游戏画板
  32.      */
  33.     void createPlayCanvas() {
  34.       playCanvas = new PlayCanvas(this);
  35.     }
  36.     /**
  37.      * 转换到游戏画板并换到下一个游戏角色。(这个定义不准确)
  38.      */
  39.     void confirmMessage()
  40.     {
  41.         Display.getDisplay(this).setCurrent(playCanvas);
  42.         playCanvas.nextPlay(1000);
  43.     }
  44.     /**
  45.      * 转换到游戏画板。
  46.      * @param flag 这个参数好像无意义??,不知道你们能不能看出意思?呵呵。。是不是用来区分方法名的啊
  47.      */
  48.     void setDisplayToPlayCanvas4(boolean flag)
  49.     {
  50.         Display.getDisplay(this).setCurrent(playCanvas);
  51.         playCanvas.fly();
  52.     }
  53.     /**
  54.      * 转换到游戏画板,与机会获得,飞机场有关(地图上的?)
  55.      */
  56.     void confirmNews()
  57.     {
  58.         Display.getDisplay(this).setCurrent(playCanvas);
  59.         playCanvas.fly();
  60.     }
  61.     /**
  62.      * 显示进入监狱消息。
  63.      */
  64.     void showInPrisonMessage()
  65.     {
  66.         Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "监狱", "你必须在监狱停留三天", 4, true));
  67.     }
  68.     /**
  69.      * 转换到游戏菜单。
  70.      */
  71.     void setDisplayToGameMenu()
  72.     {
  73.         Display.getDisplay(this).setCurrent(new GameMenu(this));
  74.     }
  75.     /**
  76.      * 转换到选项菜单。
  77.      */
  78.     void setDisplayToOptionList()
  79.     {
  80.         Display.getDisplay(this).setCurrent(new SystemList(this,this.playCanvas));
  81.     }
  82.     /**
  83.      * 转换到功能菜单。
  84.      */
  85.     void setDisplayToFucntionList()
  86.     {
  87.         Display.getDisplay(this).setCurrent(new OptionList(this,this.playCanvas));
  88.     }
  89.     /**
  90.      * 转换到股票窗口。
  91.      * @para index 股票序号
  92.      */
  93.     void setDisplayToStockForm(int index)
  94.     {
  95.         Display.getDisplay(this).setCurrent(new StockForm(this,this.playCanvas,index));
  96.     }
  97.     /**
  98.      * 转换到帮助窗口。
  99.      */
  100.     void setDisplayToHelpForm()
  101.     {
  102.         Display.getDisplay(this).setCurrent(new HelpForm(this));
  103.     }
  104.     /**
  105.      * 显示游戏角色的状态。
  106.      * @param playMoney1 玩家1的钱
  107.      * @param stock1 玩家1的股票价值
  108.      * @param ground1 玩家1的地皮数目
  109.      * @param house1 玩家1的房子数目
  110.      * @param hotel1 玩家1的旅馆数目
  111.      * @param playMoney2 玩家2的钱
  112.      * @param stock2 玩家2的股票价值
  113.      * @param ground2 玩家2的地皮数目
  114.      * @param house2 玩家2的房子数目
  115.      * @param hotel2 玩家2的旅馆数目
  116.      * @param playMoney3 玩家3的钱
  117.      * @param stock3 玩家3的股票价值
  118.      * @param ground3 玩家3的地皮数目
  119.      * @param house3 玩家3的房子数目
  120.      * @param hotel3 玩家3的旅馆数目
  121.      * @param playSequence 游戏次序
  122.      */
  123.     void showPlayerStatus(int playerMoney1, int playerMoney2, int playerMoney3,
  124.                           int stock1, int stock2, int stock3,
  125.                           int ground1, int ground2, int ground3,
  126.                           int house1,  int house2, int house3,
  127.                           int hotel1, int hotel2, int hotel3, int playerSequence[])
  128.     {
  129.         String playerNameArray[] = {
  130.             "孙小美", "阿土伯", "钱夫人"
  131.         };
  132.         String playerMessage1 = String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(
  133.         playerNameArray[playerSequence[0]])))).append(":n").
  134.             append(playerMoney1 + stock1).append(" 美元资产n ").
  135.             append(playerMoney1).append(" 美元现金n ").
  136.             append(stock1).append(" 美元股票n ").
  137.             append(ground1).append(" ").
  138.             append(fetchStatusMessages(0, ground1)).append("n ").
  139.             append(house1).append(" ").append(fetchStatusMessages(1, house1)).append("n ").
  140.             append(hotel1).append(" ").append(fetchStatusMessages(2, hotel1)).append("n ")));
  141.         String playerMessage2 = String.valueOf(String.valueOf((new StringBuffer("nn")).
  142.             append(playerNameArray[playerSequence[1]]).append(":n").
  143.             append(playerMoney2 + stock2).append(" 美元资产n ").
  144.             append(playerMoney2).append(" 美元现金n ").
  145.             append(stock2).append(" 美元股票n ").
  146.             append(ground2).append(" ").
  147.             append(fetchStatusMessages(0, ground2)).append("n ").
  148.             append(house2).append(" ").append(fetchStatusMessages(1, house2)).append("n ").
  149.             append(hotel2).append(" ").append(fetchStatusMessages(2, hotel2)).append("n ")));
  150.         String playerMessage3 = String.valueOf(String.valueOf((new StringBuffer("nn")).
  151.             append(playerNameArray[playerSequence[2]]).append(":n").
  152.             append(playerMoney3 + stock3).append(" 美元资产n ").
  153.             append(playerMoney3).append(" 美元现金n ").
  154.             append(stock3).append(" 美元股票n ").
  155.             append(ground3).append(" ").
  156.             append(fetchStatusMessages(0, ground3)).append("n ").
  157.             append(house3).append(" ").append(fetchStatusMessages(1, house3)).append("n ").
  158.             append(hotel3).append(" ").append(fetchStatusMessages(2, hotel3)).append("n ")));
  159.         if(playerMoney1 < 0)
  160.             playerMessage1 = "玩家一: 破产";
  161.         if(playerMoney2 < 0)
  162.             playerMessage2 = "n玩家二: 破产";
  163.         if(playerMoney3 < 0)
  164.             playerMessage3 = "n玩家三: 破产";
  165.         Display.getDisplay(this).setCurrent(new PlayerStatusForm(this, String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(playerMessage1)))).append(playerMessage2).append(playerMessage3)))));
  166.     }
  167.     /**
  168.     * 得到资产的单位。(从这里可以看出这个游戏以前是英文的)
  169.     * @param type 类型
  170.     * @param number 数量
  171.     */
  172.     String fetchStatusMessages(int type, int number)
  173.     {
  174.         switch(type)
  175.         {
  176.         case 0: // ''
  177.             return number <= 1 ? "块空地" : "块空地";
  178.         case 1: // '01'
  179.             return number <= 1 ? "座房屋" : "座房屋";
  180.         case 2: // '02'
  181.             return number <= 1 ? "座大厦" : "座大厦";
  182.         }
  183.         return "";
  184.     }
  185.     /**
  186.      * 继续进行游戏。
  187.      * @param selectedPlayerID 选择的游戏角色 (0-2新游戏角色,3继续上次游戏)
  188.      */
  189.     void continuePlay(int selectedPlayerID)
  190.     {
  191.         if(playCanvas == null)
  192.             playCanvas = new PlayCanvas(this);
  193.         if(selectedPlayerID < 3)
  194.         // 表示是新游戏,当 selectedPlayerID == 3时,表示接着上次的游戏
  195.         {
  196.           playCanvas.composer.getMelody().play();
  197.           playCanvas.arragePlayerSecquence(selectedPlayerID);
  198.           Display.getDisplay(this).setCurrent(playCanvas);
  199.         } else
  200.         if(!playCanvas.fetchRecords())
  201.         {
  202.             Alert alert = new Alert("没有纪录");
  203.             alert.setType(AlertType.ERROR);
  204.             alert.setString("没有纪录被存储过.");
  205.             alert.setTimeout(2000);
  206.             Display.getDisplay(this).setCurrent(alert);
  207.         } else
  208.         {
  209.           Display.getDisplay(this).setCurrent(playCanvas);
  210.         }
  211.     }
  212.     /**
  213.      * 转换到游戏画板
  214.      */
  215.     void setDisplayToPlayCanvas1()
  216.     {
  217.         Display.getDisplay(this).setCurrent(playCanvas);
  218.     }
  219.     /**
  220.      * 投完色子后转换到游戏画板
  221.      * @param diceNumber 色子点数
  222.      */
  223.     void diceAndSetDisplayToPlayForm(int diceNumber)
  224.     {
  225.         Display.getDisplay(this).setCurrent(playCanvas);
  226.         playCanvas.moveActor(diceNumber);
  227.     }
  228.     /**
  229.      * 投完色子后转换到游戏画板
  230.      * @param diceNumber 色子点数
  231.      * @param isGoOrAddMoney 色子点数是角色移动还是加钱(现金卡)
  232.      */
  233.     void addDiceMoney(int diceNumber, boolean isGoOrAddMoney)
  234.     {
  235.         PlayCanvas.player_money[PlayCanvas.nowPlayerID] += diceNumber * 100;
  236.         Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "卡片功效",String.valueOf((new StringBuffer("你获得 $").append(diceNumber * 100).append("."))), 6, true));
  237.     }
  238.     /**
  239.      * 买地或在地上建造房子
  240.      * @param groundLocation 地皮位置
  241.      * @param groundPrice 地皮价格
  242.      * @param isComputerActor 是否是电脑角色
  243.      * @param buildingLevel 建造的级别(是地皮,一般房屋,还是大厦)
  244.      */
  245.     void buildorBuyGround(int groundLocation, int groundPrice, boolean isComputerActor, int buildingLevel)
  246.     {
  247.       // 如果是人控制,那么显示购买信息。否则直接购买
  248.       if (this.playCanvas.nowPlayerID == 0) {
  249.         if (buildingLevel == 0)
  250.           Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "土地",
  251.               String.valueOf(new StringBuffer("   *").append(fetchGroundName(
  252.               groundLocation)).append("*n        [$ ").append(groundPrice).
  253.                              append("]n    你想购买吗?")), 0, isComputerActor));
  254.         else
  255.         if (buildingLevel == 3)
  256.           Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "土地",
  257.               "你想建造一座大厦吗?n" +
  258.               "费用 $".concat(String.valueOf(String.valueOf(groundPrice))), 0,
  259.                                                  isComputerActor));
  260.         else
  261.           Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "土地",
  262.               "你想建造一座房屋吗?n" +
  263.               "费用 $".concat(String.valueOf(String.valueOf(groundPrice))), 0,
  264.                                                  isComputerActor));
  265.       }
  266.       else {
  267.         playCanvas.buyLand();
  268.         playCanvas.nextPlay(1000);
  269.       }
  270.     }
  271.     /**
  272.      * 显示过路费信息
  273.      * @param price 路费
  274.      * @param isAuto 是否是自动控制返回
  275.      */
  276.     void showPaymentExpense(int price, boolean isAuto)
  277.     {
  278.         Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "支付", "过路费 $ ".concat(String.valueOf(String.valueOf(price))), 1, isAuto));
  279.     }
  280.     /**
  281.      * 显示卡片的详细介绍
  282.      * @param cardIDs 卡片
  283.      * @param selectedCardIndex 选择的卡片序号
  284.      */
  285.     void showCardDetail(int cardIDs[], int selectedCardIndex)
  286.     {
  287.         String s = "";
  288.         switch(cardIDs[selectedCardIndex])
  289.         {
  290.         case 0: // ''
  291.             s = "偷盗卡:nn功能:从对手那偷一张卡片.nn使用对象:对手";
  292.             break;
  293.         case 1: // '01'
  294.             s = "均富卡:nn功能:从其他每个玩家那平分现金.nn使用对象:对手";
  295.             break;
  296.         case 2: // '02'
  297.             s = "强占卡:nn功能:强制占用对手的土地,包括上面的房屋.nn使用时机:停留在对手的任一土地上!";
  298.             break;
  299.         case 3: // '03'
  300.             s = "睡眠卡:nn功能:使其他每个玩家在原地睡眠三天,睡眠过程中没有收过路费的权力.nn使用时机:任何时间";
  301.             break;
  302.         case 4: // '04'
  303.             s = "免罪卡:nn功能:当进入监狱时,玩家可用此卡出狱.nn使用时机:被关入监狱时.";
  304.             break;
  305.         case 5: // '05'
  306.             s = "怪兽卡:nn功能:完全摧毁土地上的房屋和建筑.nn使用区域:任意选择";
  307.             break;
  308.         case 6: // '06'
  309.             s = "天使卡:nn功能:在一块土地上建造一座建筑.nn使用区域:任意";
  310.             break;
  311.         case 7: // '07'
  312.             s = "现金卡:nn功能:增加所掷骰子点数一百倍的现金.nn使用时机:任何时间";
  313.             break;
  314.         case 8: // 'b'
  315.             s = "财神卡:nn功能:玩家可以免费购买土地.nn使用时机:玩家在空地上.";
  316.             break;
  317.         case 9: // 't'
  318.             s = "衰神卡:nn功能:玩家不能购买土地.nn使用时机:玩家在空地上.";
  319.             break;
  320.         }
  321.         PlayMessageForm playMessageForm = new PlayMessageForm(this, "卡片详情", s, 5, false);
  322.         playMessageForm.intialCardIDs(cardIDs, selectedCardIndex);
  323.         Display.getDisplay(this).setCurrent(playMessageForm);
  324.     }
  325.     /**
  326.      * 显示卡片的信息
  327.      * @param cardIndex 卡片序号
  328.      */
  329.     void showCardMessage(int cardIndex)
  330.     {
  331.         Display.getDisplay(this).setCurrent(new CardCanvas(this, null, cardIndex, true));
  332.     }
  333.     /**
  334.      * 显示卡片使用过效果
  335.      * @param msg 效果说明
  336.      */
  337.     void showCardUsedMessage(String msg)
  338.     {
  339.         Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "卡片功效", msg, 6, true));
  340.     }
  341.     /**
  342.      * 使用卡片
  343.      * @param cardID 卡片号码
  344.      */
  345.     void useCard(int cardID)
  346.     {
  347.       if(cardID != 16)
  348.         Display.getDisplay(this).setCurrent(playCanvas);
  349.       playCanvas.useCard(cardID);
  350.     }
  351.     /**
  352.      * 显示没有卡片信息
  353.      */
  354.     void showNoCard()
  355.     {
  356.         Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "没有卡片", "你没有任何卡片.", 7, false));
  357.     }
  358.     /**
  359.      * 显示卡片信息
  360.      * @param cards 卡片
  361.      */
  362.     void showCards(int cards[])
  363.     {
  364.         Display.getDisplay(this).setCurrent(new CardCanvas(this, cards, 0, false));
  365.     }
  366.     /**
  367.      * 使用卡片(手动返回)
  368.      * @param cardIDs 卡片
  369.      * @param cardIndex 卡片序号
  370.      */
  371.     void useCard_hunman(int cardIDs[], int cardIndex)
  372.     {
  373.         Display.getDisplay(this).setCurrent(new CardCanvas(this, cardIDs, cardIndex, false));
  374.     }
  375.     /**
  376.      * 使用卡片(自动返回)
  377.      * @param cardIDs 卡片
  378.      * @param cardIndex 卡片序号
  379.      */
  380.     void useCard_ComputerActor(int cardIDs[], int cardIndex)
  381.     {
  382.         Display.getDisplay(this).setCurrent(new CardCanvas(this, cardIDs, cardIndex, true));
  383.     }
  384.     /**
  385.      * 显示广播信息(龙卷风,地震等)
  386.      * @param message 消息
  387.      * @param grounds 地皮
  388.      * @param isAuto 是否自动返回
  389.      * @param title 窗口标题
  390.      */
  391.     void showBroadCast(String message, int grounds[], boolean isAuto, String title)
  392.     {
  393.         if(grounds != null)
  394.         {
  395.             for(int i = 0; i < grounds.length; i++)
  396.             {
  397.                 message = message + " ".concat(fetchGroundName(grounds[i]).trim());
  398.                 if(i != grounds.length - 1)
  399.                     message = message.concat(",");
  400.             }
  401.         }
  402.         Display.getDisplay(this).setCurrent(new PlayMessageForm(this, title, message, 2, isAuto));
  403.     }
  404.     /**
  405.      * 获取地皮名字
  406.      * @param location 地皮位置
  407.      */
  408.     private String fetchGroundName(int location)
  409.     {
  410.         switch(location)
  411.         {
  412.         case 0: // ''
  413.             return "  阿拉斯加  ";
  414.         case 1: // '01'
  415.             return "  安克雷奇  ";
  416.         case 3: // '03'
  417.             return "  佛罗里达  ";
  418.         case 4: // '04'
  419.             return " 迪斯尼乐园 ";
  420.         case 7: // '07'
  421.             return "   夏威夷   ";
  422.         case 8: // 'b'
  423.             return "   瓦胡岛   ";
  424.         case 9: // 't'
  425.             return " 哈奇奇海滩 ";
  426.         case 12: // 'f'
  427.             return "  德克萨斯  ";
  428.         case 13: // 'r'
  429.             return "   达拉斯   ";
  430.         case 17: // '21'
  431.             return "   内华达   ";
  432.         case 18: // '22'
  433.             return " 拉斯韦加斯 ";
  434.         case 19: // '23'
  435.             return "   塔霍湖   ";
  436.         case 21: // '25'
  437.             return "    纽约    ";
  438.         case 22: // '26'
  439.             return "   曼哈顿   ";
  440.         case 23: // '27'
  441.             return "  布鲁克林  ";
  442.         case 24: // '30'
  443.             return "   奎恩斯   ";
  444.         case 26: // '32'
  445.             return "   华盛顿   ";
  446.         case 29: // '35'
  447.             return "   西雅图   ";
  448.         case 30: // '36'
  449.             return " 华盛顿特区 ";
  450.         case 31: // '37'
  451.             return "    白宫    ";
  452.         case 33: // '!'
  453.             return "  伊洛尼斯  ";
  454.         case 34: // '"'
  455.             return "   芝加哥   ";
  456.         case 35: // '#'
  457.             return " 鲁斯莫尔峰 ";
  458.         case 38: // '&'
  459.             return " 加利福尼亚 ";
  460.         case 39: // '''
  461.             return "   洛杉矶   ";
  462.         case 40: // '('
  463.             return "   好莱坞   ";
  464.         case 43: // '+'
  465.             return "  贝弗莉山  ";
  466.         case 44: // ','
  467.             return "   旧金山   ";
  468.         case 46: // '.'
  469.             return "费阿斯门码头";
  470.         case 47: // '/'
  471.             return "   39码头   ";
  472.         case 2: // '02'
  473.         case 5: // '05'
  474.         case 6: // '06'
  475.         case 10: // 'n'
  476.         case 11: // '13'
  477.         case 14: // '16'
  478.         case 15: // '17'
  479.         case 16: // '20'
  480.         case 20: // '24'
  481.         case 25: // '31'
  482.         case 27: // '33'
  483.         case 28: // '34'
  484.         case 32: // ' '
  485.         case 36: // '$'
  486.         case 37: // '%'
  487.         case 41: // ')'
  488.         case 42: // '*'
  489.         case 45: // '-'
  490.         default:
  491.             return "土地";
  492.         }
  493.     }
  494.     /**
  495.      * 转换到股票列表
  496.      */
  497.     void setDisplayToStockList()
  498.     {
  499.         Display.getDisplay(this).setCurrent(new StockList(this, this.playCanvas));
  500.     }
  501.     /**
  502.      * 显示机会获得(地图上的?)的信息
  503.      * @param msg 信息
  504.      */
  505.     void showChance(String msg)
  506.     {
  507.         Display.getDisplay(this).setCurrent(new PlayMessageForm(this, "机会", msg, 3, true));
  508.     }
  509.     /**
  510.      * 转换到色子窗口
  511.      */
  512.     void setDisplayToDiceCanvas()
  513.     {
  514.         Display.getDisplay(this).setCurrent(new DiceCanvas(this, true));
  515.     }
  516.     /**
  517.      * 转换到色子窗口(现金卡加钱用)
  518.      * @param playerMoney 角色的金钱 (好象这里用不到)
  519.      * @param playerID 角色的index (好象这里用不到)
  520.      */
  521.     void setDisplayToDiceForm(int playerMoney[], int playerID)
  522.     {
  523.         Display.getDisplay(this).setCurrent(new DiceCanvas(this, false));
  524.     }
  525.     /**
  526.      * 显示最高分
  527.      */
  528.     void showHighScore()
  529.     {
  530.       String playerNames[] = {
  531.           "孙小美", "阿土伯", "钱夫人"
  532.       };
  533.       String playerData[][] = new String[3][2];
  534.       // 得到存贮的最高分
  535.       try {
  536.         RecordStore recordstore = RecordStore.openRecordStore("RichManScore", false);
  537.         ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(
  538.             recordstore.getRecord(1));
  539.         DataInputStream datainputstream = new DataInputStream(
  540.             bytearrayinputstream);
  541.         for (int l = 0; l < 3; l++) {
  542.           playerData[l][0] = playerNames[datainputstream.readInt()];
  543.           playerData[l][1] = "".concat(String.valueOf(datainputstream.readInt()));
  544.         }
  545.         datainputstream.close();
  546.         bytearrayinputstream.close();
  547.         recordstore.closeRecordStore();
  548.       }
  549.       catch (Exception exception) {
  550.         // 要是出现异常,用默认值
  551.         playerData[0][0] = "孙小美";
  552.         playerData[0][1] = "105";
  553.         playerData[1][0] = "阿土伯";
  554.         playerData[1][1] = "155";
  555.         playerData[2][0] = "钱夫人";
  556.         playerData[2][1] = "166";
  557.       }
  558.       Display.getDisplay(this).setCurrent(new HighScoreCanvas(this, playerData));
  559.     }
  560.     /**
  561.      * 更新最高分
  562.      * @param playerName 玩家名字
  563.      * @param turnCount 游戏进行的轮数(3个人依次玩一次为一轮)
  564.      */
  565.     void freshHighScore(int playerName, int turnCount)
  566.     {
  567.         RecordStore recordstore = null;
  568.         int score[][] = new int[3][2];
  569.         for(int i = 0; i < 3; i++)
  570.         {
  571.             for(int j = 0; j < 2; j++)
  572.                 score[i][j] = -1;
  573.         }
  574.         try
  575.         {
  576.             recordstore = RecordStore.openRecordStore("RichManScore", false);
  577.         }
  578.         catch(Exception exception)
  579.         {
  580.             score[0][0] = 0;
  581.             score[0][1] = 105;
  582.             score[1][0] = 1;
  583.             score[1][1] = 155;
  584.             score[2][0] = 2;
  585.             score[2][1] = 166;
  586.         }
  587.         try
  588.         {
  589.             if(recordstore != null)
  590.             {
  591.                 ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(recordstore.getRecord(1));
  592.                 DataInputStream datainputstream = new DataInputStream(bytearrayinputstream);
  593.                 for(int i = 0; i < 3; i++)
  594.                 {
  595.                     score[i][0] = datainputstream.readInt();
  596.                     score[i][1] = datainputstream.readInt();
  597.                 }
  598.                 datainputstream.close();
  599.                 bytearrayinputstream.close();
  600.                 recordstore.closeRecordStore();
  601.             }
  602.         }
  603.         catch(Exception exception1) { }
  604.         // 插入分数
  605.         if(turnCount < score[0][1])
  606.         {
  607.             score[2][0] = score[1][0];
  608.             score[2][1] = score[1][1];
  609.             score[1][0] = score[0][0];
  610.             score[1][1] = score[0][1];
  611.             score[0][0] = playerName;
  612.             score[0][1] = turnCount;
  613.         } else
  614.         if(turnCount < score[1][1])
  615.         {
  616.             score[2][0] = score[1][0];
  617.             score[2][0] = score[1][0];
  618.             score[1][0] = playerName;
  619.             score[1][1] = turnCount;
  620.         } else
  621.         if(turnCount < score[2][1])
  622.         {
  623.             score[2][0] = playerName;
  624.             score[2][0] = turnCount;
  625.         }
  626.         byte bytes[] = null;
  627.         // 从新写入文件
  628.         try
  629.         {
  630.             ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
  631.             DataOutputStream dataoutputstream = new DataOutputStream(bytearrayoutputstream);
  632.             for(int i2 = 0; i2 < 3; i2++)
  633.             {
  634.                 for(int j2 = 0; j2 < 2; j2++)
  635.                     dataoutputstream.writeInt(score[i2][j2]);
  636.             }
  637.             bytes = bytearrayoutputstream.toByteArray();
  638.             dataoutputstream.close();
  639.             bytearrayoutputstream.close();
  640.         }
  641.         catch(Exception exception2) { }
  642.         try {
  643.           RecordStore.deleteRecordStore("RichManScore");
  644.         }
  645.         catch (RecordStoreException ex) {
  646.           System.out.println("Can't find Score!");
  647.         }
  648.         try
  649.         {
  650.           RecordStore recordstore1 = RecordStore.openRecordStore("RichManScore", true);
  651.           recordstore1.addRecord(bytes, 0, bytes.length);
  652.           recordstore1.closeRecordStore();
  653.         }
  654.         catch(Exception exception3) { }
  655.     }
  656.     /**
  657.      * 买地或或是加盖房子
  658.      */
  659.     public void buyGroundorBuilding()
  660.     {
  661.         playCanvas.buyLand();
  662.         confirmMessage(); // 买土地返回
  663.     }
  664.     /**
  665.      * 程序开始,转换到开始画面
  666.      */
  667.     public void startApp()
  668.     {
  669.         Display.getDisplay(this).setCurrent(new OpenCanvas(this));
  670.     }
  671.     /**
  672.      * 暂停程序
  673.      */
  674.     public void pauseApp()
  675.     {
  676.     }
  677.     /**
  678.      * 破坏程序
  679.      */
  680.     public void destroyApp(boolean flag)
  681.     {
  682.     }
  683.     /**
  684.      * 退出游戏
  685.      */
  686.     public static void exitGame()
  687.     {
  688.         richMan.destroyApp(true);
  689.         richMan.notifyDestroyed();
  690.         richMan = null;
  691.     }
  692. }