200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > C语言编写五子棋小游戏

C语言编写五子棋小游戏

时间:2021-06-24 22:32:53

相关推荐

C语言编写五子棋小游戏

7月14日学习记录

运行结果

代码展示:main.c

//include#include <stdio.h>#include<conio.h>//#define#define size_s 19//定义宽度,其值必须<=5#define size_l 19//定义长度,其值必须<=5int qizi_data[size_l * size_s];//定义棋盘保存位置数组int* p=qizi_data;int winer,player=1 ,x=size_s/2+1,y=size_l/2+1;//定义光标坐标变量char c;//画棋盘函数void wuziqipan(void) {int i,j,k;for (k = 0; k < size_s+1; k++) {if (k == 0)printf(" ");else if(k<10)printf("%d ", k);else printf("%d", k);}printf("\n");for (i = 1; i <= size_l; i++) {if(i<10)printf("%d ",i);else printf("%d", i);for (j = 1; j <= size_s; j++) {if (j == x&& i == y) {if (j != size_s) printf("*─");else printf("*");}else if (*p!=0) {if (j != size_s) {if (*p == 1)printf("●─");else if (*p == 2)printf("○─");}else {if (*p == 1)printf("●");else if(*p == 2)printf("○");}}else if (i == 1) {if (j==1) {printf("┌─");}else if (j == size_s) {printf("┐");}else printf("┬─");}else if (i == size_l) {if (j == 1) {printf("└─");}else if (j == size_s) {printf("┘");}else printf("┴─");}else {if (j == 1) {printf("├─");}else if (j == size_s) {printf("┤");}else printf("┼─");}*(p++);}printf("\n");}p = qizi_data;}//玩家轮换函数void player_bw(void) {if (player == 1)player = 2;else if (player == 2)player = 1;}//下子函数void xiazi(char c) {int i, j;if (c == 'w') {if (y > 1)y--;//光标位置定义向上 else printf("上面的区域以后再来探索吧\n");}else if (c == 's') {if (y < size_l)y++;//光标位置定义向下 else printf("下面的区域以后再来探索吧\n");}else if (c == 'a') {if (x > 1)x--;//光标位置定义向左 else printf("左边的区域以后再来探索吧\n");}else if (c == 'd') {if (x < size_s)x++;//光标位置定义向右else printf("右边的区域以后再来探索吧\n");}else if (c == 'q')printf("下子\n");else printf("无效输入\n");printf("当前坐标为 %d,%d\n", x, y);for (i = 1; i <= size_l; i++) {for (j = 1; j <= size_s; j++) {if (c == 'q') {if (i == y && j == x) {if (player == 1 && *p != 1 && *p != 2)*p = 1;else if (player == 2 && *p != 1 && *p != 2)*p = 2;else printf("该坐标已被占用!\n");player_bw();//玩家轮换}*p++;}}}p = qizi_data;}//胜利判断函数int win() {int i, j,qixing[size_l][size_s];for (i = 1; i <= size_l; i++) {for (j = 1; j <= size_s; j++) {qixing[i-1][j-1] = 0;}}for (i = 1; i <= size_l; i++) {for (j = 1; j <= size_s; j++) {qixing[i - 1][j - 1] = *p;*p++;/*printf("%d", qixing[i][j]);*/}}//竖直方向判定for (i = 0; i < size_l-4; i++) {for (j = 0; j < size_s; j++) {if (qixing[i][j] ==1&&qixing[i + 1][j] ==1 &&qixing[i + 2][j] ==1 &&qixing[i + 3][j] ==1&&qixing[i + 4][j] == 1) {printf("白子玩家胜利");return 1;}else if (qixing[i][j] == 2 && qixing[i + 1][j] == 2 && qixing[i + 2][j] == 2 && qixing[i + 3][j] == 2 && qixing[i + 4][j] == 2) {printf("黑子玩家胜利");return 2;}}}//水平方向判定for (i = 0; i < size_l; i++) {for (j = 0; j < size_s-4; j++) {if (qixing[i][j] ==1&& qixing[i][j + 1] == 1&&qixing[i][j + 2] == 1&&qixing[i][j + 3] ==1&&qixing[i][j + 4] == 1) {printf("白子玩家胜利");return 1;}else if (qixing[i][j] == 2 && qixing[i][j + 1] == 2 && qixing[i][j + 2] == 2 && qixing[i][j + 3] == 2 && qixing[i][j + 4] == 2) {printf("黑子玩家胜利");return 2;}}}//左斜方向判定(撇)for (i = 4; i < size_l; i++) {for (j = 0; j < size_s - 4; j++) {if (qixing[i][j] == 1 && qixing[i + 1][j - 1] == 1 && qixing[i + 2][j - 2] == 1 && qixing[i + 3][j - 3] == 1 && qixing[i + 4][j - 4] == 1){printf("白子玩家胜利");return 1;}else if (qixing[i][j] == 2 && qixing[i + 1][j - 1] == 2 && qixing[i + 2][j - 2] == 2 && qixing[i + 3][j - 3] == 2 && qixing[i + 4][j - 4] == 2){printf("黑子玩家胜利");return 2;}}}//右斜方向判定(捺)for (i = 0; i < size_l-4; i++) {for (j = 0; j < size_s - 4; j++) {if (qixing[i][j] == 1 && qixing[i + 1][j + 1] == 1 && qixing[i + 2][j + 2] == 1 && qixing[i + 3][j + 3] == 1 && qixing[i + 4][j + 4] == 1) {printf("白子玩家胜利");return 1;}else if (qixing[i][j] == 2 && qixing[i + 1][j + 1] == 2 && qixing[i + 2][j + 2] == 2 && qixing[i + 3][j + 3] == 2 && qixing[i + 4][j + 4] == 2) {printf("黑子玩家胜利");return 2;}}}//调试程序,显示棋盘数组//for (i = 1; i <= size_l; i++) {// for (j = 1; j <= size_s; j++) {// printf("%d ", qixing[i-1][j-1]);// }// printf("\n");//}p = qizi_data;}//初始化棋盘数组,使其全部元素置零void data_init(void) {int i, j;for (i = 1; i <= size_l; i++) {for (j = 1; j <= size_s; j++) {*p = 0;*p++;}}}//mainvoid main(void) {printf(" 游戏开始"); data_init();//初始化棋盘//使用while循环实现无限循环while (1) {printf("五子棋游戏按p结束游戏");printf("\n");printf("当前玩家为%d\n",player);wuziqipan();//调用画棋盘函数c = _getch();//键入函数,输入结果保存在变量cif (c == 'p')break;//退出xiazi(c);//调用下子函数winer = win();//判定获胜条件if (winer == 1 || winer == 2)break;}printf(" 游戏结束\n\n");}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。