using Systehttp://m.ComponentModel.Design;
namespace Study1
{
internal class Program
{
static int[,] field = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } };
static int input = 0;
static int turn = 1;
static bool doWhile = true;
static void ShowField() // 틱택토 필드를 보여주는 매서드
{
Console.WriteLine("================");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
input = field[i, j];
if (input == 0)
{
Console.Write("□");
}
else if (input == 1)
{
Console.Write("0");
}
else
{
Console.Write("Ⅹ");
}
}
Console.WriteLine();
}
Console.WriteLine("================");
}
static void SetField(int fieldSet) // 틱택토 필드에 플레이어를 세팅하는 매서드
{
if (fieldSet > 0 && fieldSet < 10)
{
for (int i = 1; i < 10; i++)
{
if (fieldSet == i)
{
if (field[(i - 1) / 3, (i - 1) % 3] != 0)
{
//이미 둔 곳은 둘 수 없도록 예외 처리
Console.WriteLine("이미 둔 곳입니다.");
}
else
{
if (turn == 2)
field[(i - 1) / 3, (i - 1) % 3] = 2;
else if (turn == 1)
field[(i - 1) / 3, (i - 1) % 3] = 1;
if (turn == 2)
turn--;
else if (turn == 1)
turn++;
}
}
}
}
else
Console.WriteLine("1부터 9까지의 숫자를 입력해주세요");
}
static void Main(string[] args)
{
do
{
//가로 승리 조건
if (field[0, 0] == 1 && field[0, 0] == field[0, 1]
&& field[0, 1] == field[0, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[1, 0] == 1 && field[1, 0] == field[1, 1]
&& field[1, 1] == field[1, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[2, 0] == 1 && field[2, 0] == field[2, 1]
&& field[2, 1] == field[2, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[0, 0] == 2 && field[0, 0] == field[0, 1]
&& field[0, 1] == field[0, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
else if (field[1, 0] == 2 && field[1, 0] == field[1, 1]
&& field[1, 1] == field[1, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
else if (field[2, 0] == 2 && field[2, 0] == field[2, 1]
&& field[2, 1] == field[2, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
//세로 승리 조건
if (field[0, 0] == 1 && field[0, 0] == field[1, 0]
&& field[1, 0] == field[2, 0])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[0, 1] == 1 && field[0, 1] == field[1, 1]
&& field[1, 1] == field[2, 1])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[0, 2] == 1 && field[0, 2] == field[1, 2]
&& field[1, 2] == field[2, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[0, 0] == 2 && field[0, 0] == field[1, 0]
&& field[1, 0] == field[2, 0])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
else if (field[0, 1] == 2 && field[0, 1] == field[1, 1]
&& field[1, 1] == field[2, 1])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
else if (field[0, 2] == 2 && field[0, 2] == field[1, 2]
&& field[1, 2] == field[2, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
//대각선 승리 조건
if (field[0, 0] == 1 && field[0, 0] == field[1, 1]
&& field[1, 1] == field[2, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[0, 2] == 1 && field[0, 2] == field[1, 1]
&& field[1, 1] == field[2, 0])
{
Console.Clear();
ShowField();
Console.WriteLine("Player1의 승리!");
break;
}
else if (field[0, 0] == 2 && field[0, 0] == field[1, 1]
&& field[1, 1] == field[2, 2])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
else if (field[0, 2] == 2 && field[0, 2] == field[1, 1]
&& field[1, 1] == field[2, 0])
{
Console.Clear();
ShowField();
Console.WriteLine("Player2의 승리!");
break;
}
// 각 플레이어 턴에 따라 게임 진행
Console.Clear();
ShowField();
Console.WriteLine("Player" + turn + "의 차례!");
Console.Write("몇번 자리를 차지하시겠습니까? : ");
string inputField = Console.ReadLine();
int fieldSet = int.Parse(inputField);
// 필드 세팅
if (turn == 1)
{
SetField(fieldSet);
}
else if (turn == 2)
{
SetField(fieldSet);
}
// 무승부 체킹
int gameOverCheck = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (field[i, j] != 0)
{
gameOverCheck++;
}
}
if (gameOverCheck == 9)
{
Console.Clear();
ShowField();
Console.WriteLine("무승부 입니다.");
doWhile = false;
}
}
}
while (doWhile);
}
}
}
'일일학습일지' 카테고리의 다른 글
2024-01-02 학습일지 (1) | 2024.01.02 |
---|---|
2023-12-29 학습일지 (0) | 2023.12.29 |
2023-12-28 학습일지 (0) | 2023.12.28 |
2023-12-27 학습일지 (1) | 2023.12.27 |
2023-12-26 학습일지 (1) | 2023.12.26 |