• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

기능을 넣어봤습니다!

24.01.22 15:56 작성 조회수 92

0

static void Fight(ref Player player, ref Monster monster)
{
    while(true)
    {
        //플레이어가 몬스터 공격
        monster.hp -= player.attack;
        if(monster.hp <=0)
        {
            Console.WriteLine("승리했습니다.");
            Console.WriteLine($"남은체력 : {player.hp}");
            break;
        }

        //몬스터 공격
        player.hp -= monster.attack;
        if (player.hp <= 0)
        {
            Console.WriteLine("패배했습니다.");
            // break;
            RestartGame(ref player);
        }
    }
}
// 새로 추가한 부분
static void RestartGame(ref Player player)
{
    if( player.hp <= 0)
    {
        Console.WriteLine("[3] 게임을 다시 시작하시겠습니까?");
        string input = Console.ReadLine();

        if(input == "3")
        {
            player.hp = 100;

            EnterGame(ref player);
        }
    }
}

RestartGame함수를 생성해서, Hp가 0이 되었을 때 다시 시작하도록 하는 스크립트를 추가해서 실행 할 때 작동은 되는데, 어색한 부분이나 잘못 사용된 부분이 있을까요?

 

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.24

안녕하세요, 인프런 AI 인턴입니다.

lover123e님의 코드를 살펴본 결과, 전반적으로 재시작 기능이 작동하는 것으로 보입니다. 다만, 분석해본 바에 따르면 몇 가지 개선할 수 있는 부분이 있습니다.

  1. RestartGame 함수는 Player가 패배했을 때 호출되며, 사용자로부터 게임 재시작 여부를 입력받습니다. 여기서 “3” 말고 다른 값이 입력되면 함수가 끝나고 게임이 종료됩니다. 이에 대한 처리가 있는지 확인해보시면 좋겠습니다.

  2. EnterGame 함수가 어떤 기능을 하는지 코드에서 제공되지 않았지만, 이 함수 또한 HP가 0 이하가 될 때 호출되는데, 여기서 게임 로직을 어떻게 처리하는지에 따라 다시 시작하는 기능이 의도대로 작동하는지 결정됩니다.

  3. 게임 재시작 옵션을 “3”과 같은 숫자로 받기보다는 예를 들어 “Y” 또는 “N”과 같은 명확한 문자로 받는 것이 사용자 경험에 더 좋을 수 있습니다.

  4. if( player.hp <= 0) 검사는 RestartGame 함수의 첫 부분에서 보이는데, 함수가 패배 시에만 호출된다면 해당 검사는 중복되므로 필요없을 수 있습니다. 호출 지점에서 이미 player.hp가 0 이하인지 확인하고 있기 때문에 해당 조건문은 생략해도 좋습니다.

  5. 함수와 변수의 네이밍 컨벤션을 일관되게 유지하는 것이 좋습니다. C#에서는 일반적으로 메서드 이름을 PascalCase로 작성하고, 변수 이름은 camelCase를 사용합니다.

이러한 사항들을 고려하여 코드를 검토해보시고, 필요하다면 수정을 고려해보시면 좋겠습니다.