[C++] 플레이어 클래스를 만들고, 게터와 세터 생성하기

2022. 6. 22. 21:42코딩 1막 <C++개념편>/코딩 1막 <C++응용편>

728x90

#include <iostream>
#include <string>

using namespace std;

class Player
{
private:
	string name;
	int hp = 2 * (atk + def) ;
	int halfHp = hp / 2;	
	int atk;
	int def = atk / 2;
	string job;
	bool isBerserk = false;
	bool die = false;

public:
	int GetHp()
	{
		return hp;
	}
	int GetAtk()
	{
		return atk;
	}
	int GetDef()
	{
		return def;
	}
	void SetHp(int value)
	{
		hp = value;
		if (hp <= 0)
		{
			Die();
		}
		else if (hp <= halfHp)
		{
			if (isBerserk == false)
			{
				isBerserk == true;
				cout << name << "가 체력이 반이 되어 광전사모드가 됩니다" << endl;
			}
		}
	}
	void SetAtk(int value)
	{
		if (hp == halfHp)
		{
			atk += value;
		}
	}
	void SetDef(int value)
	{
		if (hp == halfHp)
		{
			def += value;
		}
	}
	Player(string _name, int _hp, int _atk, int _def)
	{
		name = _name;
		hp = _hp;
		atk = _atk;
		def = _def;
	}
	void Hit(float damage)
	{
		hp -= damage;
		cout << "플레이어의 체력 : " << hp << endl;
		if (hp <= 0)
		{
			Die();
		}
	}
	void Die()
	{
		cout << name << "가 죽었습니다" << endl;
	}
};

void main()
{
	Player playerA("전사", 500, 100, 80);
	playerA.Hit(30);
	playerA.GetHp();
	playerA.GetAtk();
	playerA.GetDef();
	playerA.Hit(30);
	playerA.SetHp(50);
	playerA.SetAtk(10);
	playerA.SetDef(20);
	playerA.Hit(30);
	playerA.Hit(20);
}

출력 결과

 

728x90