三子棋代码实现及bug

再写这篇博客之前我已经写过三次三子棋游戏代码,每次都有不同的bug让我抓狂,今天就分享一下自己三子棋代码的心得.

1.首先,我们需要在vs中创建一个game的项目文件来存储三子棋代码,然后将这一个大的文件分为三个小文件,第一个文件放该工程的头文件,第二个文件放该工程的函数设计,第三个文件放该工程的具体步骤,如下图:

三子棋代码实现及bug_第1张图片 三子棋代码实现及bug_第2张图片

 2.先写出该工程的大致步骤,比如说使用do while语句实现先打印游戏页面,然后用switch语句选择是进入游戏还是退出游戏,接着是while循环中输入数组来选择打完第一次游戏后是重新开始下一局游戏还是退出游戏,在这里说一下do while循环在while();语句后面一定要加分号,其次就是想一想游戏都有什么功能,哪个功能对应的哪个顺序,比如打印完菜单开始游戏后我们要先初始化一个3*3的棋盘,然后再打印这个数组使之成为一个看着比较顺眼的三子棋盘,如下图:

三子棋代码实现及bug_第3张图片

三子棋代码实现及bug_第4张图片 

打印完棋盘后开始考虑游戏的功能,比如玩家先走还是电脑先走在这都可以设计,我设计的是玩家先走,毕竟游戏还是玩家占据主导地位,让玩家先走需要考虑不熟悉编程的人输入数组下标都是从1开始,而数组下标是从0开始,所以我会加一个坐标合法的限制条件,使玩家输入的坐标在1-3中产生, 想完这个后还要考虑你输入的坐标是否本身就有字符,由于初始化数组为‘ ’,所以输入的坐标如果等于空字符我就下棋,否则我就提醒玩家需要重新输入,从这可以看出这是一个循环,如果下棋成功我就退出循环否则就重新输入。代码如下图所示:

三子棋代码实现及bug_第5张图片

 写完玩家走的就该写电脑的,电脑走最简单的就是使坐标随机,这样就可以让每次坐标都不一样,至于更智能的这里就不在展开说了,因为大体结构出来剩下的细节只需要放在相应的模块里就行,电脑走的代码如下图所示:

三子棋代码实现及bug_第6张图片

 写完电脑走的逻辑后就差判断输赢了,三子棋是三个连在一起就赢,那么如果一行三个元素相同就赢,一列三个元素相同也赢,两个对角线的三个元素相同也赢,在这里我们可以创建一个字符变量让它去接收输赢函数的返回值,如果三个元素相同则直接返回三个元素中的某一个元素,如果返回‘*’就是玩家赢,返回‘#’就是电脑赢,返回‘C’就是游戏继续,返回‘Q’就是平局,想好这些就可以实现代码了,要注意的是刚开始数组初始化为空白字符,如果要赢则需要元素不等于空白字符,否则刚游戏开始就赢了,在判断平局时,如果棋盘都满了没有空白字符则返回‘Q’,代码如下图:

三子棋代码实现及bug_第7张图片

最后再放上该工程的大体逻辑,下面是代码:

三子棋代码实现及bug_第8张图片 

在这里告诉几个容易出现的bug。

1. 链接错误,这样的错误通常是因为int main函数中把main写成mian,还有如果你此次代码的文件名和你之前创建过的文件的名字相同。如图:

 

2.有时候没有给数组具体的元素个数如int arr[] = {0}; 

 

 

你可能感兴趣的:(bug)