超详细C语言三子棋游戏代码操作详解,看完一定能懂

大家好, 相信大家小时候都和同桌下过三子棋,在一个九宫格内有一方如果横三、竖三、斜三有一个满足都是自己的旗子的话就获胜,今天,树哥教大家用代码的形式,写出属于自己的三子棋游戏,与自己的电脑来玩一把三子棋。

 

目录

“游戏的整体思路”

“游戏的整个算法实现”

             1、打印菜单

             2、初始化棋盘

             3、打印棋盘

             4、玩家下棋

             5、电脑下棋

             6、判断输赢

“最终的代码实现”

“总结”’


“游戏的整体思路”

首先,我们要创造三个文件,一个test.c文件用来测试我们的游戏内容,一个game.c文件用来存放我们写入的自定义函数,一个game.h用来给我们写的自定义函数进行声明。

test.c   ----   测试游戏内容

game.c -----  存放自定义函数

game.h -------- 对自定义函数进行声明


“游戏的整个算法实现”

1、打印菜单

当我们进入游戏的时候,首先应该打印我们的菜单界面,让玩家选择下棋或是不下,选择下棋则进入游戏,否则退出游戏

代码实现:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//游戏整个算法实现
void game()
{
	printf("玩游戏.\n");
}
//菜单函数
void menu()
{
	printf("************************\n");
	printf("** 1.play     0.exit  **\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//输入1,进入游戏
			game();
			break;
			//输入0,退出游戏
		case 0:
			printf("退出游戏。\n");
			break;
			//输入其他值,输入非法,请重新输入
		default:
			printf("输入非法,请重新输入。\n");
			break;
		}
	} while (input);
}
int main()
{
	test();
	return 0;
}

 结果展示:


2、初始化棋盘

此时,我们 已经将菜单打印好了,现在,我们要定义一个二维数组(board [ROW] [COL]),用来表示 我们九宫格内每个棋子的落子位置,ROW代表棋盘的行数,COL代表棋盘的列数,由于后面我们会重复用到棋盘的行数和列数,不妨直接定义

#define ROW 3

#define COL  3  之后需要行和列时直接用ROW于COL来表示即可。注意:定义放在game.h中,这样避免重复定义,需要用到行、列是在头文件中引用“game.h”即可。

定义InitBoard(board, ROW, COL)函数来实现棋盘数组的初始化。

代码实现:

game.h中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 3
#define COL 3



//函数声明
void InitBoard(char board[ROW][COL], int row, int col);

game.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

//初始化棋盘数组
void InitBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			board[i][j] = ' ';
		}
	}
}

test.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "game.h"
//游戏整个算法实现
void game()
{
	//数组存放走出的棋盘信息
	char board[ROW][COL] = { 0 };
	//初始化棋盘
	InitBoard(board, ROW, COL);
}
//菜单函数
void menu()
{
	printf("************************\n");
	printf("** 1.play     0.exit  **\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//输入1,进入游戏
			game();
			break;
			//输入0,退出游戏
		case 0:
			printf("退出游戏。\n");
			break;
			//输入其他值,输入非法,请重新输入
		default:
			printf("输入非法,请重新输入。\n");
			break;
		}
	} while (input);
}
int main()
{
	test();
	return 0;
}

3、打印棋盘

现在,棋盘数组的初始化已经完成了,接下来,我们需要玩家在输入1也就是选择玩游戏是,将我们的棋盘打印在屏幕上,让玩家看见。

定义DisplayBoard(board, ROW, COL)来打印棋盘。

代码实现:

game.h中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 3
#define COL 3



//函数声明
void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);

game.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

//初始化棋盘数组
void InitBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int 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)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		//打印一行数据
		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");
		}
	}
}

test.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "game.h"
//游戏整个算法实现
void game()
{
	//数组存放走出的棋盘信息
	char board[ROW][COL] = { 0 };
	//初始化棋盘
	InitBoard(board, ROW, COL);
	//打印棋盘
	DisplayBoard(board, ROW, COL);
}
//菜单函数
void menu()
{
	printf("************************\n");
	printf("** 1.play     0.exit  **\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//输入1,进入游戏
			game();
			break;
			//输入0,退出游戏
		case 0:
			printf("退出游戏。\n");
			break;
			//输入其他值,输入非法,请重新输入
		default:
			printf("输入非法,请重新输入。\n");
			break;
		}
	} while (input);
}
int main()
{
	test();
	return 0;
}

 结果展示:


 

4、玩家下棋

现在,我们已经实现的棋盘的打印,对于实现三子棋游戏已经成功了一半了,接下来,就是实现玩家下棋的这一过程,当玩家输入九宫格的下标后,在棋盘上相对应的那个区域我们打印“ * ”,表示这里是玩家下了棋的地方。

定义PlayerMove(board,ROW,COL)函数来表示玩家下棋。

注意:对于我们程序员,我们知道,数组的下标是从0开始的,所以,棋盘上的第一个空应该是0 0 及对应棋盘上的board [0] [0],但对于一般用户来说,通常会理解第一个空的下标为1 1 及对应棋盘上的board [0][0],所以,这里我们在写的时候,我们应将玩家输入的坐标减去1,对应的才是我们棋盘上的坐标。

代码实现:

game.h中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

#define ROW 3
#define COL 3



//函数声明
void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);
void PlayMove(char board[ROW][COL], int row, int col);

game.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

//初始化棋盘数组
void InitBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int 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)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		//打印一行数据
		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 PlayMove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("玩家走>");
		scanf("%d%d", &x, &y);
		if (x >= 0 && x <= row && y >= 0 && y <= col)
		{
			if (board[x - 1][y - 1] == ' ')
			{
				board[x - 1][y - 1] = '*';
				break;
			}
			else
			{
				printf("坐标已被占用,请重新输入\n");
			}
		}
		else
			printf("输入的坐标非法,请重新输入!\n");
	}
}

test.c中的代码:

​
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "game.h"
//游戏整个算法实现
void game()
{
	//数组存放走出的棋盘信息
	char board[ROW][COL] = { 0 };
	//初始化棋盘
	InitBoard(board, ROW, COL);
	//打印棋盘
	DisplayBoard(board, ROW, COL);
	while (1)
	{
        //玩家下棋
		PlayMove(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
	}
}
//菜单函数
void menu()
{
	printf("************************\n");
	printf("** 1.play     0.exit  **\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//输入1,进入游戏
			game();
			break;
			//输入0,退出游戏
		case 0:
			printf("退出游戏。\n");
			break;
			//输入其他值,输入非法,请重新输入
		default:
			printf("输入非法,请重新输入。\n");
			break;
		}
	} while (input);
}
int main()
{
	test();
	return 0;
}

​

5、电脑下棋

玩家下完棋后,就该电脑下棋了,但是电脑没有主观性,只能通过随机函数rand()来随机生成电脑所要下的下标。

定义ComputerMove(board, ROW, COL)函数来表示电脑下棋。

代码实现:

game.h中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ROW 3
#define COL 3



//函数声明
void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);
void PlayMove(char board[ROW][COL], int row, int col);
void ComputerMove(char board[ROW][COL], int row, int col);

game.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

//初始化棋盘数组
void InitBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int 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)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		//打印一行数据
		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 PlayMove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("玩家走>");
		scanf("%d%d", &x, &y);
		if (x >= 0 && x <= row && y >= 0 && y <= col)
		{
			if (board[x - 1][y - 1] == ' ')
			{
				board[x - 1][y - 1] = '*';
				break;
			}
			else
			{
				printf("坐标已被占用,请重新输入\n");
			}
		}
		else
			printf("输入的坐标非法,请重新输入!\n");
	}
}



//电脑下棋
void ComputerMove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("电脑走>\n");
	while (1)
	{
		x = rand() % row;
		y = rand() % col;
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}
}

test.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "game.h"
//游戏整个算法实现
void game()
{
	//数组存放走出的棋盘信息
	char board[ROW][COL] = { 0 };
	//初始化棋盘
	InitBoard(board, ROW, COL);
	//打印棋盘
	DisplayBoard(board, ROW, COL);
	while (1)
	{
		//玩家下棋
		PlayMove(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//电脑下棋
		ComputerMove(board, ROW, COL);
		DisplayBoard(board, ROW, COL);

	}
}
//菜单函数
void menu()
{
	printf("************************\n");
	printf("** 1.play     0.exit  **\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	srand((unsigned int)time(NULL));//给随机函数设置起点
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//输入1,进入游戏
			game();
			break;
			//输入0,退出游戏
		case 0:
			printf("退出游戏。\n");
			break;
			//输入其他值,输入非法,请重新输入
		default:
			printf("输入非法,请重新输入。\n");
			break;
		}
	} while (input);
}
int main()
{
	test();
	return 0;
}

 结果展示:


 5、判断输赢

每当玩家或电脑下完棋后,我们都应该进行一次输赢判定,输赢判定应有四种结果

玩家赢

电脑赢

平局

继续

那我们不妨规定,如果玩家赢了则返回‘ * ’,如果电脑赢了则返回‘#’,如果平局了则返回‘Q’,如果还要继续则返回‘C’。

定义IsWin(board,ROW,COL)函数来判断输赢。

定义IsFull(board,ROW,COL)函数来判断是否平局。

代码实现:

game.h中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ROW 3
#define COL 3



//函数声明
void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);
void PlayMove(char board[ROW][COL], int row, int col);
void ComputerMove(char board[ROW][COL], int row, int col);
char IsWin(char board[ROW][COL], int row, int col);

game.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

//初始化棋盘数组
void InitBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int 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)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		//打印一行数据
		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 PlayMove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("玩家走>");
		scanf("%d%d", &x, &y);
		if (x >= 0 && x <= row && y >= 0 && y <= col)
		{
			if (board[x - 1][y - 1] == ' ')
			{
				board[x - 1][y - 1] = '*';
				break;
			}
			else
			{
				printf("坐标已被占用,请重新输入\n");
			}
		}
		else
			printf("输入的坐标非法,请重新输入!\n");
	}
}



//电脑下棋
void ComputerMove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("电脑走>\n");
	while (1)
	{
		x = rand() % row;
		y = rand() % col;
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}
}


//返回1表示棋盘满了
//返回0表示棋盘没满
int IsFull(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			if (board[i][j] == ' ')
				return 0;
		}
	}
	return 1;
}




//判断输赢
char IsWin(char board[ROW][COL], int row, int col)
{
	//横三行
	int i = 0;
	for (i = 0; i < row; i++)
	{
		if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
		{
			return board[i][1];
		}
	}
	//竖三列
	int j = 0;
	for (j = 0; j < col; j++)
	{
		if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] != ' ')
		{
			return board[1][j];
		}
	}
	//俩个对角线
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
	{
		return board[1][1];
	}
	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
	{
		return board[1][1];
	}
	//判断是否平局
	if (1 == IsFull(board, ROW, COL))
	{
		return 'Q';
	}
	else
		return 'C';
}

test.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "game.h"
//游戏整个算法实现
void game()
{
	char ret = 0;
	//数组存放走出的棋盘信息
	char board[ROW][COL] = { 0 };
	//初始化棋盘
	InitBoard(board, ROW, COL);
	//打印棋盘
	DisplayBoard(board, ROW, COL);
	while (1)
	{
		//玩家下棋
		PlayMove(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判断玩家是否赢得游戏
		ret = IsWin(board, ROW, COL);
		{
			if (ret != 'C')
				break;
		}
		//电脑下棋
		ComputerMove(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判断电脑是否赢得游戏
		ret = IsWin(board, ROW, COL);
		{
			if (ret != 'C')
				break;
		}

	}
	if (ret == '*')
	{
		printf("玩家赢\n");
	}
	else if (ret == '#')
	{
		printf("电脑赢\n");
	}
	else
	{ 
		printf("平局\n");
		}

}
//菜单函数
void menu()
{
	printf("************************\n");
	printf("** 1.play     0.exit  **\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	srand((unsigned int)time(NULL));//给随机函数设置起点
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//输入1,进入游戏
			game();
			break;
			//输入0,退出游戏
		case 0:
			printf("退出游戏。\n");
			break;
			//输入其他值,输入非法,请重新输入
		default:
			printf("输入非法,请重新输入。\n");
			break;
		}
	} while (input);
}
int main()
{
	test();
	return 0;
}

结果展示:

 


         “最终代码实现”

test.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "game.h"
//游戏整个算法实现
void game()
{
	char ret = 0;
	//数组存放走出的棋盘信息
	char board[ROW][COL] = { 0 };
	//初始化棋盘
	InitBoard(board, ROW, COL);
	//打印棋盘
	DisplayBoard(board, ROW, COL);
	while (1)
	{
		//玩家下棋
		PlayMove(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判断玩家是否赢得游戏
		ret = IsWin(board, ROW, COL);
		{
			if (ret != 'C')
				break;
		}
		//电脑下棋
		ComputerMove(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判断电脑是否赢得游戏
		ret = IsWin(board, ROW, COL);
		{
			if (ret != 'C')
				break;
		}

	}
	if (ret == '*')
	{
		printf("玩家赢\n");
	}
	else if (ret == '#')
	{
		printf("电脑赢\n");
	}
	else
	{ 
		printf("平局\n");
		}

}
//菜单函数
void menu()
{
	printf("************************\n");
	printf("** 1.play     0.exit  **\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	srand((unsigned int)time(NULL));//给随机函数设置起点
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//输入1,进入游戏
			game();
			break;
			//输入0,退出游戏
		case 0:
			printf("退出游戏。\n");
			break;
			//输入其他值,输入非法,请重新输入
		default:
			printf("输入非法,请重新输入。\n");
			break;
		}
	} while (input);
}
int main()
{
	test();
	return 0;
}

game.c中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

//初始化棋盘数组
void InitBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int 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)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		//打印一行数据
		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 PlayMove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("玩家走>");
		scanf("%d%d", &x, &y);
		if (x >= 0 && x <= row && y >= 0 && y <= col)
		{
			if (board[x - 1][y - 1] == ' ')
			{
				board[x - 1][y - 1] = '*';
				break;
			}
			else
			{
				printf("坐标已被占用,请重新输入\n");
			}
		}
		else
			printf("输入的坐标非法,请重新输入!\n");
	}
}



//电脑下棋
void ComputerMove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("电脑走>\n");
	while (1)
	{
		x = rand() % row;
		y = rand() % col;
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}
}


//返回1表示棋盘满了
//返回0表示棋盘没满
int IsFull(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			if (board[i][j] == ' ')
				return 0;
		}
	}
	return 1;
}




//判断输赢
char IsWin(char board[ROW][COL], int row, int col)
{
	//横三行
	int i = 0;
	for (i = 0; i < row; i++)
	{
		if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
		{
			return board[i][1];
		}
	}
	//竖三列
	int j = 0;
	for (j = 0; j < col; j++)
	{
		if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] != ' ')
		{
			return board[1][j];
		}
	}
	//俩个对角线
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
	{
		return board[1][1];
	}
	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
	{
		return board[1][1];
	}
	//判断是否平局
	if (1 == IsFull(board, ROW, COL))
	{
		return 'Q';
	}
	else
		return 'C';
}

game.h中的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ROW 3
#define COL 3



//函数声明
void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);
void PlayMove(char board[ROW][COL], int row, int col);
void ComputerMove(char board[ROW][COL], int row, int col);
char IsWin(char board[ROW][COL], int row, int col);

“总结”

通过上述过程,我们将一个复杂的问题,通过逐步拆分,一步一步操作实现了我们三子棋小游戏的代码。书山有路勤为径,祝各位早日成为行业大佬,管理自己的半壁江山! ^_^

码字不易,如果觉得这篇文章对你有帮助的话,请给树哥我点个赞,感谢。

 

 

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值