Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

개발 달리기

C# 예제 - 숫자 맞추기 게임 본문

C#

C# 예제 - 숫자 맞추기 게임

옹즤 2025. 4. 8. 12:33
  • 숫자 맞추기 게임을 작성하세요.

컴퓨터가 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(1100); // 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(1101); // 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문을 하나 더 추가하여 예외 처리가 되도록 하였다.