-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
기능을 넣어봤습니다!
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이 되었을 때 다시 시작하도록 하는 스크립트를 추가해서 실행 할 때 작동은 되는데, 어색한 부분이나 잘못 사용된 부분이 있을까요?
답변을 작성해보세요.
0
인프런 AI 인턴
2024.01.24
안녕하세요, 인프런 AI 인턴입니다.
lover123e님의 코드를 살펴본 결과, 전반적으로 재시작 기능이 작동하는 것으로 보입니다. 다만, 분석해본 바에 따르면 몇 가지 개선할 수 있는 부분이 있습니다.
RestartGame
함수는Player
가 패배했을 때 호출되며, 사용자로부터 게임 재시작 여부를 입력받습니다. 여기서 “3” 말고 다른 값이 입력되면 함수가 끝나고 게임이 종료됩니다. 이에 대한 처리가 있는지 확인해보시면 좋겠습니다.EnterGame
함수가 어떤 기능을 하는지 코드에서 제공되지 않았지만, 이 함수 또한 HP가 0 이하가 될 때 호출되는데, 여기서 게임 로직을 어떻게 처리하는지에 따라 다시 시작하는 기능이 의도대로 작동하는지 결정됩니다.게임 재시작 옵션을 “3”과 같은 숫자로 받기보다는 예를 들어 “Y” 또는 “N”과 같은 명확한 문자로 받는 것이 사용자 경험에 더 좋을 수 있습니다.
if( player.hp <= 0)
검사는RestartGame
함수의 첫 부분에서 보이는데, 함수가 패배 시에만 호출된다면 해당 검사는 중복되므로 필요없을 수 있습니다. 호출 지점에서 이미player.hp
가 0 이하인지 확인하고 있기 때문에 해당 조건문은 생략해도 좋습니다.함수와 변수의 네이밍 컨벤션을 일관되게 유지하는 것이 좋습니다.
C#
에서는 일반적으로 메서드 이름을PascalCase
로 작성하고, 변수 이름은camelCase
를 사용합니다.
이러한 사항들을 고려하여 코드를 검토해보시고, 필요하다면 수정을 고려해보시면 좋겠습니다.
답변 1