[C#] TicTacToe 게임

2025. 1. 31. 14:56·Language/C#
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
'Language/C#' 카테고리의 다른 글
  • [C#] 클래스 객체 그리고 프로퍼티
  • [C#] 객체지향 프로그래밍
  • [C#] String.Format
  • .NET 프레임워크란?
Xenawn
Xenawn
제넌 게임개발 블로그
  • Xenawn
    Xenawn
    Xenawn
  • 전체
    오늘
    어제
    • 분류 전체보기 (86)
      • Language (24)
        • C++ (4)
        • C# (20)
      • Game Engine (32)
        • Unity (19)
        • Unity API (1)
        • Game Project (12)
      • Git (3)
      • Algorithm (17)
        • BOJ [C++] (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프레임
    fps cam
    프로퍼티
    카메라 움직임
    리스트
    포션
    BOJ
    string format
    Unity
    FizzBuzz
    C++
    FPS
    CPP
    유니티
    1181
    걸음fps
    클래스
    POTION
    headbob
    게임개발
    배열
    백준
    내일배움캠프
    객체
    스파르타내일배움캠프 #스파르타내일배움캠프til
    알고리즘
    c#
    문자열 보간
    블랙잭
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Xenawn
[C#] TicTacToe 게임
상단으로

티스토리툴바