스파르타 내일배움캠프/Quest

(사전 캠프) Stage 3 - 8. 숫자 야구 게임

불면증 도사 2024. 8. 27. 16:41

숫자 야구 게임을 작성하세요.

  • 컴퓨터가 임의의 3자리 숫자를 선택하면, 사용자가 그 숫자를 맞추는 게임.
  • 각 자리의 숫자를 비교하여 다음 공식으로 스트라이크와 볼의 개수를 출력합니다.
    • 숫자가 포함되어 있으나 자리가 틀렸을 경우: 볼
    • 숫자가 자리까지 포함하여 일치하는 경우: 스트라이크

 

코드

// See https://aka.ms/new-console-template for more information

int[] targetNumber = new int[3];
int[] userGuess = new int[3];
int enterNumber;
int strikes, balls;
bool guessedCorrectly;
Random rand = new Random();

List<int> temp = new List<int>() {1, 2, 3, 4, 5, 6, 7, 8, 9};

int temp_int;
for (int i = 0; i < 3; i++)
{
    temp_int = rand.Next(0, temp.Count);
    targetNumber[i] = temp[temp_int];
    temp.RemoveAt(temp_int);
}

while (true)
{
    Console.Write("Enter your guess (3 digits): ");
    enterNumber = Convert.ToInt32(Console.ReadLine());

    if(enterNumber >= 1000 || enterNumber < 100)
    {
        Console.WriteLine("Invalid input. try again\n");
        continue;
    }

    userGuess[0] = enterNumber / 100;
    userGuess[1] = (enterNumber / 10) % 10;
    userGuess[2] = enterNumber % 10;

    if (userGuess[0] == userGuess[1] || userGuess[0] == userGuess[2] || userGuess[1] == userGuess[2])
    {
        Console.WriteLine("Invalid input. try again\n");
        continue;
    }

    strikes = 0;
    balls = 0;

    guessedCorrectly = true;

    for (int i = 0; i < 3; i++)
    {
        if (targetNumber[i] == userGuess[i])
            strikes++;

        else
            guessedCorrectly = false;
    }

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            if (targetNumber[i] == userGuess[j] && i != j)
            {
                balls++;
                break;
            }
        }
    }

    Console.WriteLine($"{strikes} Strike(s), {balls} Ball(s)\n");

    if (guessedCorrectly)
    {
        Console.WriteLine("\nYou Completed the numbers!\n");
        break;
    }
}

 

결과