static void Main(string[] args) { Console.WriteLine("Memento Pattern"); Gamer gamer = new Gamer(100); Memento memento = gamer.CreateMemento();//保存最初状态 for (int i = 0; i < 100; i++) { WriteLine($"==== {i+1}"); WriteLine($"当前状态:{gamer}"); gamer.Bet(); WriteLine($"所持金钱为:{gamer.GetMoney()}"); //决定如何处理 if (gamer.GetMoney() > memento.GetMoney()) { WriteLine($"(所持金钱增加了许多,因此保存游戏当前的状态)"); memento = gamer.CreateMemento(); } else if (gamer.GetMoney() < memento.GetMoney() / 2) { WriteLine($"(所持金钱减少了许多,因此将游戏恢复至以前的状态)"); gamer.RestoreMemento(memento); } Thread.Sleep(100); WriteLine(); } ReadKey(); }
public static void Main(string[] args) { var gamer = new Gamer(100); // 最初の所持金は100 var memento = gamer.CreateMemento(); // 最初の状態を保存しておく 100.Times(i => { Console.WriteLine("==== {0}", i); // 回数表示 Console.WriteLine("現状:{0}", gamer); // 現在の主人公の状態表示 gamer.Bet(); // ゲームを進める Console.WriteLine("所持金は {0}円になりました。", gamer.Money); // Mementoの取り扱いの決定 if (gamer.Money > memento.Money) { Console.WriteLine(" (だいぶ増えたので、現在の状態を保存しておこう)"); memento = gamer.CreateMemento(); } else if (gamer.Money < memento.Money / 2) { Console.WriteLine(" (だいぶ減ったので、以前の状態に復帰しよう)"); gamer.RestoreMemento(memento); } // 時間待ち Thread.Sleep(1000); Console.WriteLine(""); }); }
public static void Main(string[] args) { Gamer gamer = new Gamer(100); Memento memento = gamer.CreateMemento(); for (int i = 0; i < 100; i++) { System.Console.WriteLine("==== " + i); System.Console.WriteLine("Current Status:" + gamer); gamer.Bet(); System.Console.WriteLine("Money has reached " + gamer.GetMoney()); if (gamer.GetMoney() > memento.GetMoney()) { System.Console.WriteLine("Money increased a lot, so save it"); memento = gamer.CreateMemento(); } else if (gamer.GetMoney() < memento.GetMoney() / 2) { System.Console.WriteLine("Money reduced a lot, so load it"); gamer.RestoreMemento(memento); } Thread.Sleep(1000); } }
static void Main(string[] args) { Gamer gamer = new Gamer(100); Memento memento; if (File.Exists("memento.dat")) { memento = Memento.Deserialize(); } else { memento = gamer.CreateMemento(); } for (int i = 0; i < 100; i++) { Console.WriteLine($"==== {i}"); Console.WriteLine($"現状:{gamer}"); gamer.Bet(); Console.WriteLine($"所持金は{gamer.Money}円になりました。"); if (gamer.Money > memento.Money) { Console.WriteLine(" (だいぶ増えたので、現在の状態を保存しておこう)"); memento = gamer.CreateMemento(); } else if (gamer.Money < memento.Money / 2) { Console.WriteLine(" (だいぶ減ったので、以前の状態に復帰しよう)"); gamer.RestoreMemento(memento); } try { Thread.Sleep(10); } catch (System.Exception) { throw; } Console.WriteLine(""); } memento.Serialize(); }