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; } } }
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; //启用录像相关控件 } }