#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;
|
|
}
|
|
|
|
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
|