정성훈
    Mini Project (tic-tac-toe 게임) 확장 모범 답안



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
#include <stdio.h>
 
int main(void)
{
    char board[3][3];
    int x, y, k, i;
 
    // 보드를 초기화한다. 
    for (x = 0; x < 3; x++)
        for (y = 0; y < 3; y++) board[x][y] = ' ';
 
    // 사용자로부터 위치를 받아서 보드에 표시한다. 
    for (k = 0; k < 9; k++) {
        printf("[%c 입력](x, y) 좌표: ", (k % 2 == 0) ? 'X' : 'O');
        scanf("%d %d"&x, &y);
        if (board[x][y] != ' ') {
            printf("위치 에러: 다시 입력하세요\n");
            k--;
        }
        else
            board[x][y] = (k % 2 == 0) ? 'X' : 'O';    // 현재의 순번에 따라 'X', 'O'중 선택
 
                                                // 보드를 화면에 그린다. 
        for (i = 0; i < 3; i++) {
            printf("---|---|---\n");
            printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);
        }
        printf("---|---|---\n");
    }
 
    return 0;
}
cs

 

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
#include <stdio.h>
 
int main(void)
{
    char board[3][3];
    int x, y, k, i, l, m, flag=0;
 
    // 보드를 초기화한다. 
    for (x = 0; x < 3; x++)
        for (y = 0; y < 3; y++) board[x][y] = ' ';
 
    // 사용자로부터 위치를 받아서 보드에 표시한다. 
    for (k = 0; k < 9; k++) {
        if (k % 2 == 0) { // 컴퓨터 차례
            for (l = 0; l < 3; l++) {
                for (m = 0; m < 3; m++) {
                    if (board[l][m] == ' ') {
                        x = l;
                        y = m;
                        flag = 1;
                        break;
                    }
                }
                if (flag == 1) {
                    printf("[컴퓨터 차례](x, y) 좌표: (%d, %d)\n", x, y);
                    flag = 0;
                    break;
                }
            }
        }
        else {
            printf("[플레이어 차례](x, y) 좌표: ");
            scanf("%d %d"&x, &y);
        }
        if (board[x][y] != ' ') {
            printf("위치를 다시 입력하세요\n");
            k--;
        }
        else
            board[x][y] = (k % 2 == 0) ? 'X' : 'O';    // 현재의 순번에 따라 'X', 'O'중 선택
 
                                                // 보드를 화면에 그린다. 
        for (i = 0; i < 3; i++) {
            printf("---|---|---\n");
            printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);
        }
        printf("---|---|---\n");
    }
 
    return 0;
}
cs

 

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    char board[3][3];
    int x, y, k, i, l, m, flag=0;
 
    srand(time(NULL));
    // 보드를 초기화한다. 
    for (x = 0; x < 3; x++)
        for (y = 0; y < 3; y++) board[x][y] = ' ';
 
    // 사용자로부터 위치를 받아서 보드에 표시한다. 
    for (k = 0; k < 9; k++) {
        if (k % 2 == 0) { // 컴퓨터 차례
            do {
                x = rand() % 3;
                y = rand() % 3;
            } while (board[x][y] != ' ');
            printf("[컴퓨터 차례](x, y) 좌표: (%d, %d)\n", x, y);
        }
        else {
            printf("[플레이어 차례](x, y) 좌표: ");
            scanf("%d %d"&x, &y);
        }
        if (board[x][y] != ' ') {
            printf("위치를 다시 입력하세요\n");
            k--;
        }
        else
            board[x][y] = (k % 2 == 0) ? 'X' : 'O';    // 현재의 순번에 따라 'X', 'O'중 선택
 
                                                // 보드를 화면에 그린다. 
        for (i = 0; i < 3; i++) {
            printf("---|---|---\n");
            printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);
        }
        printf("---|---|---\n");
    }
 
    return 0;
}
cs

 

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define        SIZE    3
 
int main(void)
{
    char board[SIZE][SIZE];
    int x, y, k, i, l, m, x_flag=0, o_flag=0, X_win, O_win;
 
    srand(time(NULL));
    // 보드를 초기화한다. 
    for (x = 0; x < SIZE; x++)
        for (y = 0; y < SIZE; y++) board[x][y] = ' ';
 
    // 사용자로부터 위치를 받아서 보드에 표시한다. 
    for (k = 0; k < 9; k++) {
        if (k % 2 == 0) { // 컴퓨터 차례
            do {
                x = rand() % SIZE;
                y = rand() % SIZE;
            } while (board[x][y] != ' ');
            printf("[컴퓨터 차례](x, y) 좌표: (%d, %d)\n", x, y);
        }
        else {
            printf("[플레이어 차례](x, y) 좌표: ");
            scanf("%d %d"&x, &y);
        }
        if (board[x][y] != ' ') {
            printf("위치를 다시 입력하세요\n");
            k--;
        }
        else
            board[x][y] = (k % 2 == 0) ? 'X' : 'O';    // 현재의 순번에 따라 'X', 'O'중 선택
 
                                                // 보드를 화면에 그린다. 
        for (i = 0; i < SIZE; i++) {
            printf("---|---|---\n");
            printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);
        }
        printf("---|---|---\n");
 
        // 승패 판정
 
        for (x = 0; x < SIZE; x++) {
            if (board[x][0== 'X') {
                x_flag = 1;
            }
            if (board[x][0== 'O') {
                o_flag = 1;
            }
            for (y = 1; y < SIZE; y++) {
                if (x_flag == 1 && board[x][y] != 'X')
                    x_flag = 0;
                if (o_flag == 1 && board[x][y] != 'O')
                    o_flag = 0;
            }
            if (x_flag == 1 || o_flag == 1break;
 
            if (board[0][x] == 'X') {
                x_flag = 1;
            }
            if (board[0][x] == 'O') {
                o_flag = 1;
            }
            for (y = 1; y < SIZE; y++) {
                if (x_flag == 1 && board[y][x] != 'X')
                    x_flag = 0;
                if (o_flag == 1 && board[y][x] != 'O')
                    o_flag = 0;
            }
            if (x_flag == 1 || o_flag == 1break;
        }
        if (x_flag == 1) {
            printf("컴퓨터 승!!! \n");
            break;
        }
        if (o_flag == 1) {
            printf("사용자 승!!!\n");
            break;
        }
        for (x = 0; x < SIZE; x++) {
            if (board[0][0== 'X')
                x_flag = 1;
            if (board[0][0== 'O')
                o_flag = 1;
            for (y = 1; y < SIZE; y++) {
                if (x_flag == 1 && board[y][y] != 'X')
                    x_flag = 0;
            }
            for (y = 1; y < SIZE; y++) {
                if (o_flag == 1 && board[y][y] != 'O')
                    o_flag = 0;
            }
            if (x_flag == 1 || o_flag == 1break;
 
            if (board[0][SIZE - 1== 'X')
                x_flag = 1;
            if (board[0][SIZE - 1== 'O')
                o_flag = 1;
            for (y = 1; y < SIZE; y++) {
                if (x_flag == 1 && board[y][SIZE - 1 - y] != 'X')
                    x_flag = 0;
            }
            for (y = 1; y < SIZE; y++) {
                if (o_flag == 1 && board[y][SIZE - 1 - y] != 'O')
                    o_flag = 0;
            }
            if (x_flag == 1 || o_flag == 1break;
        }
        if (x_flag == 1) {
            printf("컴퓨터 승!!! \n");
                break;
        }
        if (o_flag == 1) {
            printf("사용자 승!!!\n");
                break;
        }
    }
 
    return 0;
}
cs

  등록일 : 2022-04-03 [17:16] 조회 : 205 다운 : 0   
 
△ 이전글Mini Project (tic-tac-toe 게임) 확장
▽ 다음글도전문제 2)
프로그래밍언어 실습게시판
번호 제 목 조회 등록일
실습 목차
158 └❶ lglobal_var.c (교재) 582 02-22
157 └❶ llocal_var.c (교재) 539 02-22
156 └❶ lcheck_prime.c (교재) 642 02-22
155 └❶ ltemp.c (교재) 629 02-22
154 └❶ lprototype.c (교재) 572 02-22
153 └❶ lpower.c (교재) 583 02-22
152 └❶ lget_max.c (교재) 554 02-22
151 └❶ lfunc1.c (교재) 576 02-22
150 └❶ lprint_name2.c (교재) 635 02-22
149 └❶ lprint_name1.c (교재) 599 02-22
148 (7장) 배열 484 02-22
147 └❶ Mini Project (tic-tac-toe 게임) 443 04-03
146    └❷ Mini Project (tic-tac-toe 게임) 모범 답안 226 04-03
145       └❸ Mini Project (tic-tac-toe 게임) 확장 391 04-03
144          └❹ Mini Project (tic-tac-toe 게임) 확장 모범 답안 205 04-03
143 └❶ 도전문제 2) 377 04-03
142    └❷ 도전문제 2) 모범 답안 509 04-03
141 └❶ 도전문제 1) 358 04-03
140    └❷ 도전문제 1) 모범 답안 504 04-03
139 └❶ lmatrix.c (교재) 727 02-22

[1][2][3][4][5][6][7][8][9][10]-[Next][13]