Esempio n. 1
0
 public void Undo()                                //chức năng undo
 {
     if (_StackMoves.Count > 1)                    //chỉ undo khi có hơn 1 nước đi
     {
         if (WinCheck(false))                      //nếu đã thắng thì xóa nước đi ra khỏi stack và vẽ lại toàn bàn cờ
         {
             CaroNode a = _StackMoves.Pop();       //lấy nước đi cuối cùng ra
             _Nodes[a.Line, a.Column].NStatus = 0; //set trạng thái thành chưa đánh
             if (_Result == -1)                    //nếu là máy thắng thì lấy thêm 1 nước nữa
             {
                 a = _StackMoves.Pop();
                 _Nodes[a.Line, a.Column].NStatus = 0;
             }
             _g.Clear(_sbBG.Color); //xóa bàn cờ
             DrawCaroBoard();       //vẽ lại bàn cờ
             reDrawMoves();         //vẽ lại các nước đã đi
         }
         else                       //nếu không thì chỉ xóa ô cờ bị undo đi
         {
             CaroNode a = _StackMoves.Pop();
             _Nodes[a.Line, a.Column].NStatus = 0;
             a.Del();                                //lấy 2 nước cuối cùng ra và set trạng thái về chưa đánh
             a = _StackMoves.Pop();
             _Nodes[a.Line, a.Column].NStatus = 0;
             a.Del();          //xóa các nước đó đi
         }
     }
 }