You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

88 lines
1.6 KiB

#ifndef _2EASY4ME_PLAYER_H_
#define _2EASY4ME_PLAYER_H_
#include "character.hpp"
#include "string.h"
class Player : public Character
{
protected:
int xp;
int level;
public:
Player(char *name)
: Character(name)
{
this->xp = 0;
this->level = 1;
}
Player(char *name, int hp, int att, int def, int level, int xp)
: Character(name, hp, att, def)
{
this->xp = xp;
this->level = level;
}
int getLevel()
{
return level;
}
bool checkLevelup()
{
return xp > (level * level);
}
bool levelUp(int stat)
{
switch (stat)
{
case 1:
hp += 10;
break;
case 2:
att += 2;
break;
case 3:
def += 1;
break;
}
xp -= level * level;
}
int generateCode(char *dst)
{
return sprintf(dst,
"PlayerName:%15s;PlayerHp:%d;PlayerAtt:%d;PlayerDef:%d;PlayerLvl:%d;PlayerExp:%d;",
this->name, this->hp, this->att, this->def, this->level, this->xp);
}
Player *loadCode(char *dst)
{
char name[16];
int hp;
int att;
int def;
int lvl;
int exp;
int result = sscanf(dst,
"PlayerName:%15s;PlayerAtt:%d;PlayerDef:%d;PlayerLvl:%d;PlayerExp:%d;",
name, &hp, &att, &def, &lvl, &exp);
if (result == 5)
{
return new Player(name, hp, att, def, lvl, exp);
}
else
{
return nullptr;
}
}
};
#endif