반응형
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
#include <stdio.h>
int board[3][3];
 
void init_board();
void display_board();
 
void player1_play()
{
    int x,y;
    printf("Player1의 돌 좌표를 입력하시오(x:0~2 y:0~2): ");
    scanf("%d%d"&x, &y);
    if (x<0 || x>2 || y<0 || y>2) {
        printf("좌표값이 유효하지 않습니다. 재입력하세요..\n");
        player1_play();
    } else if (board[x][y] != ' ') {
        printf("입력 좌표에 돌이 있읍니다. 재입력하세요..\n");
        player1_play();
    } else {
        board[x][y] = 'O';
    }
}
int check_board()    // 게임진행중이면 0, P1이 승 1, P2 승 2, 무승부 3
{
    int i,j;
    int cnt;
    //가로방향 체크
    for (i=0; i<3; i++) {    
        if (board[i][0]==board[i][1&& board[i][1]==board[i][2]) {
            if (board[i][1]=='O'return 1;
            else if(board[i][1]=='X'return 2;
        }
    }
    //세로방향 체크
    for (i=0; i<3; i++) {    //가로방향 체크
        if (board[0][i]==board[1][i] && board[1][i]==board[2][i]) {
            if (board[1][i]=='O'return 1;
            else if(board[1][i]=='X'return 2;
        }
    }
 
    //대각선 방향 체크
    if ((board[0][0]==board[1][1&& board[1][1]==board[2][2])
        || (board[0][2]==board[1][1&& board[1][1]==board[2][0])) {
        if(board[1][1]=='O'return 1;
        else if(board[1][1]=='X'return 2;
    }
    
    //무승부 체크
    cnt=0;
    for(i=0; i<3; i++) {
        for (j=0; j<3; j++) {
            if (board[i][j]==' ') cnt++;
        }
    }
    if (cnt==0return 3;
 
    //그 밖의 경우는 게임이 진행중인 상태임. 그러므로 0을 반환함.
    return 0;
}
int main(void)
{
    int r;
    init_board();        // board 배열을 초기화시킴
    display_board();    // board 배열 내용을 화면에 표시
 
    while (1) {
        player1_play();        // P1의 돌 좌표를 입력받아 board배열에 반영함.
        display_board();
        r=check_board();
        if (r!=0break;
 
        player2_play();        // P2의 돌 좌표를 입력받아 board배열에 반영함.
        display_board();
        r=check_board();
        if (r!=0break;
    }
    if (r==1)     printf("P1 승 !!!!\n");
    else if (r==2printf("P2 승 !!!!\n");
    else if (r==3printf("Draw !!!!\n");
}
 
void init_board()
{
    int i,j;
    for (i=0; i<3; i++)
        for (j=0; j<3; j++
            board[i][j] = ' ';
}
void display_board()
{
    int i;
    for (i=0; i<3; i++) {
        printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);
        if (i != 2printf("---+---+---\n");
    }
}
 
cs

 

 

 

틱텍토 게임의 규칙

 

틱택토 - 위키백과, 우리 모두의 백과사전

틱택토(tic-tac-toe)는 두 명이 번갈아가며 O와 X를 3×3 판에 써서 같은 글자를 가로, 세로, 혹은 대각선 상에 놓이도록 하는 놀이이다. m,n,k-게임으로, (3,3,3)-게임이다. 아래 예시는 먼저 놓은 X가 이

ko.wikipedia.org

 

기존 틱택토 게임과 완전히 같은 퍼포먼스를 구현하기 위한 코드를 적었다.

반응형

'C CONSOLE' 카테고리의 다른 글

오목 [개인 모작]  (0) 2021.08.20
Posted by Kestone Black Box
,