温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言实现三子棋实例代码怎么写

发布时间:2022-01-06 13:05:55 来源:亿速云 阅读:169 作者:柒染 栏目:开发技术

这期内容当中小编将会给大家带来有关C语言实现三子棋实例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

首先,我将该程序的实现分为3个板块,main,game.h,和game.c;

代码如下:

#define _CRT_SECURE_NO_WARNINGS #include"game.h"   void menu() {	printf("****************************************\n");	printf("***********  1.play 0.exit  ************\n");	printf("****************************************\n"); }   void game() {	char board[ROW][COL] = {0};	Creatboard(board, ROW,COL);//创建棋盘	Displayboard(board,ROW,COL); //初始化棋盘	while (1)	{	PlayerMove(board,ROW,COL);//玩家移动	Displayboard(board, ROW, COL);//绘制	char i = Result(board, ROW, COL);//判断	switch (i)	{	case '*':	printf("你赢了!");	Sleep(2000);	Creatboard(board, ROW, COL);	break;	case '#':	printf("你输了!");	Sleep(2000);	Creatboard(board, ROW, COL);	break;	case 'p':	printf("平局!");	Sleep(2000);	Creatboard(board, ROW, COL);	break;	case 'c':;	}//我没用鹏哥讲的;用的switch好像更麻烦了	system("cls");//清屏	ComputerMove(board, ROW, COL);//电脑移动	Displayboard(board, ROW, COL);	switch (i)	{	case '*':	printf("你赢了!");	Sleep(2000);	Creatboard(board, ROW, COL);	break;	case '#':	printf("你输了!");	Sleep(2000);	Creatboard(board, ROW, COL);	break;	case 'p':	printf("平局!");	Sleep(2000);	Creatboard(board, ROW, COL);	break;	case 'c':;	}	} }   void control() {	int n = 0;	do {	menu();//菜单页面	printf("请选择:>");	scanf("%d", &n);	switch (n)	{	case 0:	printf("退出游戏\n");	break;	case 1:	game();	break;	default:	printf("输入错误,请重新输入\n");	break;	}  	} while (n); }   int main() {	srand ((unsigned int)time(NULL));//时间戳	control();	return 0; }

这部分我用了switch之后比较麻烦,也没有结束游戏的退出程序,写的比较乱。 

我将所用的头文件都放在了game.h里,着是鹏老师教的写大程序的方式,使程序结构一目了然。

#define ROW 3 #define COL 3   #include<stdio.h> #include<time.h> #include<windows.h> //函数声明 void Creatboard(char board[ROW][COL], int row,  int col); void Displayboard(char board[ROW][COL],int row, int col); void PlayerMove(char board[ROW][COL], int row, int col); void ComputerMove(char board[ROW][COL], int row, int col); char Result(char board[ROW][COL], int row, int col);

 对函数的定义是主要事项,判断三子棋当前是否输赢或是平局,以及棋盘绘制的规律,都是在看了几遍后才明白,我这个比较粗糙,有能力的可以自行修改一下绘制的图案。

#define _CRT_SECURE_NO_WARNINGS   #include"game.h"   void Creatboard(char board[ROW][COL], int row,int col) {	int i = 0, j = 0;	for (i = 0; i < row; i++)	{	for (j = 0; j < col; j++)	{	board[i][j] = ' ';	}	} }   void Displayboard(char board[ROW][COL], int row, int col)//绘制图案最好用循环,直接用printf按鹏哥的话说比较挫 {	int i = 0, j = 0;	for (i = 0; i < row; i++)	{	for (j = 0; j < col; j++)	{	printf(" %c ", board[i][j]);	if (j < col - 1)	printf("|");	}	printf("\n");	if (i < row - 1)	{	for (j = 0; j < col; j++)	{	printf("---");	if (j < col-1)	printf("|");	}	}	printf("\n");	} }   void PlayerMove(char board[ROW][COL], int row, int col)//下棋的位置是用坐标表示的 {	int x, y;	printf("玩家请下棋:>\n"); again:	scanf("%d %d", &x, &y);	if (board[x - 1][y - 1] == ' ')	{	board[x - 1][y - 1] = '*';	}	else	{	printf("非法位置,请重新输入\n");	goto again;	} }     void ComputerMove(char board[ROW][COL], int row, int col) {	printf("电脑下棋中\n");	while (1)	{	int x = rand() % row;//生成0~2之间的随机数	int y = rand() % col;	if (board[x][y] == ' ')	{	board[x][y] = '#';	break;	}	} }   int Full(char board[ROW][COL], int row, int col)//判定棋盘是否下满 {	int i = 0, j = 0;	for (i = 0; i < row; i++)	{	for (j = 0; j < col; j++)	{	if (board[i][j] == ' ')	return 0;	}	}	return 1; }   char Result(char board[ROW][COL], int row, int col) {	int i = 0, j = 0;	for (i = 0; i < row; i++)//判断三行	{	if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')	return board[0][0];	}	for (j = 0; j <col; j++)//判断三列	{	if (board[j][0] == board[j][1] && board[j][0] == board[j][2] && board[j][0] != ' ')	return board[0][0];	}	if(board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] != ' ' || board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[0][2] != ' ')//判断对角线	return board[1][1];	if (Full(board,row,col)==1)	return 'p';	else	return 'c'; }

上述就是小编为大家分享的C语言实现三子棋实例代码怎么写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI