int num = 3;
AIcomputur ai = new AIcomputur();
ai.CreateTargetNumber(num);
bool guessedCorrectly = true;
int input = -1;
do
{
Console.Write($"Enter your guess ({num} digits): "); // Show Info
try { input = Int32.Parse(Console.ReadLine()); } catch { continue; } // Input장치
guessedCorrectly = !ai.CompareNumber(input.ToString()); // 게임 로직
} while (guessedCorrectly);
Console.Write("Congratulations!");
class AIcomputur
{
public void CreateTargetNumber(int size = 3)
{
int[] randomArry = new int[9];
int[] targetNumber = new int[size];
Random random = new Random();
for (int i = 0; i < 9; i++)
randomArry[i] = i+1;
for (int i = 0; i < 100000; i++)
{
int idx1 = random.Next(0, 9);
int idx2 = random.Next(0, 9);
if (idx1 == idx2) continue;
int temp = randomArry[idx2];
randomArry[idx2] = randomArry[idx1];
randomArry[idx1] = temp;
}
for(int i = 0; i < size; i++)
targetNumber[i] = randomArry[i];
_targetNumber = targetNumber;
}
public bool CompareNumber(string userInput)
{
if (userInput.Length != _targetNumber.Length)
{
Console.WriteLine("현재 입력한 값의 길이가 맞지 않습니다.");
Console.WriteLine("다시 입력해주세요...");
return false;
}
if(StrikesAndBalls(userInput))
Console.WriteLine($"{_strikes} Strike(s), {_balls} Ball(s)");
return _strikes == _targetNumber.Length;
}
private bool StrikesAndBalls(string userInput)
{
_strikes = 0;
_balls = 0;
int[] userGuess = new int[userInput.Length];
// 중복 체크
for (int i = 0; i < userInput.Length; i++)
{
if (userGuess.Contains(userInput[i] - '0') == true)
{
Console.WriteLine("중복된 숫자는 입력할 수 없습니다.\n");
return false;
}
userGuess[i] = userInput[i] - '0';
}
for (int i = 0; i < _targetNumber.Length; i++)
{
if (userGuess[i].Equals(_targetNumber[i])) // Strikes Check
_strikes++;
else
{
for(int j = 0; j < _targetNumber.Length; j++) // Balls Check
{
if (i == j) // Strike 제외
continue;
if (userGuess[i].Equals(_targetNumber[j]))
_balls++;
}
}
}
return true;
}
int[] _targetNumber = { };
int _strikes = 0;
int _balls = 0;
}
오늘 팀원분들과 각자 작성하신 코드를 가지고 소개하는 타임을 가졌습니다.
어떻게 분석하고 작성했는지 궁금했었는데 각자만의 코딩 스타일을 가지고 계셔서 재밌었습니다.
새로운 라이브러리와 게임 로직을 많이 참고해서 활용하면 좋겠다라는 생각도 많이 했습니다.
정말 재밌는 시간이였습니다. ㅎㅎ
'부트캠프 > Unity [ 스파르타 ]' 카테고리의 다른 글
[TIL] 유니티 스파르타 7기 2일차 - InfoScene제작 (3) | 2025.01.21 |
---|---|
[TIL] 유니티 스파르타 7기 1일차 - GitHub (2) | 2025.01.20 |
[팀원들과 함께] 행맨으로 페어 코딩 (4) | 2025.01.14 |
[Unity] 인벤토리 관하여 (4) | 2025.01.09 |
[Unity] 4주차 강의에서 유용한 로직과 함수들 (1) | 2025.01.08 |