반응형
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==0) return 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!=0) break;
player2_play(); // P2의 돌 좌표를 입력받아 board배열에 반영함.
display_board();
r=check_board();
if (r!=0) break;
}
if (r==1) printf("P1 승 !!!!\n");
else if (r==2) printf("P2 승 !!!!\n");
else if (r==3) printf("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 != 2) printf("---+---+---\n");
}
}
|
cs |
틱텍토 게임의 규칙
기존 틱택토 게임과 완전히 같은 퍼포먼스를 구현하기 위한 코드를 적었다.
반응형
'C CONSOLE' 카테고리의 다른 글
오목 [개인 모작] (0) | 2021.08.20 |
---|