//2-6 틱택토
static void DrawBoard() //보드판 그림
{
Console.WriteLine($" | | ");
Console.WriteLine($" {boardNum[0]} | {boardNum[1]} | {boardNum[2]} ");
Console.WriteLine($" | | ");
Console.WriteLine($"-----+-----+-----");
Console.WriteLine($" | | ");
Console.WriteLine($" {boardNum[3]} | {boardNum[4]} | {boardNum[5]} ");
Console.WriteLine($" | | ");
Console.WriteLine($"-----+-----+-----");
Console.WriteLine($" | | ");
Console.WriteLine($" {boardNum[6]} | {boardNum[7]} | {boardNum[8]} ");
Console.WriteLine($" | | ");
}
static bool CheckWin(char symbol) // 이기는 조건
{
return (boardNum[0] == symbol && boardNum[1] == symbol && boardNum[2] == symbol) ||
(boardNum[3] == symbol && boardNum[4] == symbol && boardNum[5] == symbol) ||
(boardNum[6] == symbol && boardNum[7] == symbol && boardNum[8] == symbol) ||
(boardNum[0] == symbol && boardNum[3] == symbol && boardNum[1] == symbol) ||
(boardNum[1] == symbol && boardNum[4] == symbol && boardNum[7] == symbol) ||
(boardNum[2] == symbol && boardNum[5] == symbol && boardNum[8] == symbol) ||
(boardNum[0] == symbol && boardNum[4] == symbol && boardNum[8] == symbol) ||
(boardNum[2] == symbol && boardNum[4] == symbol && boardNum[6] == symbol);
}
static bool isBoardFull() // 보드판이 차있는지 확인
{
foreach (char board in boardNum)
{
if (board != 'X' && board != 'O')
{
return false;
}
}
return true;
}
static char[] boardNum = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };//보드판 숫자
static int playerTurn = 1;//플레이어 1부터 시작
static void Main(string[] args)
{
bool gameWon; // 게임 이겼는지 확인
do
{
//메인 화면
Console.Clear();
Console.WriteLine("플레이어 1: X 와 플레이어 2: O");
Console.WriteLine();
Console.WriteLine($"플레이어 {playerTurn}의 차례");
Console.WriteLine();
DrawBoard();
int choice; //보드판 숫자를 입력받을 변수
bool bValid; //올바른 입력인지 확인할 변수
do
{
//입력 확인
Console.Write("입력: ");
bValid = int.TryParse(Console.ReadLine(), out choice);
if (bValid == false || choice < 0 || choice > 9 || boardNum[choice - 1] == 'X' || boardNum[choice - 1] == 'O')
{
Console.WriteLine("잘못된 입력입니다.");
bValid = false;
}
}
while (!bValid);
//보드판에 모양 입력
char symbole = playerTurn == 1 ? 'X' : 'O';
boardNum[choice - 1] = symbole;
//이겼는지 확인
gameWon = CheckWin(symbole);
if (gameWon)
{
Console.Clear();
Console.WriteLine("플레이어 1: X 와 플레이어 2: O");
Console.WriteLine();
DrawBoard();
Console.WriteLine();
Console.WriteLine($"플레이어 {playerTurn}이 이겼습니다!");
}
else if (isBoardFull()) //무승부
{
Console.Clear();
Console.WriteLine("플레이어 1: X 와 플레이어 2: O");
Console.WriteLine();
DrawBoard();
Console.WriteLine();
Console.WriteLine("무승부 !");
break;
}
playerTurn = playerTurn == 1 ? 2 : 1; //플레이어 교체
}
while (!gameWon);
Console.WriteLine("Press any key to exit...");
Console.ReadKey(); // 아무키나 누르면 종료
}
Console.Clear() : 화면 지우기
Console.ReadKey() : 사용자가 어떤 키를 누를 때 까지 기다림
Console.SetCursorPosition(left,top) : 커서의 위치를 지정한 좌표로 이동, 출력 위치를 제어할 때 사용
Console.Title = "제목"; : 콘솔 차으이 제목을 지정한 문자열로 설정
Console.ForegroundColor = ConsoleColor.ColorName ; : 콘솔에서 출력되는 텍스트의 색상을 변경
'ColorName에는 원하는 색상을 사용한다 ex) ConsoleColor.Red 등
'개발일지' 카테고리의 다른 글
[C# 개인과제] TextRPG (0) | 2023.08.23 |
---|---|
[C# 문법 종합반] 3주차 과제 - 스네이크 게임, 블랙잭 (0) | 2023.08.17 |
[미니프로젝트] 금쪽이를 찾아라! - 내 코드 복습, 팀 코드 이해 (0) | 2023.08.10 |
[미니프로젝트] 금쪽이를 찾아라! - 담당 기능 구현 (0) | 2023.08.08 |
[왕초보 유니티] 4주차 - 르탄이를 찾아라 기능 추가 구현 (0) | 2023.08.06 |