스파르타 내일배움캠프/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;
}
}
결과