전역변수를 사용하지 않고 포인터를 사용하여 만들어본다.
void EnterLobby();
void PrintMessage(const char* msg);
void CreatePlayer(StatInfo* playerinfo);
void PrintStatInfo(const char* name, const StatInfo& info);
void EnterGame(StatInfo* playerinfo);
void CreateMonsters(StatInfo monsterinfo[], int count);
bool EnterBattle(StatInfo* playerinfo, StatInfo* monsterinfo);
위에서 보이는 것 처럼 포인터와 참조를 섞어서 사용할 때 이후에 값을 건드릴 때 주의가 필요하다.
bool EnterBattle(StatInfo* playerinfo, StatInfo* monsterinfo)
{
while(true)
{
int damage = playerinfo->atk - monsterinfo->def;
if (damage < 0)
damage = 0;
monsterinfo->hp -= damage;
if (monsterinfo->hp < 0)
monsterinfo->hp = 0;
if (monsterinfo->hp == 0)
{
PrintMessage("몬스터를 처치했습니다");
return true;
}
damage = monsterinfo->atk - playerinfo->def;
if (damage < 0)
damage = 0;
playerinfo->hp -= damage;
if (playerinfo->hp < 0)
playerinfo->hp = 0;
PrintStatInfo("Player ", *playerinfo);
if (playerinfo->hp == 0)
{
PrintMessage("Game Over");
return false;
}
}
}
'기초 C++ 스터디 > 예제' 카테고리의 다른 글
4-14. 달팽이 문제 (0) | 2023.05.23 |
---|---|
4-13. 문자열 수정하기 (0) | 2023.05.23 |
4-8. 로또 번호 생성기 (0) | 2023.05.22 |
4-3. 포인터 실습 (0) | 2023.05.11 |
3-6. Text RPG 만들기 (0) | 2023.05.10 |