1.概述
今天我给大家带来的是三子棋小游戏,三子棋小游戏主要包括菜单,打印棋盘,电脑下棋,玩家下棋,判断输赢,这五部分,想要全部代码的小伙伴们可以点击https://gitee.com/steventom/class/tree/master/%E4%B8%89%E5%AD%90%E6%A3%8B/%E4%B8%89%E5%AD%90%E6%A3%8B链接,我将他分为三个文件分别盛放声明定义的函数和头文件,定义的函数,主函数三个。
这样分文件写有很大的好处,当我们写一个几千行的代码时份文件可以让我们的代码看起来整齐,并且寻找时容易寻找;
2.菜单函数
菜单主要包括打印菜单和输入选择的序号两部分,具体代码如以下:
int menu() { printf("******************\n"); printf("*** 1.开始游戏 ***\n"); printf("*** 2.结束游戏 ***\n"); printf("******************\n"); printf("请输入你想要选择的序号:"); int num; scanf("%d", &num); return num; }
3.打印棋盘
主要通过一个循环以及在对循环次数进行判断,以实现打印不同的结果
void print(char arr[N][N]) { int i, j; for (i = 0; i < N; i++) { printf("%c |%c |%c \n", arr[i][0], arr[i][1], arr[i][2]); if (i != N - 1) printf("__|__|__\n"); } printf(" | | \n"); printf("\n"); }
4.电脑下棋
电脑下棋我们需要引入随机数,它主要靠rang()函数以及赋予他一个种子srand(time(NULL)),实现,其中srand(time(NULL))的头文件是include<stdlib.h>;rand()函数的头文件是include <time.h>;
产生随机数是电脑下棋的核心,利用产生的随机数进行%3,得到0,1,2中的一个数来确定电脑下在哪里;具体代码如下:
void ai(char arr[N][N]) { count++; srand(time(NULL)); int i, j; flag: i = rand() % 3; j = rand() % 3; if (arr[i][j] == ' ') arr[i][j] = '#'; else goto flag; }
5.玩家下棋
玩家下棋就是用户直接输入坐标进行下棋,代码如下
void my(char arr[N][N]) { count++; int i, j; flag: printf("请输入你想下的位置:"); scanf("%d%d", &i, &j); if (arr[i - 1][j - 1] == ' ') arr[i - 1][j - 1] = '*'; else goto flag; }
6.判断输赢
接下来就是最后的环节,我们对斜着,横着,竖着进行判断看是否能赢,当下9次时还没有人胜出则平局。具体代码如下:
char win(char arr[N][N]) { int i; //斜着 if (arr[1][1] != ' ' && (arr[0][0] == arr[1][1] &&arr[1][1] == arr[2][2]) ) return arr[1][1]; if (arr[1][1] != ' ' && (arr[0][2] == arr[1][1] && arr[2][0] == arr[0][2])) return arr[1][1]; for (i = 0; i < 3; i++)//横着 { if (arr[i][1] != ' ' && arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2]) return arr[i][0]; } for (i = 0; i < 3; i++)//竖着 { if (arr[0][i] == arr[1][i] && arr[0][i] == arr[2][i] && arr[0][i] != ' ') return arr[i][0]; } if (count == 9) return 'a';//平局 }
7.总结
到这里我们的小游戏已经结束了,想玩的可以将代码拿去。最后希望大家一键三连