背景描述
在玩单机游戏时,可以在关键点进行存档,并可以回退到某个你历史存档。
代码实现
人物类
public class GameRole
{
public int Vitality { get; set; }
public int Attack { get; set; }
public int Defense { get; set; }
public void StateDisplay()
{
Console.WriteLine($"当前角色状态");
Console.WriteLine($"体力:{Vitality}");
Console.WriteLine($"攻击:{Attack}");
Console.WriteLine($"防御:{Defense}");
}
public void GetInitState()
{
Vitality = 100;
Attack = 100;
Defense = 100;
}
public void Fight()
{
Vitality = 0;
Attack = 0;
Defense = 0;
}
public RoleStateMemento SaveState()
{
return new RoleStateMemento(Vitality, Attack, Defense);
}
public void RecoveryState(RoleStateMemento roleStateMemento)
{
Vitality = roleStateMemento.Vitality;
Attack = roleStateMemento.Attack;
Defense = roleStateMemento.Defense;
}
}
数据类
public class RoleStateMemento
{
private int mVitality;
private int mAttack;
private int mDefense;
public int Vitality { get { return mVitality; } }
public int Attack { get { return mAttack; } }
public int Defense { get { return mDefense; } }
public RoleStateMemento(int vitality, int attack, int defense)
{
mVitality = vitality;
mAttack = attack;
mDefense = defense;
}
}
存档类
public class RoleStateCaretaker
{
public RoleStateMemento RoleStateMemento { get; set; }
}
Main方法
internal class Program
{
static void Main(string[] args)
{
GameRole role = new GameRole();
role.GetInitState();
role.StateDisplay();
RoleStateCaretaker stateAdmin = new RoleStateCaretaker();
stateAdmin.RoleStateMemento = role.SaveState();
role.Fight();
role.StateDisplay();
role.RecoveryState(stateAdmin.RoleStateMemento);
role.StateDisplay();
}
}
代码实现
当前角色状态
体力:100
攻击:100
防御:100
当前角色状态
体力:0
攻击:0
防御:0
当前角色状态
体力:100
攻击:100
防御:100