정체불명의 모모

c++ 문제 : Tic-Tac-Toe게임(어서와c++은 처음이지?) 본문

프로그래밍(c++)

c++ 문제 : Tic-Tac-Toe게임(어서와c++은 처음이지?)

정체불명의 모모 2019. 12. 5. 01:30

Tic-Tca-Toe게임은 2명의 경기자가 오른쪽과 같은 보드를 이용하여서 번갈아가며 0와 X를 놓는 게임입니다.

1. 같은 글자가 가로, 세로 , 혹은 대각선 상에 놓이면 이기게 됩니다.

 보드를 나타내는 2차원 배열 board[3][3]를 정의한다.

 보드를  초기화 한다.

 for(k=0 ; k < 9 ; k++)

 { 

    사용자로 부터 좌표 x,y를 받는다.

    보드를 화면에 출력한다.

     if( 현재 경기자가 'x'이면 )

        board[x][y] ='x'

     else

        board[x][y] ='0'

 } 

#include "pch.h"
#include <iostream>
#include <string>
using namespace std;

int main()
{
	int x, y;
	char board[3][3] = { ' ' };

	cout << " ================= Tic - Tac - Toe 게임에 오신걸 환영 합니다. ====================== " << endl;


	for (int k = 0; k < 9; k++)
	{
		cout << " 선택 하시고 싶은 x 와 y 의 좌표를 입력 해주세요 : ";
		cin >> x, cin >> y;

		if(k%2 == 0)
		{
			board[x][y] = 'X';
		}
		else
			board[x][y] = 'O';

		   cout << "---|---|---" << endl;
		   cout << " " << board[0][0] << " |" << " " << board[0][1] << " |" << " " << board[0][2] << endl;
		   cout << "---|---|---" << endl;
		   cout << " " << board[1][0] << " |" << " " << board[1][1] << " |" << " " << board[1][2] << endl;
		   cout << "---|---|---" << endl;
		   cout << " " << board[2][0] << " |" << " " << board[2][1] << " |" << " " << board[2][2] << endl;

		
	}
	return 0;
}

내가 작성한 코드 이다. ㅎㅎ 체크 기능 까지 넣으려 했는데.. 배웠는데 잘 기억이 안난다.. 알고리즘이 많이 약하다..

나와있는 코드와 좀 다르지만 잘만 나오면 되는게 아닌가 싶당ㅎㅎ 방법은 여러가지 이니깐


체크 기능을 위해 전에 배웠던 빙고 게임 코드를 살펴 볼것 이다.(c#)

< 빙고 게임 >

using System;

class program
{
   static void Main(string [] args)
   {
      int[] arrays = new int[]
      {
         1,2,3,4,5,
         6,7,8,9,10,
         11,12,13,14,15,
         16,17,18,19,20,
         21,22,23,24,25
      };
      
      View(arrays);
      
      string input = "";
      while(input != "exit")
      {
         Console.Clear();
         View(arrays);
         Console.WriteLine("Cout : " + Bingo(arrays).Tostring());
         
         input = Console.ReadLine();
         if(string.IsNullOrEnpty(intpu)) continue;
         
         int data = 0;
         if(int.TryParse(intpu, out data))
         {
            if(data < 26 )
            {
              arrays[data -1] = -1 ;
            }
          }
       }
    }
    
    static void View(int[] arrays)
    {
      for(int i = 1; i < arrays.Length + 1 ; ++i)
      {
         if(i%5 == 0 )
             Console.WriteLine(arrays[i-1]);
         else
             Console.Write(string.Format("{0}\t", arrays[i-1]));
       }
     }
     
     // 여기서 부터 빙고 체크 해주는 함수
     static int Bingo(int[] arrays)
     {
         int count = 0 ;
         bool isBingo ;
         
      // Vertical//
      
         for(int i = 0 ; i < 5 ; ++i)
          {
             isBingo = true;
             for(int j=0;j<5 ; ++j)
             {
                if(arrays[i+(j*5)] != -1)
                {
                   isBingo =false;
                   break;  // false 하나라도 뜨면 바로 작업 중지
                 }   
            }
              
            if(isBingo) count++;
          }
         
       // Horizontal//
         
       for(int i =0; i<5; ++i)
       {
          isBingo = true;
          for(int j=0; j < 5 ; ++j)
            {
               if(arrays[i*5 +j] != -1)
                {
                   isBingo = false;
                   break;
                }
            }
         if(isBingo) cout++;
      }
      
      // LeftBottom//
      isBingo = true ;
      for(int i = 0; i<25+1 ; i+=6)
      {
         if(arrays[i] != -1)
         {
            isBingo = false ;
            break;
          }
       }
       if(isBingo) count++;
       
       //Right Bottom//
       for(int i = 4; i <21 ; i+=4)
       {
          if(arrays[i] != -1)
          {
              isBingo = false;
              break;
          }
       }
       if(isBingo)count++;
       
       return count;
    }
 }
       return cout;
      

후에 다시 코드를 짜보자~ㅎㅎ

Comments