관리 메뉴

FU11M00N

[ C++ ] 틱택토(Tic-Tca-Toe) 게임 본문

Programming/C++

[ C++ ] 틱택토(Tic-Tca-Toe) 게임

호IT 2021. 4. 15. 19:39

 

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

 

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

 

void print_array() 함수는 게임의 board를 출력해줍니다.

boll win() 함수는 가로,세로,대각으로 놓여있는 플레이어가 있는지 검사하고 있다면 true를 반환해 게임을 종료시킵니다.

 

 

사용자는 x,y 좌표를 입력하여 각각 'O'와 'X'를 놓아 게임을 진행합니다.

 

사용자 1,2를 판단하기 위해 ping_pong 변수를 선언하여 말을 놓을 때마다 ping_pong 변수에 0 혹은 1을 번갈아 넣어줘서 플레이어를 구분합니다.

 

만약 게임이 승부가나지않는다면 무승부를 출력합니다.

 

 

 

#include <iostream>
using namespace std;
  char x[3][3]={{' ',' ',' '},{' ',' ',' '},{' ',' ',' '}};
void print_array(){

    for(int i=0; i<3; i++){
        for(int j=0; j<3; j++){
            cout << "|" << x[i][j] ;
        }
        cout << endl;
    }
}
bool win() {
    for (int i = 0; i < 3; i++) {
        if (x[i][0] != ' ' &&
            x[i][0] == x[i][1] &&
           x[i][1] == x[i][2]) {

            return true;
        }
    }
    for (int i = 0; i < 3; i++) {
        if (x[0][i] != ' ' &&
            x[0][i] == x[1][i] &&
            x[1][i] == x[2][i]) {

            return true;
        }
    }
    if (x[0][0] != ' ' &&
        x[0][0] == x[1][1] && x[1][1] == x[2][2]) {
        return true;
    }
    if (x[0][2] != ' ' &&
        x[0][2] == x[1][1] && x[1][1] == x[2][0]) {
        return true;
    }
    return false;
}

int main(){
    int location_x;
    int location_y;
    int ping_pong;
    print_array();
    for(int i=0; i<9; i++){
        cout << "x 좌표 입력: "<<endl;
        cin  >> location_x;
        cout << "y 좌표 입력: "<<endl;
        cin  >> location_y;

        if(ping_pong==0){
            x[location_x][location_y]='O';
            ping_pong=1;
            print_array();
            if(win()==true){
                cout<< "O 가 이김"<<endl;
                exit(1);
            }
        }
        else{
            x[location_x][location_y]='X';
            ping_pong=0;
            print_array();
             if(win()==true){
                cout<< "X 가 이김"<<endl;
                exit(1);
            }
        }
    }
    cout<< "무승부입니다."<<endl;

    return 0;
}

    

 

 

 

 

 

실행 결괏값은 세로줄이 이겼을때만 캡처했습니다.

 

Comments