Unity 사전캠프 7일차 - C# 기초 문법 예제4

한예준·2025년 3월 25일

숫자 맞추기 게임을 작성하세요.

  • 컴퓨터가 1부터 100 사이의 숫자를 선택하면 사용자가 그 숫자를 맞추는 게임을 구현하세요.
  • 사용자가 숫자를 입력하면 컴퓨터는 숫자가 더 크거나 작은지 힌트를 줍니다.
  • 맞출 때까지 반복합니다.
  • 예상출력
    Enter your guess (1-100): 50
    Too low! Try again.
    Enter your guess (1-100): 75
    Too high! Try again.
    Enter your guess (1-100): 60
    Congratulations! You guessed the number.

문제가 요구하는 바는 다음과 같다.

  1. 1부터 100까지의 수 중 랜덤한 값을 변수n으로 선언.
  2. 사용자가 입력한 값과 변수 n비교
  3. 사용자가 입력한 값이 변수 n과 같아질 때까지 반복

먼저, 변수 n을 랜덤한 값으로 설정하겠다.

Random random = new Random();
int n = random.Next(101);

사용자가 입력한 값을 a로 선언하고, an과 같아질 때까지 반복하겠다.

for (int a; a == n;)
{
    Console.WriteLine("Enter your Guess (1-100):");
    Convert.ToInt32(Console.ReadLine());

}

an보다 작을 때와 같을 때에 각기 서로 다른 출력을 하도록 조건문을 작성한다.

    if (a<n)
    {
        Console.WriteLine("Too Low!");
    }
    else if (a>n)
    {
        Console.WriteLine("Too High!");
    }

최종 코드는 다음과 같다.

Random random = new Random();
int n = random.Next(101);

for (int a; a != n;)
{
    Console.WriteLine("Enter your Guess (1-100):");
    Convert.ToInt32(Console.ReadLine());
    if (a<n)
    {
        Console.WriteLine("Too Low!");
    }
    else if (a>n)
    {
        Console.WriteLine("Too High!");
    }
}

하지만 이렇게 작성했더니 몇가지 문제가 생겼다.

  1. a의 초기값이 없어서 사용할 수 없다.
  2. Convert.ToInt32(Console.ReadLine());의 입력값이 사라진다.

따라서

  1. a의 초기값을 설정한다.
  2. a=Convert.ToInt32(Console.ReadLine());라고 저장한다.

이를 수정한 뒤 최종 완성된 코드는 다음과 같다.

Random random = new Random();
int n = random.Next(101);
int a = 0;
while (a != n)
{
    Console.WriteLine("Enter your Guess (1-100):");
    a = Convert.ToInt32(Console.ReadLine());
    if (a<n)
    {
        Console.WriteLine("Too Low!");
    }
    else if (a>n)
    {
        Console.WriteLine("Too High!");
    }
    else
    {
        Console.WriteLine("Correct");
    }
}

여기서 100 이상의 숫자를 입력하거나 숫자가 아닌 값을 입력하면 다시 입력하도록 코드를 추가해보겠다.

Random random = new Random();
int n = random.Next(101);
int a = 0;
while (a != n)
{
    Console.WriteLine("Enter your Guess (1-100):");
    string input = Console.ReadLine();


    bool isNum = int.TryParse(input, out a);
    if (!isNum)
    {
        Console.WriteLine("Please enter a number!");
        continue;
    }
    if (a < 1 || a > 100)
    {
        Console.WriteLine("Please enter a number between 1 and 100!");
        continue;
    }

    if (a<n)
    {
        Console.WriteLine("Too Low!");
    }
    else if (a>n)
    {
        Console.WriteLine("Too High!");
    }
    else
    {
        Console.WriteLine("Correct");
    }
}

이 코드에서 추가로 몇 번 시도했는지를 카운트하는 코드를 추가해보겠다. 이 코드를 추가하기 위해서는

  1. 시도횟수 변수 b를 선언한다.
  2. 각 시도마다 b에 1을 더한다.

최종 완성된 코드는 다음과 같다.

Random random = new Random();
int n = random.Next(101);
int a = 0;
int b = 0;
while (a != n)
{
    Console.WriteLine("Enter your Guess (1-100):");
    string input = Console.ReadLine();


    bool isNum = int.TryParse(input, out a);
    if (!isNum)
    {
        Console.WriteLine("Please enter a number!");
        continue;
    }
    if (a < 1 || a > 100)
    {
        Console.WriteLine("Please enter a number between 1 and 100!");
        continue;
    }

    b++;

    if (a<n)
    {
        Console.WriteLine("Too Low!");
    }
    else if (a>n)
    {
        Console.WriteLine("Too High!");
    }
    else
    {
        Console.WriteLine("Correct" + b + "번 시도하셨습니다.");
    }
}

어떻게 출력되는지 확인해보겠다.


문제에서 요구한 것 이외에도 여러 기능을 구현해보며 C#의 응용력을 늘릴 수 있었다.

0개의 댓글