c语言简单实现三子棋
2017-10-11 20:01
561 查看
利用3*3的数组,简单实现三子棋
Game.h文件
#ifndef __GAME_H__ #define __GAME_H__ #define ROWS 3 #define COLS 3 #include<stdio.h> #include<stdlib.h> #include <time.h> #include<string.h> void init_board(char arr1[ROWS][COLS], int row,int col); void display_board(char arr1[ROWS][COLS], int row, int col); void player_move(char arr1[ROWS][COLS], int row, int col); void computer_move(char arr1[ROWS][COLS], int row, int col); char check_win(char arr1[ROWS][COLS], int row, int col); #endif
Game.c文件
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void display_board(char arr1[COLS][ROWS],int col,int row) { int i = 0; printf("-------------\n"); for (i=0;i<row;i++) { printf("| %c | %c | %c |\n", arr1[i][0], arr1[i][1], arr1[i][2]); if (i != row - 1) printf("|---|---|---|\n"); else if (i == row - 1) printf("-------------\n"); } } void player_move(char arr1[COLS][ROWS],int col,int row) { int x = 0; int y = 0; while (1) { printf("请输入你想下的坐标:>"); scanf("%d%d", &x, &y); x--; y--; if ((x>=0) && (x<=row-1) && (y>=0) && (y<=col-1)) { if (arr1[x][y] == ' ') { arr1[x][y] = 'X'; break; } else { printf("坐标已被占用,请重新输入:>\n"); } } } } void computer_move(char arr1[ROWS][COLS], int row, int col) { int i = 0; int j = 0; while (1) { for (i = 0; i < row; i++) { if ((arr1[i][0] == arr1[i][1]) && (arr1[i][1] == '0') && (arr1[i][2]) == ' ') { arr1[i][2] = '0'; goto END; } else if ((arr1[i][1] == arr1[i][2]) && (arr1[i][2] == '0') && (arr1[i][0]) == ' ') { arr1[i][0] = '0'; goto END; } else if ((arr1[i][0] == arr1[i][2]) && (arr1[i][2] == '0') && (arr1[i][1]) == ' ') { arr1[i][1] = '0'; goto END; } } for (i = 0; i < col; i++) { if ((arr1[0][i] == arr1[1][i]) && (arr1[1][i] == '0') && (arr1[2][i]) == ' ') { arr1[2][i] = '0'; goto END; } else if ((arr1[1][i] == arr1[2][i]) && (arr1[2][i] == '0') && (arr1[0][i]) == ' ') { arr1[0][i] = '0'; goto END; } else if ((arr1[0][i] == arr1[2][i]) && (arr1[2][i] == '0') && (arr1[2][i]) == ' ') { arr1[1][i] = '0'; goto END; } } if ((arr1[0][0] == arr1[1][1]) && (arr1[1][1] == '0') && (arr1[2][2] == ' ')) { arr1[2][2] = '0'; break; } if ((arr1[1][1] == arr1[2][2]) && (arr1[1][1] == '0') && (arr1[0][0] == ' ')) { arr1[0][0] = '0'; break; } if ((arr1[0][0] == arr1[2][2]) && (arr1[2][2] == '0') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[0][2] == arr1[1][1]) && (arr1[1][1] == '0') && (arr1[2][0] == ' ')) { arr1[2][0] = '0'; break; } if ((arr1[0][2] == arr1[2][0]) && (arr1[2][0] == '0') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[1][1] == arr1[2][0]) && (arr1[1][1] == '0') && (arr1[0][2] == ' ')) { arr1[0][2] = '0'; break; } for (i = 0; i < row; i++) { if ((arr1[i][0] == arr1[i][1]) && (arr1[i][1] == 'X') && (arr1[i][2]) == ' ') { arr1[i][2] = '0'; goto END; } else if ((arr1[i][1] == arr1[i][2]) && (arr1[i][2] == 'X') && (arr1[i][0]) == ' ') { arr1[i][0] = '0'; goto END; } else if ((arr1[i][0] == arr1[i][2]) && (arr1[i][2] == 'X') && (arr1[i][1]) == ' ') { arr1[i][1] = '0'; goto END; } } for (i = 0; i < col; i++) { if ((arr1[0][i] == arr1[1][i]) && (arr1[1][i] == 'X') && (arr1[2][i]) == ' ') { arr1[2][i] = '0'; goto END; } else if ((arr1[1][i] == arr1[2][i]) && (arr1[2][i] == 'X') && (arr1[0][i]) == ' ') { arr1[0][i] = '0'; goto END; } else if ((arr1[0][i] == arr1[2][i]) && (arr1[2][i] == 'X') && (arr1[2][i]) == ' ') { arr1[1][i] = '0'; goto END; } } if ((arr1[0][0] == arr1[1][1]) && (arr1[1][1] == 'X') && (arr1[2][2] == ' ')) { arr1[2][2] = '0'; break; } if ((arr1[1][1] == arr1[2][2]) && (arr1[1][1] == 'X') && (arr1[0][0] == ' ')) { arr1[0][0] = '0'; break; } if ((arr1[0][0] == arr1[2][2]) && (arr1[2][2] == 'X') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[0][2] == arr1[1][1]) && (arr1[1][1] == 'X') && (arr1[2][0] == ' ')) { arr1[2][0] = '0'; break; } if ((arr1[0][2] == arr1[2][0]) && (arr1[2][0] == 'X') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[1][1] == arr1[2][0]) && (arr1[1][1] == 'X') && (arr1[0][2] == ' ')) { arr1[0][2] = '0'; break; } while (1) { int x = rand() % row; int y = rand() % col; if (arr1[x][y] == ' ') { arr1[x][y] = '0'; break; } } END: break; } } void init_board(char arr1[COLS][ROWS],int col,int row) { memset(arr1, ' ', sizeof(arr1[0][0])*row*col); } static int is_full(char arr1[ROWS][COLS], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { if (arr1[i][j] == ' ') return 0; } } return 1; } char check_win(char arr1[ROWS][COLS],int row,int col) { int i = 0; for (i = 0; i < row; i++) { if ((arr1[i][0] == arr1[i][1]) &&(arr1[i][1] == arr1[i][2]) && (arr1[i][1] != ' ')) { return arr1[i][2]; } } for (i = 0; i < col; i++) { if ((arr1[0][i] == arr1[1][i]) && (arr1[1][i] == arr1[2][i]) && (arr1[1][i] != ' ')) { return arr1[1][i]; } } if ((arr1[0][0] == arr1[1][1]) && (arr1[1][1] == arr1[2][2]) && (arr1[1][1] != ' ')) { return arr1[1][1]; } if ( (arr1[0][2] == arr1[1][1]) && (arr1[1][1] == arr1[2][0])&& (arr1[2][0] != ' ')) { return arr1[1][1]; } if(is_full(arr1, row, col)) { return 'q'; } return ' '; }
Test.c文件
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void mnue() { printf("\n"); printf("\t\t\t\t\t***********欢乐三子棋***********\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* 1.开始 0.退出 *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t********************************\n"); } void play_game() { int ret = 0; char arr[ROWS][COLS] = { 0 }; init_board(arr, ROWS, COLS); display_board(arr, ROWS, COLS); while(1) { player_move(arr, ROWS, COLS); display_board(arr, ROWS, COLS); ret = check_win(arr, ROWS, COLS); if (ret != ' ') break; printf("电脑输入:>\n"); computer_move(arr, ROWS, COLS); display_board(arr, ROWS, COLS); ret = check_win(arr, ROWS, COLS); if (ret != ' ') break; } if (ret == 'X') { printf("玩家赢!\n"); } else if (ret == '0') { printf("电脑赢!\n"); } else { printf("平局!\n"); } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { mnue(); printf("请输入你的选择:>"); scanf("%d",&input); switch(input) { case 1: play_game(); break; case 0: break; default: break; } }while(input); return 0; }
相关文章推荐
- 三子棋游戏(简单)————C语言实现
- 用c语言实现简单三子棋游戏
- c语言简单实现三子棋(五子棋)
- 用c语言简单实现三子棋游戏
- 【C语言基础】C语言三子棋的简单实现
- C语言实现简单的三子棋小程序
- C语言实现简单的三子棋小游戏
- C语言实现简单的三子棋
- 用C语言实现简单的三子棋小游戏
- 【C语言】简单实现三子棋
- 使用C语言实现简单的三子棋程序
- c语言编程实现简单三子棋游戏
- C语言实现简单的三子棋小游戏
- c语言实现简单的三子棋
- c语言线程池的简单实现
- C语言实现简单的倒排文件索引,TF-IDF
- 使用C语言实现最小生成树求解的简单方法
- C语言实现简单的守护进程及信号处理
- C语言实现一个最简单的队列
- C语言实现的一个简单的HTTP程序