#include #include //グローバル変数 int gameover;// 1ならば終了 int board[3][3];// int turn;//0ならば○の番 1ならば×の番 int count;//9になったらゲーム終了 //関数プロトタイプ宣言 void initialize(void); void createboard(void); void turnchange(void); void pushbutton(void); void check(void); int main(void) { initialize(); while(!gameover) { pushbutton(); turnchange(); createboard(); check(); } return 0; } void initialize() { int i, j;//forループ用変数 count = 0; system("cls"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { board[i][j] = 10; } createboard(); } } void createboard() { int i, j;//forループ用変数 system("cls"); if(!turn) printf("○の番です\n\n"); else printf("×の番です\n\n"); for (i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { switch(board[i][j]) { case 10: printf("□"); break; case 0: printf("○"); break; case 1: printf("×"); } } printf("\n"); } } void pushbutton() { int i, j; int endcheck = 0;//キー入力成功なら1 do { switch(getch()) { case 'q': i = 0; j = 0; break; case 'w': i = 0; j = 1; break; case 'e': i = 0; j = 2; break; case 'a': i = 1; j = 0; break; case 's': i = 1; j = 1; break; case 'd': i = 1; j = 2; break; case 'z': i = 2; j = 0; break; case 'x': i = 2; j = 1; break; case 'c': i = 2; j = 2; break; default: i = -1; } if(i != -1) { if(board[i][j] == 10) { board[i][j] = turn; endcheck = 1; } } } while (!endcheck); } void turnchange() { count++; if(turn) turn = 0; else turn = 1; } void check() { if ((board[0][0] == 0 && board[0][1] == 0 && board[0][2] == 0) || (board[1][0] == 0 && board[1][1] == 0 && board[1][2] == 0) || (board[2][0] == 0 && board[2][1] == 0 && board[2][2] == 0) || (board[0][0] == 0 && board[1][0] == 0 && board[2][0] == 0) || (board[0][1] == 0 && board[1][1] == 0 && board[2][1] == 0) || (board[0][2] == 0 && board[1][2] == 0 && board[2][2] == 0) || (board[0][0] == 0 && board[1][1] == 0 && board[2][2] == 0) || (board[0][2] == 0 && board[1][1] == 0 && board[2][0] == 0)) { printf("\n\n\n\n\n○の勝ち\n\n"); gameover = 1; } else if ((board[0][0] == 1 && board[0][1] == 1 && board[0][2] == 1) || (board[1][0] == 1 && board[1][1] == 1 && board[1][2] == 1) || (board[2][0] == 1 && board[2][1] == 1 && board[2][2] == 1) || (board[0][0] == 1 && board[1][0] == 1 && board[2][0] == 1) || (board[0][1] == 1 && board[1][1] == 1 && board[2][1] == 1) || (board[0][2] == 1 && board[1][2] == 1 && board[2][2] == 1) || (board[0][0] == 1 && board[1][1] == 1 && board[2][2] == 1) || (board[0][2] == 1 && board[1][1] == 1 && board[2][0] == 1)) { printf("\n\n\n\n\n×の勝ち\n\n"); gameover = 1; } else if(count == 9) { printf("\n\n\n\n\n引き分け\n\n"); gameover = 1; } }