三子棋程序的讲解(4)
2023-12-18 15:38:03
? ? ? ? 前期的准备工作基本上已经差不多了,还差一个如何判断胜负,我们的三子棋就大功告成了。相信大家都玩过三子棋,胜利的方式实际上非常的简单,只需要任意一行(或者任意一列,或者任意对角线),有三颗相同的棋子就算那一方赢了,所以说我们在我们这个行为0,1,2和列为0,1,2的数组中,只需要确保当行号一样的时候,列号(0,1,2)都相同(同理,当列号一样的时候,确保行号0,1,2都相同),或者确保0,0和1,1和2,2这几个元素;或者0,2和1,1,和2,0这几个元素相同,就可以判断胜利了,先看代码:
char result(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];//随便返回一个数组下标(注意是要把行写成i),因为当有一行元素全相同的时候,那一行随便哪个元素都是相同的
}
}
int j;
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 (Full(board, row, col))//这个函数是判断棋盘是否是满的,这里下面会给大家提到
{
return 'Q';
}
return 'c';
}
? ? ? ? 这里还有一件事,这样写,我们还差了一点对于游戏平局的判断——只要上述情况都没满足,但棋盘(二维数组)又已经被填满了元素的时候,就可以判断为平局了,然后将平局的结果返回给游戏控制函数
int Full(char board[ROW][COL], int row, int col)
{
int i, j;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if (board[i][j] == ' ')//检查数组中的每一个元素,只要有一处还是空格,就返回0
return 0;
}
}
return 1;//返回1就说明数组中没有元素了
}
? ? ? ? 这样,我们的函数就准备得差不多了,只需要写主函数来调用就可以实现三子棋了。?
?
文章来源:https://blog.csdn.net/Aishangyuwen/article/details/135062653
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!