// 下棋 public static void Play(Chessman chess) { // 保存备忘录 mementoCaretaker.SetMemento(chess.Save()); index++; Console.WriteLine("棋子 {0} 当前位置为 第 {1} 行 第 {2} 列", chess.Label, chess.X, chess.Y); }
// 撤销悔棋 public static void Redo(Chessman chess, int i) { Console.WriteLine("---------- Sorry,撤销悔棋 ---------"); index++; // 恢复到下一个备忘录 chess.Restore(mementoCaretaker.GetMemento(i + 1)); Console.WriteLine("棋子 {0} 当前位置为 第 {1} 行 第 {2} 列", chess.Label, chess.X, chess.Y); }
// 悔棋 public static void Undo(Chessman chess, int i) { Console.WriteLine("---------- Sorry,俺悔棋了 ---------"); index--; // 撤销到上一个备忘录 chess.Restore(mementoCaretaker.GetMemento(i - 1)); Console.WriteLine("棋子 {0} 当前位置为 第 {1} 行 第 {2} 列", chess.Label, chess.X, chess.Y); }
public static void Main() { Chessman chess = new Chessman("车", 1, 1); Play(chess); chess.Y = 4; Play(chess); chess.X = 5; Play(chess); Undo(chess, index); Undo(chess, index); Redo(chess, index); Redo(chess, index); Console.ReadKey(); }