C#실습 달리기반 8번. 숫자 야구 게임
- 숫자 야구 게임 - 컴퓨터가 고른 3자리의 숫자를 맞추는 게임
컴퓨터가 고른 3자리 숫자는 모두 다른 숫자로 이루어져 있다. 사용자는 3자리 숫자를 입력하고, 컴퓨터는 입력한 숫자와 비교하여 스트라이크와 볼의 개수를 알려준다.
스트라이크 : 숫자와 자리수가 모두 맞는 경우
볼 : 숫자는 맞지만 자리수가 다른 경우
using System;
{
Random rand = new Random();
int[] targetNumber = new int[3];
for (int i = 0; i < targetNumber.Length; i++)
{
targetNumber[i] = rand.Next(1, 10);
for (int j = 0; j < i; j++)
{
if (targetNumber[i] == targetNumber[j])
i--;
}
}
int[] userGuess = new int[3];
int attempts = 0;
while (true)
{
int strike = 0;
int ball = 0;
Console.Write("Enter your guess (3 digits): ");
string input = Console.ReadLine();
int guessNum;
bool isNum = int.TryParse(input, out guessNum);
if (isNum && guessNum >= 123 && guessNum <= 987)
{
attempts++;
userGuess = input.Select(n => n - '0').ToArray();
for (int i = 0; i < targetNumber.Length; i++)
{
if (targetNumber[i] == userGuess[i])
{
strike++;
}
}
for (int i = 0; i < targetNumber.Length; i++)
{
for (int j = 0; j < targetNumber.Length; j++)
{
if (i != j && targetNumber[i] == userGuess[j])
{
ball++;
}
}
}
Console.WriteLine($"{strike}S{ball}B");
if (strike == 3)
{
Console.WriteLine($"Success! Number: " + string.Join("", targetNumber)
+ $", Attempts: {attempts}");
break;
}
}
else
{
Console.WriteLine("Please enter 3 digits number");
}
}
}
