public void ItRestoresDataCorrectly() { var game = Game.Instance; game.Score = new RealScore { Number = 100, Date = DateTime.Today }; GameCaretaker caretaker = new GameCaretaker(); Assert.NotNull(game.Score); Assert.Equal(game.Score.Number, 100); caretaker.Memento = game.CreateMemento(); game.Score.Number = 200; Assert.Equal(game.Score.Number, 200); game.SetMemento(caretaker.Memento); Assert.Equal(game.Score.Number, 100); }
public void DoWork() { // 創造一個遊戲角色 GamePlayer player = new GamePlayer("jojo", 100, 80, 0); player.ShowState(); // 存檔 GameCaretaker caretaker = new GameCaretaker(); caretaker.setMemento("s1", player.saveToMemento()); // 打小怪1 player.play(-10, -10, 10); player.ShowState(); caretaker.setMemento("s2", player.saveToMemento()); //故意重複檔名 caretaker.setMemento("s2", player.saveToMemento()); // 打小怪2 player.play(-10, -10, 10); player.ShowState(); caretaker.setMemento("s3", player.saveToMemento()); // 打小怪3 player.play(-10, -10, 10); player.ShowState(); caretaker.setMemento("s4", player.saveToMemento()); caretaker.removeMemento("s1"); caretaker.setMemento("s4", player.saveToMemento()); // 打boss player.play(-70, -30, -30); player.ShowState(); // 重新讀取存檔 player.restoreFromMemento(caretaker.getMemento("s1")); player.restoreFromMemento(caretaker.getMemento("s3")); player.ShowState(); player.restoreFromMemento(caretaker.getMemento("s4")); player.ShowState(); caretaker.ShowMementos(); }
/// <summary> /// 测试游戏备忘录模式 /// </summary> static void TestGameMementoState() { // 大战boss前 GameOriginator role = new GameOriginator(); role.GetInitState(); role.StateDisplay(); // 保存进度 GameCaretaker stateAdmin = new GameCaretaker(); stateAdmin.Memento = role.SaveState(); // 损耗严重 role.Fight(); role.StateDisplay(); //恢复备份 role.RecoveryState(stateAdmin.Memento); role.StateDisplay(); }