zoukankan      html  css  js  c++  java
  • 被攻击减血,攻击可添加等级

    /*
    *  备忘录模式
    */
    #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;     //username(或用户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;
    }
    
     
    


     

  • 相关阅读:
    Spring.NET教程(十八)——整合Remoting(应用篇)
    Spring.NET教程(十五)——事务传播行为(基础篇)
    Spring.NET教程(十三)——AOP的配置(基础篇)
    Spring.NET教程(十九)——整合Web Service(应用篇)
    Spring.NET教程(十七)——整合NHibernate和ASP.NET MVC(基础篇)
    VC++打开文件 CFileDialog::DoModal
    通过lua自带例子学习lua 05
    (转)Lua与C/C++交互——Lua调用C/C++
    通过lua自带例子学习lua 08 (3638)
    通过lua自带例子学习lua 07 (3135)
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6930546.html
Copyright © 2011-2022 走看看