namespace TicTac
{
internal class Program
{
static void Main(string[] args)
{
char [,] arr = { { '0', '1', '2' } // 3 * 3 board 만들기
,{'3','4','5' }
,{'6','7','8' }
};
Console.WriteLine("O가 선공입니다.");
Console.WriteLine("X가 후공입니다.");
char a = 'O';
string input;
int count = 0; // 승부가 나지 않고 9판이 되면 무승부 처리
while (true)
{
Console.WriteLine("넣을 자리를 입력하세요.");
string[] num;
int num1;
int num2;
while (true)
{
input = Console.ReadLine();
num = input.Split(' ');
num1 = int.Parse(num[0])-1; // 위치1
num2 = int.Parse(num[1])-1; // 위치2
if (arr[num1, num2] != 'O' && arr[num1, num2] != 'X')
{
break;
}
Console.WriteLine("자리가 있습니다. 다시 입력하세요. ");
}
arr[num1, num2] = a;
count++;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write($"{arr[i, j]} ");
}
Console.WriteLine();
}
if ((arr[0, 0] == arr[0, 1] )&& (arr[0, 1] == arr[0, 2]) &&( arr[0, 2] == arr[0, 0]))
{
Console.WriteLine(" {0}팀이 승리",a); // 가로 1줄이 모두 같은 표시면 승리
break;
}
else if (arr[1, 0] == arr[1, 1] && arr[1, 1] == arr[1, 2] && arr[1, 2] == arr[1, 0])
{
Console.WriteLine(" {0}팀이 승리", a); // 가로 2줄이 모두 같은 표시면 승리
break;
}
else if (arr[2, 0] == arr[2, 1] && arr[2, 1] == arr[2, 2] && arr[2, 2] == arr[2, 0])
{
Console.WriteLine(" {0}팀이 승리", a); // 가로 3줄이 모두 같은 표시면 승리
break;
}
else if ((arr[0, 1] == arr[1, 1]) && (arr[1, 1] == arr[2, 1]) && (arr[2, 1] == arr[0, 1]))
{
Console.WriteLine(" {0}팀이 승리", a); // 2열이 모두 같을 때 승리
break;
}
else if (arr[0, 0] == arr[1, 0] && arr[1, 0] == arr[2, 0] && arr[2, 0] == arr[0, 0])
{
Console.WriteLine(" {0}팀이 승리", a); // 1열이 모두 같을 때 승리
break;
}
else if (arr[0, 2] == arr[1, 2] && arr[1, 2] == arr[2, 2] && arr[2, 2] == arr[0, 2])
{
Console.WriteLine(" {0}팀이 승리", a); // 3열이 모두 같을 때 승리
break;
}
else if (arr[0,0] == arr[1,1] && arr[1,1] == arr[2,2] && arr[2,2] == arr[0, 0])
{
Console.WriteLine(" {0}팀이 승리", a); // 왼쪽 대각선 승리
break;
}
else if (arr[0,2] == arr[1,1] && arr[1,1] == arr[2,0] && arr[2,0] == arr[0, 2])
{
Console.WriteLine(" {0}팀이 승리", a); // 오른쪽 대각선이 모두 같을 때 승리
break;
}
if(count == 9)
{
Console.WriteLine("무승부입니다."); // 승리가 나지 않고 턴이 9까지 채웠을 때 무승부
}
if (a == 'O') a = 'X'; // 턴 진행후 다음 플레이어에게 턴 넘겨주기
else if (a == 'X') a = 'O'; // 턴 진행후 다음 플레이어에게 턴 넘겨주기
}
}
}
}
조건문을 조금 더 간단하게 수정해보면 좋을 것 같다.
'Language > C#' 카테고리의 다른 글
[C#] 클래스 객체 그리고 프로퍼티 (0) | 2025.01.31 |
---|---|
[C#] 객체지향 프로그래밍 (0) | 2025.01.31 |
[C#] String.Format (0) | 2025.01.27 |
.NET 프레임워크란? (0) | 2025.01.24 |
out, ref (0) | 2024.12.30 |