public GameRiver()
 {
     InitializeComponent();
     DialogResult = DialogResult.OK;
     chesses = new int[8];
     lastChesses = new int[8] { 3, 3, 3, 3, 3, 3, 3, 3 };
     InitChesses();
     statue = GameRiverStatue.Waiting;
     isStepReady = false;
     OnClickChess1 = null;
     OnClickChess2 = null;
     cfg = GameConfig.GetCfgXml()["GameRiver"];
 }
 private void mainUIThreadFunc()
 {
     var resources = new System.ComponentModel.ComponentResourceManager(typeof(GameRiver));
     while(!mainUIThreadEnd)
     {
         Thread.Sleep(1);
         for(int i = 0; i < 8; i++)
         {
             if(chesses[i] != lastChesses[i])
             {
                 lastChesses[i] = chesses[i];
                 switch(chesses[i])
                 {
                     case -2:
                         pics[i].Image = Properties.Resources.GameRiverChessBlackChoosen;
                         break;
                     case -1:
                         pics[i].Image = Properties.Resources.GameRiverChessBlack;
                         break;
                     case 0:
                         pics[i].Image = null;
                         break;
                     case 1:
                         pics[i].Image = Properties.Resources.GameRiverChessWhite;
                         break;
                     case 2:
                         pics[i].Image = Properties.Resources.GameRiverChessWhiteChoosen;
                         break;
                 }
             }
         }
         if(isStepReady)
         {
             isStepReady = false;
             System.Diagnostics.Debug.WriteLine("检测胜利条件");
             var winret = IsAtonceWin();
             if(winret != 0)
             {
                 statue = GameRiverStatue.Resulting;
                 player1.OverPlay();
                 player2.OverPlay();
             }
             switch(winret)
             {
                 case 1:
                     player1Statue.Text = "失败";
                     player1Statue.ForeColor = Color.Red;
                     player2Statue.Text = "获胜";
                     player2Statue.ForeColor = Color.Green;
                     MessageBox.Show("白方获胜!");
                     break;
                 case -1:
                     player1Statue.Text = "获胜";
                     player1Statue.ForeColor = Color.Green;
                     player2Statue.Text = "失败";
                     player2Statue.ForeColor = Color.Red;
                     MessageBox.Show("黑方获胜!");
                     break;
             }
         }
         if(statue != lastStatue)
         {
             lastStatue = statue;
             switch(statue)
             {
                 case GameRiverStatue.OurRound:
                     player1Statue.Text = "状态:等待中";
                     player1Statue.ForeColor = Color.Orange;
                     player2Statue.Text = "状态:正在行动";
                     player2Statue.ForeColor = Color.Blue;
                     break;
                 case GameRiverStatue.EnemyRound:
                     player1Statue.Text = "状态:正在行动";
                     player1Statue.ForeColor = Color.Blue;
                     player2Statue.Text = "状态:等待中";
                     player2Statue.ForeColor = Color.Orange;
                     break;
             }
         }
     }
 }
 private void InitPlayers()
 {
     switch(cfg["player1"]["type"].InnerText)
     {
         case "local":
             player1 = new GameRiver_Local(this, cfg["player1"]["name"].InnerText, true);
             break;
         case "auto":
             player1 = new GameRiver_Auto(this, Convert.ToInt32(cfg["player1"]["AIdt"].InnerText), true);
             break;
         case "network":
             player1 = new GameRiver_Local(this, cfg["player1"]["name"].InnerText, true);
             break;
     }
     player1Name.Text = player1.Name;
     switch(cfg["player2"]["type"].InnerText)
     {
         case "local":
             player2 = new GameRiver_Local(this, cfg["player2"]["name"].InnerText, false);
             break;
         case "auto":
             player2 = new GameRiver_Auto(this, Convert.ToInt32(cfg["player2"]["AIdt"].InnerText), false);
             break;
         case "network":
             player2 = new GameRiver_Local(this, cfg["player2"]["name"].InnerText, false);
             break;
     }
     player2Name.Text = player2.Name;
     player1.OnEndStep += () =>
     {
         statue = GameRiverStatue.OurRound;
         isStepReady = true;
         CheckToCut();
         player2.StepOn();
         ShowMessage("黑棋走毕,轮到白棋回合");
     };
     player2.OnEndStep += () =>
     {
         statue = GameRiverStatue.EnemyRound;
         isStepReady = true;
         CheckToCut();
         player1.StepOn();
         ShowMessage("白棋走毕,轮到黑棋回合");
     };
 }
 private void gameMenuItem_ChildClick(object sender, EventArgs e)
 {
     var sdr = (ToolStripMenuItem)sender;
     switch(sdr.Name)
     {
         case "startNewItem":
             if(statue != GameRiverStatue.Resulting && statue != GameRiverStatue.Waiting)
                 return;
             bool isBlackFirst = Convert.ToInt32(cfg["isWhiteFirst"].InnerText) == 0;
             InitChesses();
             lastChesses[0] = 3;
             lastChesses[1] = 3;
             lastChesses[2] = 3;
             lastChesses[3] = 3;
             lastChesses[4] = 3;
             lastChesses[5] = 3;
             lastChesses[6] = 3;
             lastChesses[7] = 3;
             ShowMessage("初始化完毕!");
             InitPlayers();
             player1.StartPlay();
             player2.StartPlay();
             if(isBlackFirst)
             {
                 statue = GameRiverStatue.EnemyRound;
                 player1.StepOn();
                 ShowMessage("游戏开始!轮到黑棋回合");
             }
             else
             {
                 statue = GameRiverStatue.OurRound;
                 player2.StepOn();
                 ShowMessage("游戏开始!轮到白棋回合");
             }
             break;
         case "configItem":
             if(GameConfig.ShowDialog(this) == DialogResult.OK)
             {
                 cfg = GameConfig.GetCfgXml()["GameRiver"];
                 MessageBox.Show("配置保存成功!");
             }
             break;
         case "exitItem":
             Close();
             break;
     }
 }