前文中使用c语言实现井字棋后,如何做到扩大棋盘的优化?
(全部的代码在我的资源处可下载)
思路:
第一步:扩大棋盘前提是让棋盘变得更加柔性,这里柔性指的是上文封装好了的函数,让他内部的判断方式不再只适用于3*3的棋盘,要让他变得更为灵活。
比如:arr[2][2]、arr[0][0]、arr[1][1]用这样生硬的写法用于判断三个子是否一样时,这个函数的可移植性就很差,当棋盘的规格大了之后,这些”死数值“没法通过自身改变,需要人力来改变这些数值。因此用变量名代替这些数值:arr[i][j]、arr[i][j]、arr[i][j],以便于用循环的形式让他们能够随着接收不同的实参而自动达到我们的需求。
第二步:柔性棋盘如何进行判断胜负?对每一个棋子都进行横、竖、斜三个方面来判断是否为三个相同的棋子:

但是这种方法会遇到一个问题:当判断的棋子在边缘处,若继续判断他的四周则会发生越界访问

为了解决越界访问,可以采取初始化更大的一个数组,例如:需要打印一个3*3的棋盘,那么就初始化化一个5*5的二维数组,只是下棋、判断输赢、打印棋盘等等功能都在5*5数组中3*3范围上实现,从坐标1,1开始下棋,3,3是末尾,对1,1的周围进行判断也不会越界访问,因为外层

本文介绍了如何使用C语言扩展井字棋游戏,通过将棋盘判断函数封装得更灵活,允许适应不同大小的棋盘,并处理边界问题,确保在不同规格的棋盘上正确判断胜负和打印棋盘。
最低0.47元/天 解锁文章
851

被折叠的 条评论
为什么被折叠?



