Exemple #1
0
 private void SetControlsFromFile(FiveStones.Tag tag, string szName, int nFlag)
 {                                                           //根据读入存档信息设置各控件
     if (tag == FiveStones.Tag.Black)                        //黑色玩家
     {
         if ((nFlag & Constants.AI_PLAYER) > 0)              //AI玩家,启用AI相关控件
         {
             radBlackHuman.Checked = txtBlackHuman.Enabled = radBlackNet.Checked = false;
             radBlackAI.Checked    = true;
             return;
         }
         if ((nFlag & Constants.HUMAN_PLAYER) > 0)           //人类玩家,启用人类相关控件
         {
             radBlackAI.Checked    = radBlackNet.Checked = false;
             radBlackHuman.Checked = txtBlackHuman.Enabled = true;
             txtBlackHuman.Text    = szName;                 //人名
             return;
         }
     }
     else
     {                                                       //白色玩家同上
         if ((nFlag & Constants.AI_PLAYER) > 0)
         {
             radWhiteHuman.Checked = txtWhiteHuman.Enabled = radWhiteNet.Checked = false;
             radWhiteAI.Checked    = true;
             return;
         }
         if ((nFlag & Constants.HUMAN_PLAYER) > 0)
         {
             radWhiteAI.Checked    = radWhiteNet.Checked = false;
             radWhiteHuman.Checked = txtWhiteHuman.Enabled = true;
             txtWhiteHuman.Text    = szName;
             return;
         }
     }
 }
Exemple #2
0
        private void LoadGame(BinaryReader reader)                  //读取空间信息
        {
            int            nFlag, nWinner;                          //玩家标记,是否获胜
            string         szName;                                  //玩家名
            AbstractPlayer player;                                  //玩家临时变量

            nTimeLimit = reader.ReadInt32();                        //读取限制时间
            SetTimeLimit(nTimeLimit);                               //设定限制时间

            nWinner = reader.ReadInt32();                           //读取胜利者
            if (nWinner > 0)                                        //胜利者已产生
            {
                MessageBox.Show("存档中游戏已结束,切换至播放录像模式。");
                chkTimeLimit.Checked = txtTimeLimit.Enabled = false;//禁用限时对话框
            }

            for (FiveStones.Tag i = FiveStones.Tag.Black; i <= FiveStones.Tag.White; ++i)
            {                                                       //读取各玩家信息
                szName = reader.ReadString();                       //玩家名
                nFlag  = reader.ReadInt32();                        //玩家标记

                if (nWinner == 0)                                   //并非录像
                {
                    if ((nFlag & Constants.HUMAN_PLAYER) > 0)       //人类
                    {
                        player = new HumanPlayer(game, i, szName);  //创建人类玩家
                    }
                    else
                    {
                        player = new AIPlayer(game, i);             //创建机器人玩家
                    }
                }
                else
                {
                    player = new VideoPlayer(game, i, szName);      //创建录像播放器
                }
                game[i] = player;                                   //设置游戏的玩家
                SetControlsFromFile(player.tag, szName, nFlag);     //设置各控件属性
            }

            game.Clear();                                           //清空之前游戏落子等信息
            InGame = true;                                          //已在游戏中
            SetControls();                                          //设置控件

            if (nWinner > 0)                                        //录像模式
            {
                btnGame.Text     = "停止录像";
                btnFile.Enabled  = false;                           //不可以保存
                game.Winner      = game[(FiveStones.Tag)nWinner];   //游戏已有胜利者
                trkVideo.Enabled = timerVideo.Enabled = true;       //启用录像相关控件
            }
        }