三子棋程序的讲解(2)

2023-12-18 08:30:13

? ? ? ? 这篇博客为大家讲解三子棋程序之中的棋盘打印并且棋盘的初始化(详细代码请看三子棋代码-CSDN博客

棋盘的初始化

????????三子棋,就是在3*3的棋盘内,两方对弈,当一方有三颗棋子在任意方向连着三颗就赢了(横、竖、斜都可以)。当我说到3*3,是否能让你想起什么?正是二维数组,假定一个数组arr,我们给他确定大小arr[3][3],这不正是棋盘的轮廓就出来了吗?3*3棋盘和3*3的二维数组;我们还应该有一个初始化棋盘的程序,因为每次下完棋之后,想要再次进行游戏,棋盘不能是满的,所以说应该每次下完一盘都应该清除棋盘上面的东西,才能让游戏反复多次。那么我们怎么让它初始化呢,且看代码

void intboard(char board[ROW][COL], int row, int col)//这里用函数的形式写,传的参数是
数组,和数组的行列大小
{
	int i, j;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			board[i][j] = ' ';//将数组全部初始化为空格
		}
	}
}

? ? ? ? 我们需要用两个循环变量来控制数组的行列,这样之后,我们就可以将数组内的所有元素初始化为空格,我们只需要在每次游戏结束之后调用这个函数,就可以实现棋盘的初始化了。

棋盘轮廓的打印?

? ? ? ? 我们先想一想棋盘的轮廓,是不是类似于一个“井”字形,所以说我们应该填充(__and |)来构成这个井字形

void Displayboard(char board[ROW][COL], int row, int col)
{
	int i;
	for (i = 0; i < row; i++)
	{
		//打印数据
		int j;
		for (j = 0; j < col; j++)
		{
			printf(" %c ", board[i][j]);
			if (j < col - 1)
			{
				printf("|");
			}
		}
		printf("\n");
		//打印分割
		if (i < row - 1)
		{
			int j = 0;
			for (j = 0; j < col; j++)
			{
				printf("---");
				if (j < col - 1)
				{
					printf("|");
				}
			}
			printf("\n");
		}
	}
}

? ? ? ? ?这样,我们每一行都会打印(___|___|___),然后每一列都会打印(|),将二者用两个循环变量所控制,行列分别控制并且将其写出来,然后打印出来

? ? ? ? 打印出来就是我们棋盘的样子了,我们有了棋盘,就可以让玩家看,并且让玩家选择在哪里下棋了。

值得一提的是

? ? ? ? 当我们每次第一次打印棋盘之前,前面一定要先初始化棋盘,用空格去占位置(因为每个符号的大小不一样),否则就无法输出我们想要的棋盘图案。


?

文章来源:https://blog.csdn.net/Aishangyuwen/article/details/135032716
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。