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