개발 달리기
C# 예제 - 숫자 맞추기 게임 본문
- 숫자 맞추기 게임을 작성하세요.
컴퓨터가 1부터 100 사이의 숫자를 선택하면 사용자가 그 숫자를 맞추는 게임을 구현.
사용자가 숫자를 입력하면 컴퓨터는 숫자가 더 크거나 작은지 힌트를 주고, 맞출 때까지 반복.
코드 작성 전 설계
1
2
3
4
5
6
7
8
9
10
11
|
// 1 ~ 100의 랜덤값 중 하나를 선정
// 값 입력
// 입력한 값과 선택된 값을 비교
// 크면 "Too high! Try again." 출력 후 다시 값 입력
// 작으면 "Too low! Try again." 출력 후 다시 값 입력
// 같으면 "Congratulations! You guessed the number." 출력 후 종료
|
cs |
코드 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Random rand = new Random(); // 랜덤 기능 선언
int com = rand.Next(1, 100); // 1 ~ 100 중 랜덤
string str = Console.ReadLine();
int player;
int.TryParse(str, out player); // 입력값을 player 변수에 자료로 저장
do
{
if (player > com)
{
Console.WriteLine($"Enter your guess (1-100): {str}");
Console.WriteLine("Too high! Try again.");
}
else if (player < com)
{
Console.WriteLine($"Enter your guess (1-100): {str}");
Console.WriteLine("Too low! Try again.");
}
str = Console.ReadLine();
int.TryParse(str, out player); // player값 재정의
}
while (player != com);
Console.WriteLine($"Enter your guess (1-100): {str}");
Console.WriteLine("Congratulations! You guessed the number.");
|
cs |
해당 코드를 작성하는데 다행히도 다른 참고 없이 혼자 힘으로 작성했다.
의도대로 작동도 잘 하지만 전체적으로 깔끔한 느낌은 들지 않았어서 코드 리뷰를 받았는데
수정이 필요한 부분이 좀 있었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
Random rand = new Random(); // 랜덤 기능 선언
int com = rand.Next(1, 101); // 1 ~ 100 중 랜덤
string str = Console.ReadLine();
int player;
bool isParsed = int.TryParse(str, out player); // 입력값을 player 변수에 자료로 저장
while (!isParsed)
{
Console.WriteLine("올바른 값을 입력하세요.");
str = Console.ReadLine();
isParsed = int.TryParse(str, out player); // player값 재정의
}
do
{
if (player > com)
{
Console.WriteLine($"Enter your guess (1-100): {player}");
Console.WriteLine("Too high! Try again.");
}
else if (player < com)
{
Console.WriteLine($"Enter your guess (1-100): {player}");
Console.WriteLine("Too low! Try again.");
}
str = Console.ReadLine();
isParsed = int.TryParse(str, out player); // player값 재정의
while (!isParsed)
{
Console.WriteLine("올바른 값을 입력하세요.");
str = Console.ReadLine();
isParsed = int.TryParse(str, out player); // player값 재정의
}
}
while (player != com);
Console.WriteLine($"Enter your guess (1-100): {player}");
Console.WriteLine("Congratulations! You guessed the number.");
|
cs |
수정된 코드는 다음과 같다.
일단 bool값을 선언하여 입력한 값이 자료형인지 아닌지 판변하는 코드를 추가했고
랜덤 범위를 잘못 지정해서 (1, 101)로 수정했다.
이런 직관적이지 못한 부분이 코드를 짤 때 어려운 부분인 듯 싶다.
while문을 추가해서 첫 입력 때 예외 처리를 추가했고
이후 do-while문 속에 while문을 하나 더 추가하여 예외 처리가 되도록 하였다.
'C#' 카테고리의 다른 글
C# 예제 - 배열 요소의 최대값과 최소값 찾기 (0) | 2025.04.08 |
---|---|
C# 예제 - 이중 반복문을 사용한 구구단 출력 (0) | 2025.04.08 |
C# 예제 - 팩토리얼 계산 (0) | 2025.04.08 |
C# 예제 - 배열을 사용한 합계 및 평균 계산 (0) | 2025.04.08 |
C# 예제 - 홀수 출력 (0) | 2025.04.08 |