tic tac toe 게임

Study/C++ 2011. 9. 29. 20:24
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
 
using namespace std;
 
int board[3][3] = {0,{0,},};            //전역변수
 
void opning(){
    cout<<"TicTacToe게임입니다."<<endl;
    cout<<"연속적으로 3개의 모형이 나오면 이기는 게임입니다."<<endl;
    cout<<"입력은 1~3만 받습니다, 만약 (0,0)을 입력시 조기종료를 할 수 있습니다."<<endl;
}
 
void draw_ground(){     //화면에 그려주는 함수
 
    for(int i=0;i<15;i++) cout<<"-";   //첫째 줄
    cout<<endl;
    for(int i=0;i<3;i++){                //둘째 줄
        cout<<"|";
        if(board[0][i]==1) cout<<" O |";
        else if(board[0][i]==2) cout<<" X |";
        else cout<<"   |";
    }
    cout<<endl;
    for(int i=0;i<15;i++) cout<<"-";   //셋째 줄
    cout<<endl;
    for(int i=0;i<3;i++){                //넷째 줄
        cout<<"|";
        if(board[1][i]==1) cout<<" O |";
        else if(board[1][i]==2) cout<<" X |";
        else cout<<"   |";
    }
    cout<<endl;
    for(int i=0;i<15;i++) cout<<"-";   //다섯째 줄
    cout<<endl;
    for(int i=0;i<3;i++){                //여섯째 줄
        cout<<"|";
        if(board[2][i]==1) cout<<" O |";
        else if(board[2][i]==2) cout<<" X |";
        else cout<<"   |";
    }
    cout<<endl;
    for(int i=0;i<15;i++) cout<<"-";   //일곱째 줄
    cout<<endl;
}
 
bool check(){   //게임이 끝났는지 체크하는 함수
 
    for(int i = 0; i < 3; i++){ 
        if((board[i][0] == 1)&&(board[i][1] == 1)&&(board[i][2] == 1)||(board[i][0] == 2)&&(board[i][1 ]== 2)&&(board[i][2] == 2)) return true; //가로 체크
        if((board[0][i] == 1)&&(board[1][i] == 1)&&(board[2][i] == 1)||(board[0][i] == 2)&&(board[1][i] == 2)&&(board[2][i] == 2)) return true; //세로 체크
    }
    if((board[0][0] == 1)&&(board[1][1] == 1)&&(board[2][2] == 1)||(board[0][0] == 2)&&(board[1][1] == 2)&&(board[2][2] == 2)) return true; //대각선 체크
    if((board[0][2] == 1)&&(board[1][1] == 1)&&(board[2][0] == 1)||(board[0][2] == 2)&&(board[1][1] == 2)&&(board[2][0] == 2)) return true; //대각선 / 체크
 
    return false;
}
 
void main(){
    int x, y;
 
    opning();   //오프닝 함수 호출
    draw_ground();  //시작전 화면 호출
 
    for(int a = 1 ; a <= 10 ; a++){      //게임이 아무리 길어져도 9턴까지 반복문 9번 돌림
        if(a == 10){                //9턴이 될때까지 승패가 나지않으면 무승부처리
            cout<<"무승부입니다"<<endl;
            break;
        }
        if(a%2==1) cout<<"1P차례";
        else cout<<"2P차례";
        cout<<"("<<a<<"턴)"<<endl;
        cout<<"좌표를 입력하세요."<<endl;
        cout<<"가로 : ";
        cin>>x;
        cout<<"세로 : ";
        cin>>y;
 
        if(x==0&&y==0){     //0,0입력시 종료시키는 if문
            cout<<"종료를 실행하셨습니다."<<endl;
            break;
        }
        if(x>3||y>3){     //1~3이 아닌 범위를 입력시 호출
            cout<<"좌표범위를 넘었습니다.다시 입력하세요"<<endl;
            a--;
 
        }
        else if(board[y-1][x-1]==1||board[y-1][x-1]==2){        //입력한 자리에 입력시 호출
            cout<<"이미 입력한 좌표입니다.다시 입력하세요"<<endl;
            a--;
        }
        else{       //정상 진행
            if(a%2==1)     
                board[y-1][x-1] = 1; // 1 = 0 로 출력
            else
                board[y-1][x-1] = 2; // 2 = X 로 출력
 
            draw_ground();      //화면 표시
 
            if(check()==true){      //체크 함수 호출
                if(a%2==1) cout<<"1P WIN, 2P 루져"<<endl;
                else cout<<"2P WIN, 1P 루져"<<endl;
                cout<<"게임을 종료하겠습니다"<<endl;
                break;
            }
        }
    }
}

'Study > C++' 카테고리의 다른 글

기말 프로젝트 - 토크나이저  (0) 2011.09.29
퍼즐게임  (0) 2011.09.29
지뢰 찾기  (0) 2011.09.29
소수 확인하기  (0) 2011.09.29
빙고 게임  (0) 2011.09.29
Posted by 코딩하는 야구쟁이
,