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; } }