C# 프로그래밍 기초 - 배열을 활용하여 중복되지 않는 랜덤 숫자 3개를 맞추는 콘솔 게임 만들기
Random random = new Random();
int guessNumLength = 3;
int[] numbers = new int[guessNumLength];
for (int i = 0; i < guessNumLength; i++)
{
numbers[i] = random.Next(1, 10);
}
for (int i = 1; i < guessNumLength; i++)
{
if (numbers[i] == numbers[i - 1])
{
numbers[i] = random.Next();
i--;
}
}
int attempt = 0;
while (true)
{
Console.Write("Enter three numbers (1~9): ");
string input = Console.ReadLine();
char[] inputChars = input.ToCharArray();
int[] guesses = new int[guessNumLength];
for (int i = 0; i < guessNumLength; i++)
{
guesses[i] = int.Parse(input[i].ToString());
}
int correct = 0;
for (int i = 0; i < guessNumLength; i++)
{
for (int j = 0; j < guessNumLength; j++)
{
if (numbers[i] == guesses[j])
{
correct++;
break;
}
}
}
attempt++;
Console.WriteLine($"Try {attempt}: You got {correct} numbers right. Try again!");
Console.WriteLine();
if (correct == 3)
{
Console.WriteLine($"Attempts: {attempt},
Answer numbers: {numbers[0]}, {numbers[1]}, {numbers[2]}");
Console.WriteLine("Congratulations! You got all numbers right.");
break;
}
}
다차원 배열을 활용한 콘솔 틱택토(TicTacToe) 게임 만들기

int[,] map = new int[3, 3]
{
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 }
};
Random rand = new Random();
int[] mapNumArr = {1, 2, 3, 4, 5, 6, 7, 8, 9 };
bool isPlay = true;
int turn;
int player = 1;
int computer = 2;
int attempt = 0;
int mapNum = 0;
Console.WriteLine("Let's play Tic-Tac-Toe game(VS Computer)");
Console.WriteLine("Map");
Console.WriteLine("1 2 3\n4 5 6\n7 8 9");
while (isPlay)
{
Console.WriteLine();
if (attempt % 2 == 0)
{
turn = player;
Console.Write("Choose the number on map 1 ~ 9: ");
mapNum = int.Parse(Console.ReadLine());
mapNumArr = mapNumArr.Where(n => n != mapNum).ToArray();
}
else
{
turn = computer;
Console.WriteLine("Turn of computer");
int idx = rand.Next(mapNumArr.Length);
mapNum = mapNumArr[idx];
mapNumArr = mapNumArr.Where(n => n != mapNum).ToArray();
}
attempt++;
switch (mapNum)
{
case 1:
map[0, 0] = turn; break;
case 2:
map[0, 1] = turn; break;
case 3:
map[0, 2] = turn; break;
case 4:
map[1, 0] = turn; break;
case 5:
map[1, 1] = turn; break;
case 6:
map[1, 2] = turn; break;
case 7:
map[2, 0] = turn; break;
case 8:
map[2, 1] = turn; break;
case 9:
map[2, 2] = turn; break;
}
Console.WriteLine("Player: ▲ , Computer: ●");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (map[i, j] == 1)
{
Console.Write("▲ ");
}
else if (map[i, j] == 2)
{
Console.Write("● ");
}
else
{
Console.Write("□ ");
}
}
Console.WriteLine();
}
if (attempt > 3 && attempt <= 9)
{
if (map[1, 1] != 0)
{
if ((map[1, 1] == map[0, 0] && map[1, 1] == map[2, 2])
|| (map[1, 1] == map[0, 2] && map[1, 1] == map[2, 0]))
{
if (map[1, 1] == 1)
{
Console.WriteLine("Player Win!");
isPlay = false;
break;
}
else
{
Console.WriteLine("Computer Win...");
isPlay = false;
break;
}
}
}
for (int i = 0; i < 3; i++)
{
int zeroCountInRow = 0;
int zeroCountInColumn = 0;
for (int j = 0; j < 3; j++)
{
if (map[i, j] == 0) zeroCountInRow++;
if (map[j, i] == 0) zeroCountInColumn++;
}
if (zeroCountInRow != 0 && zeroCountInColumn != 0)
{
continue;
}
if (zeroCountInRow == 0)
{
if (map[i, 0] == map[i, 1] && map[i, 0] == map[i, 2])
{
if (map[i, 0] == 1)
{
Console.WriteLine("Player Win!");
isPlay = false;
break;
}
else if (map[i, 0] == 2)
{
Console.WriteLine("Computer Win...");
isPlay = false;
break;
}
}
}
if (zeroCountInColumn == 0)
{
if (map[0, i] == map[1, i] && map[0, i] == map[2, i])
{
if (map[0, i] == 1)
{
Console.WriteLine("Player Win!");
isPlay = false;
break;
}
else if (map[0, i] == 2)
{
Console.WriteLine("Computer Win...");
isPlay = false;
break;
}
}
}
}
}
else if (attempt > 9)
{
Console.WriteLine("Draw");
break;
}
}