C语言数组(14)—— 写一个三子棋游戏(5)
  uUWKQE7Avyk4 2023年11月02日 61 0

一.回顾

我们上一篇文章介绍了电脑下棋的代码,这时候我们就需要来判断玩家的输赢,如果执行完PlayerMove()函数后,玩家的棋子连城了三个,那么就是玩家赢了,反之则为电脑获胜,如果是平局则也需要告诉玩家平局了,我们想一想三子棋的输赢是依据上下左右以及斜线能够连城一条直线来判定的,这里我们规定,当玩家赢的时候程序返回 * 号 电脑获胜时则返回 # 号 平局时候则返回字符 Q ,若还需要继续则返回字符 C

二.判断输赢

我们照例将判断输赢的代码封装成一个函数名为 IsWin(),既然我们判断输赢是依据字符的返回值,所以我们这个函数的返回值就不再是 void 空了,而是 char 类型,所以我们在game.h头文件中需要先写出函数的定义,代码如下:

char IsWin(char board[ROW][COL],int row,int col);

既然我们需要判断,所以也少不了if语句,我们在test.c文件中写入一下代码:

char ret = 0;
ret = IsWin(board,ROW,COL);
if(ret != 'C'){
break;
}
if(ret == '*'){
printf("玩家获胜!\n");
}
else if(ret == '#')
{
printf("电脑获胜!\n");
}else
{
printf("平局!\n");
}

接下来我们就来着重看一下这个IsWin()函数如何来判断玩家的输赢,我们先来看行与列输赢的判断,代码如下:

代码写在game.c的源文件中

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[j][0] == board[j][1] && board[j][1] == board[j][2] && board[j][1] != ' '){
return board[j][1];
}
}
}

这样我们就可以实现判断行与列的输赢了,下篇文章讲着重介绍对角线的判定

                                                                                                                             2023/9/6

                                                                                                                        

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  zLxnEsMLk4BL   2023年11月19日   30   0   0 数组字符串数组名
  gBkHYLY8jvYd   2023年11月19日   27   0   0 #include数组ci
  X5zJxoD00Cah   2023年11月19日   19   0   0 数组单引号字符串
  gBkHYLY8jvYd   2023年12月10日   22   0   0 #include数组i++
uUWKQE7Avyk4