设计需要回放的软件,记录一下事物的状态。数据库备份,文档的编译,撤销,恢复
设计备忘录三大步骤
1.设计记录的节点,存储记录,//记录鼠标,键盘的状态
2.设计记录的存储,vector,list,map,set,链表,图,数组,树
3.操作记录的类,记录节点状态,设置节点状态,显示状态
下面以保存游戏进度为例
//需要保存的信息 class Memo { public: int mAttack; int mDefence; int mHeal; Memo(int attack, int defense, int heal) :mAttack(attack), mDefence(defense), mHeal(heal){} void operator=(const Memo& memo) { mAttack = memo.mAttack; mDefence = memo.mDefence; mHeal = memo.mHeal; } }; //游戏角色 class GameRole { private: int mAttack; int mDefence; int mHeal; public: GameRole() :mAttack(100), mDefence(100), mHeal(100){} Memo save()//保存进度 { Memo memo(mAttack, mDefence, mHeal); return memo; } void load(const Memo& memo)//读取进度 { mAttack = memo.mAttack; mDefence = memo.mDefence; mHeal = memo.mHeal; } void show() { cout << "attack:" << mAttack << endl; cout << "defence:" << mDefence << endl; cout << "health;" << mHeal << endl; } void attack() { mAttack = 200; mDefence = 0; mHeal = 100; } }; //管理进度库 class Caretaker { private: vector<Memo> mVecMemo; public: void save(const Memo& memo) { mVecMemo.push_back(memo); } Memo& load(int i) { return mVecMemo[i]; } };
客户使用方法:
int _tmain(int argc, _TCHAR* argv[]) { Caretaker caretaker; GameRole player1; player1.show();//显示初始值 player1.attack(); caretaker.save(player1.save());//攻击后保存进度 player1.load(caretaker.load(0));//读取存档0 player1.show();//显示结果 system("pause"); return 0; }
浙公网安备 33010602011771号