전역변수를 사용하지 않고 포인터를 사용하여 만들어본다.

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