被攻擊減血,攻擊可增加等級

/*
*  備忘錄模式
*/
#include <myhead.h>

 //保存值
class mySavevalue  
{
public:
 mySavevalue(string user_name = "",
             int life_value = 100, 
             int magic_point = 100, 
             int rank_values = 1,
             int experience_value = 1000)
             :_user_name(user_name),
             _life_value(life_value),
             _magic_point(magic_point),
             _rank_values(rank_values),
             _experience_value(experience_value)
 {
 }
 mySavevalue& operator=(const mySavevalue &savevalue) 
 {
    	_life_value = savevalue._life_value;
     	_magic_point = savevalue._magic_point;
     	_rank_values = savevalue._rank_values;
     	_experience_value = savevalue._experience_value;
     	return *this;
 }

public:
 	string _user_name;     //用戶名(或用戶id(md5值))
 	int _life_value;       //紅血
 	int _magic_point;      //藍學
 	int _rank_values;      //等級
 	int _experience_value; //經驗值
 	//其它值
};

//遊戲角色
class Role  
{
public:
 Role(string user_name,
      int life_value,
      int magic_point,
      int rank_values,
      int experience_value)
      :_user_name(user_name),
      _life_value(life_value),
      _magic_point(magic_point),
      _rank_values(rank_values),
      _experience_value(experience_value)
 {}
 mySavevalue Save() //保存當前值
 {
  mySavevalue savevalue(_user_name, 
            	     _life_value, 
            	     _magic_point,
            	     _rank_values,
            	     _experience_value);
  return savevalue;
 }
 void Loadvalue(mySavevalue &savevalue)  //載入之前的值
 {
  	_life_value = savevalue._life_value;
  	_magic_point = savevalue._magic_point;
  	_rank_values = savevalue._rank_values;
  	_experience_value = savevalue._experience_value;
 }
 void Show()
 { 
  cout << "用戶 : " 
       << _user_name.c_str()
       << ", 等級 : " 
       <<  _rank_values
       << ", 紅血 : "
       << _life_value
       << ", 藍血 : "
       << _magic_point
       << ", 當前經驗值 : "
       << _experience_value
       << endl; 
 }
 void attack() //升級
 {
  	_magic_point -= 10; 
  	_experience_value += 250;
  	if (_experience_value == 1000)
	{
   		_rank_values += 1;
   		_experience_value = 0;
  	}
 }
 void Being_attacked() //被攻擊
 {
  	_life_value -= 10; 
 }

private:
 	string _user_name;
 	int _life_value;
 	int _magic_point;
 	int _rank_values;
 	int _experience_value;
};

//保存的進度庫
class LookafterSavevalue  
{
public:
 LookafterSavevalue()
 {}
 void Save(string name, mySavevalue savevalue)
 {
  	_mapSavevalue.insert(map<string, mySavevalue>::value_type(name, savevalue));
 }
 mySavevalue Load(string name)
 {
  	return _mapSavevalue[name];
 }

private:
	 multimap<string, mySavevalue> _mapSavevalue;
};


//測試案例
int main()
{
 LookafterSavevalue lookaftersavevalue;
 Role role("role_wang", 100, 100, 0, 0); 
 role.Show();   //初始值
 
 lookaftersavevalue.Save("role_wang", role.Save()); //保存狀態
 
 role.attack();   
 role.Show();  //進攻後
 
 lookaftersavevalue.Save("role_wang", role.Save()); //保存狀態
 
 role.Loadvalue(lookaftersavevalue.Load("role_wang")); //載入狀態 
 role.Show();  //恢復到狀態0
 
 role.attack();   
 role.Show();  //進攻後
 role.attack();  
 role.Show();  //進攻後
 role.attack();   
 role.Show();  //進攻後
 role.attack();   
 role.Show();  //進攻後
    role.Being_attacked(); 
 role.Show(); //被進攻後

 lookaftersavevalue.Save("role_wang", role.Save()); //保存狀態

 role.Loadvalue(lookaftersavevalue.Load("role_wang")); //載入狀態 
 role.Show();  //恢復到狀態1
 getchar();
 return 0;
}

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章