一.回顾
我们上篇文章着重介绍了玩家下棋的代码,那么我们这篇文章就需要着重解决电脑下棋
二.电脑下棋
我们想一想如何让电脑下棋,最简单的办法就是让程序生成一个随机值,这个随机值分别是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
王起舟