C语言数组(13)—— 写一个三字棋游戏(4)
  uUWKQE7Avyk4 2023年11月02日 34 0

一.回顾

我们上篇文章着重介绍了玩家下棋的代码,那么我们这篇文章就需要着重解决电脑下棋

二.电脑下棋

我们想一想如何让电脑下棋,最简单的办法就是让程序生成一个随机值,这个随机值分别是x y,我们照例将电脑下棋的代码封装成自定义函数 ComputerMove()

与前面相同在使用函数之前需要先定义函数,我们在game.h的头文件中写入以下代码:

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

写完函数的定义,我们接下来就需要实现函数功能,我们在源文件game.c中写入以下代码:

void ComputerMove(char board[ROW][COL],int row,int col){
//函数功能的实现
}

这时候我们需要程序分别生成两个随机数,分别表示x 与 y坐标,我们之前使用过一个函数叫做rand()函数,这个函数与srand()函数相配合就可以生成一个随机值,其中srand()函数为随机值的种子植,我们还了解过一个概念叫做时间戳,由于时间是不断的改变的所以时间戳也在不停的变化,所以我们就可以将时间戳传入srand()函数中作为随机数的种子值,代码如下:

void ComputerMove(char board[ROW][COL],int row,int col){
int x=0;
int y=0;
x = rand()%row;
y = rand()%col;
}

写完上面代码后我们还需要在main()函数中添加种子值函数srand(),代码如下:

写在test.c源文件main()函数中

srand((unsigned int)time(NULL));

注意由于使用到time()函数,这个函数是被包含在头文件time.h中的,所以我们需要做好预处理指令,代码如下:

#include<time.h>

生成完电脑下棋的坐标,我们接下来就需要来进行判断,电脑落子的位置是否被玩家给占用了,如果被占用了怎么办?

我们将以下代码写入game.c中的ComputerMove()函数中:

if(borad[x][y] == ' '){
board[x][y] = '#';
  break;
}

如果被占用了,那我们就需要再次生成一个随机值所以我们可以使用while循环来解决这个问题,我们只需要用while语句将if语句包含起来即可实现,代码如下:

while(1){
if(borad[x][y] == ' '){
board[x][y] = '#';
  break;
}
}

                                                                                                                                     2023/9/5

                                                                                                                                       王起舟

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

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

暂无评论

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