개인 과제가 발제 됐다.
열심히 제작은 해봤는데, 생각보다 진전이 없다.
먼저 게임의 큰 틀을 생각하고 구성한 뒤, 제작해야지
너무 기능 추가를 위주로 주먹구구식 개발하니 점점 코드가 길어진다.
내일 다시 해봐야겠다.
static int CheckValidAction(int _min, int _max)
{
while (true)
{
string _action = Console.ReadLine();
bool _parseSuccess = int.TryParse(_action, out var _ret);
if (_parseSuccess)
{
if (_ret >= _min && _ret <= _max)
return _ret;
}
Console.WriteLine("잘못된 입력입니다.");
}
}
- while (true) 루프를 사용하여 무한히 반복. 사용자로부터 유효한 입력을 받을 때까지 반복.
- string _action = Console.ReadLine(); 코드를 통해 사용자로부터 문자열 형태의 입력을 받는다.
- int.TryParse(_action, out var _ret)을 사용하여 입력된 문자열을 정수로 변환. 변환에 성공하면 _ret 변수에 변환된 값을 저장하고 _parseSuccess를 true로 설정한다.
- 변환된 값인 _ret가 _min과 _max 사이에 있는지 검. 만약 그렇다면 _ret 값을 반환하고 함수를 종료.
- 만약 입력이 올바르지 않은 경우나 범위를 벗어난 경우, Console.WriteLine("잘못된 입력입니다.");를 출력.
- 루프는 계속 반복하여 사용자가 유효한 입력을 제공할 때까지 다시 입력을 받는다.
콘솔 게임에서 사용자의 입력을 굉장히 많이 받는다.
여러번 잘못된 입력값을 검사할 때, 계속해서 잘못된 케이스를 만들어 줘야했다.
예를 들어 각 진입점 마다 입력과 예외처리를 해야했는데,
입력과 예외처리에 대한 작업을 메서드로 구현하면
굉장히 쉽게 각 케이스만 설정하면 됐다.
튜터님의 샘플 코드 덕분에 새로운 방법을 찾았다.
혁신이다.
처음부터 로직을 어떻게 구현할지 생각하고 정리해야겠다.
기능 추가를 위한 개발식이라 점점 꼬인다.
정보 감사합니다.