private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { #region �ѽL���������sø�s controller.DrawBoard(e.Graphics); #endregion #region �Y�|����l�ƹL�Ѥl����, �|�i��Ѥl����l�ưʧ@ if(!controller.ChessInitialized){controller.InitializeChess(e.Graphics);} #endregion switch(Flag) { case 0: #region ���e�L�� controller.ReDrawChess(e.Graphics); #endregion break; case 1: controller.ReDrawChess(e.Graphics); #region Human Move if(controller.side!=controller.computerside) { PlayerMoveType = controller.DoHumanMove(e.Graphics); statusBar1.Panels[3].Text = PlayerMoveType.ToString(); switch(PlayerMoveType) { case PlayerMoveTypeEnum.Normal: //save 4 symmetrical forms if(!controller.BookDataHasRetire) { for(int x=0;x<4;x++){controller.History_For_BookCheck[x][controller.NumberOfTotalMoves] = move.GetSymmetryMove(controller.newmove, (MoveSymmetryTypeEnum)x);} controller.NumberOfTotalMoves++; } //�����ܼ�-���� controller.side = controller.xside; controller.xside = 1 - controller.xside; //��s�L�� bUpdate = controller.UpdateNewMove(e.Graphics); lblInformation.Text = controller.Infos; lblPieceColor02.Text = controller.ColorInfos; lblPieceType02.Text = controller.PieceInfos; //��s�L�����\��, ���sIJ�oTextChanged Event if(!bUpdate) { MetaEventInvoke.Text = ""; statusBar1.Panels[0].Text = "�ثe�� : �¤�(�q��)"; statusBar1.Panels[1].Text += controller.side.ToString(); statusBar1.Panels[2].Text += "R"; } else { MessageBox.Show("�����!"); Application.Exit(); } Flag = 2; pictureBox1.Invalidate(); break; case PlayerMoveTypeEnum.FirstSelectingChess: break; case PlayerMoveTypeEnum.SamePositionAndReSelectSame: break; case PlayerMoveTypeEnum.SameColorAndReSelectNew: break; case PlayerMoveTypeEnum.OtherIllegalMove: break; } } #endregion break; case 2: controller.ReDrawChess(e.Graphics); #region Computer Move if(controller.side==controller.computerside) { if(!controller.GetBook()) { //�}���w�藍��ѨB��, �~�ϥΫ�ҷj�M controller.ComputerThink(); //if(!bFirstCompmove) //{ //�����ܼ�-���� controller.side = controller.xside; controller.xside = 1 - controller.xside; //} //else //{ // bFirstCompmove = false; // } } else { //save 4 symmetrical forms for(int x=0;x<4;x++){controller.History_For_BookCheck[x][controller.NumberOfTotalMoves] = move.GetSymmetryMove(controller.newmove, (MoveSymmetryTypeEnum)x);} controller.NumberOfTotalMoves++; controller.side = controller.xside; controller.xside = 1 - controller.xside; bFirstCompmove = false; } lblInformation.Text = controller.Infos; lblPieceColor01.Text = controller.ColorInfos; lblPieceType01.Text = controller.PieceInfos; //��s�L�� bUpdate = controller.UpdateNewMove(e.Graphics); lblInformation.Text = controller.Infos; lblPieceColor02.Text = controller.ColorInfos; lblPieceType02.Text = controller.PieceInfos; //��s�L�����\��, ���sIJ�oTextChanged Event if(!bUpdate) { statusBar1.Panels[0].Text = "�ثe�� : ����(���a)"; statusBar1.Panels[1].Text += controller.side.ToString(); statusBar1.Panels[2].Text += "B"; } else { MessageBox.Show("�¤��!"); Application.Exit(); } } Flag = 0; pictureBox1.Invalidate(); #endregion break; } }
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { #region 棋盤的部份重新繪製 controller.DrawBoard(e.Graphics); #endregion #region 若尚未初始化過棋子的話, 會進行棋子的初始化動作 if (!controller.ChessInitialized) { controller.InitializeChess(e.Graphics); } #endregion switch (Flag) { case 0: #region 重畫盤面 controller.ReDrawChess(e.Graphics); #endregion break; case 1: controller.ReDrawChess(e.Graphics); #region Human Move if (controller.side != controller.computerside) { PlayerMoveType = controller.DoHumanMove(e.Graphics); statusBar1.Panels[3].Text = PlayerMoveType.ToString(); switch (PlayerMoveType) { case PlayerMoveTypeEnum.Normal: //save 4 symmetrical forms if (!controller.BookDataHasRetire) { for (int x = 0; x < 4; x++) { controller.History_For_BookCheck[x][controller.NumberOfTotalMoves] = move.GetSymmetryMove(controller.newmove, (MoveSymmetryTypeEnum)x); } controller.NumberOfTotalMoves++; } //內部變數-換手 controller.side = controller.xside; controller.xside = 1 - controller.xside; //更新盤面 bUpdate = controller.UpdateNewMove(e.Graphics); lblInformation.Text = controller.Infos; lblPieceColor02.Text = controller.ColorInfos; lblPieceType02.Text = controller.PieceInfos; //更新盤面成功後, 重新觸發TextChanged Event if (!bUpdate) { MetaEventInvoke.Text = ""; statusBar1.Panels[0].Text = "目前為 : 黑方(電腦)"; statusBar1.Panels[1].Text += controller.side.ToString(); statusBar1.Panels[2].Text += "R"; } else { MessageBox.Show("紅方勝!"); Application.Exit(); } Flag = 2; pictureBox1.Invalidate(); break; case PlayerMoveTypeEnum.FirstSelectingChess: break; case PlayerMoveTypeEnum.SamePositionAndReSelectSame: break; case PlayerMoveTypeEnum.SameColorAndReSelectNew: break; case PlayerMoveTypeEnum.OtherIllegalMove: break; } } #endregion break; case 2: controller.ReDrawChess(e.Graphics); #region Computer Move if (controller.side == controller.computerside) { if (!controller.GetBook()) { //開局庫對不到棋步時, 才使用思考搜尋 controller.ComputerThink(); //if(!bFirstCompmove) //{ //內部變數-換手 controller.side = controller.xside; controller.xside = 1 - controller.xside; //} //else //{ // bFirstCompmove = false; // } } else { //save 4 symmetrical forms for (int x = 0; x < 4; x++) { controller.History_For_BookCheck[x][controller.NumberOfTotalMoves] = move.GetSymmetryMove(controller.newmove, (MoveSymmetryTypeEnum)x); } controller.NumberOfTotalMoves++; controller.side = controller.xside; controller.xside = 1 - controller.xside; bFirstCompmove = false; } lblInformation.Text = controller.Infos; lblPieceColor01.Text = controller.ColorInfos; lblPieceType01.Text = controller.PieceInfos; //更新盤面 bUpdate = controller.UpdateNewMove(e.Graphics); lblInformation.Text = controller.Infos; lblPieceColor02.Text = controller.ColorInfos; lblPieceType02.Text = controller.PieceInfos; //更新盤面成功後, 重新觸發TextChanged Event if (!bUpdate) { statusBar1.Panels[0].Text = "目前為 : 紅方(玩家)"; statusBar1.Panels[1].Text += controller.side.ToString(); statusBar1.Panels[2].Text += "B"; } else { MessageBox.Show("黑方勝!"); Application.Exit(); } } Flag = 0; pictureBox1.Invalidate(); #endregion break; } }