가장 간단하게, 컴퓨터가 왼쪽에서 오른쪽, 위에서 아래 순서로 x표기하여 게임을 진행하는 알고리즘
#include <stdio.h>
void print_board(char board[][3]); //board출력
void initialize(char board[][3]); //board초기화
void computer_input(char board[][3]); //Computer입력
int winner_check(char board[][3]); //결과
int main() {
char board[3][3];
int x, y;
initialize(board); //board 초기화
for (int i = 0; i < 9; i++) {
if (i % 2 == 0 && i != 1) { //짝수번째에 User입력
printf("User(x , y) >> ");
scanf("%d %d", &x, &y);
if(board[x][y]==' ') board[x][y] = 'O';
else {
printf("error!\n");//보드에 입력값이 있을시,잘못입력시 error출력
i--;
continue;
}
}
else {
computer_input(board); //홀수번째에 Computer입력
}
print_board(board); //board출력
if (winner_check(board) == 1) {//검사해서 return 1이면 UserWin
printf("User Win!\n");
break;
}
else if (winner_check(board) == 2) {
printf("Computer Win!\n");
break;
}
}
printf("End!\n");
return 0;
}
void print_board(char board[][3]) {
for (int i = 0; i < 3; i++) {
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[i][0], board[i][1], board[i][2]);
}
printf("---|---|---\n\n");
}
void initialize(char board[][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
board[i][j] = ' ';
}
}
void computer_input(char board[][3]) {
int check = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == ' ') { //비어있는 가장 첫번째에 Computer가 입력
board[i][j] = 'X';
check = 1;//입력했는지 체크
printf("Computer(%d , %d) \n", i, j);
break;
}
}
if (check == 1) return; //입력했으면 함수 exit
}
}
int winner_check(char board[][3]) {
for (int i = 0; i < 3; i++) {
if (board[0][i] == 'O' && board[1][i] == 'O' && board[2][i] == 'O') return 1;
if (board[0][i] == 'X' && board[1][i] == 'X' && board[2][i] == 'X') return 2;
}
for (int i = 0; i < 3; i++) {
if (board[i][0] == 'O' && board[i][1] == 'O' && board[i][2] == 'O') return 1;
if (board[i][0] == 'X' && board[i][1] == 'X' && board[i][2] == 'X') return 2;
}
if (board[0][0] == 'O' && board[1][1] == 'O' && board[2][2] == 'O') return 1;
if (board[0][0] == 'X' && board[1][1] == 'X' && board[2][2] == 'X') return 2;
return 0; //위의 모든 경우가 없었다면 return 0
}
'PROGRAMMING CODE > C' 카테고리의 다른 글
[BAEKJOON] No.1546 C언어 (0) | 2021.10.18 |
---|---|
[BAEKJOON] No.10818 C언어 (0) | 2021.10.18 |
[SOLUTION] 2차원 배열 하나로 학생들의 점수(난수 이용), 평균 구하기 (0) | 2021.10.18 |
[SOLUTION] 흐르는 물 (0) | 2021.10.18 |
[SOLUTION] 회문 정수 판별 (0) | 2021.10.18 |