c语言实现井字棋游戏(对棋盘进行扩大的优化)

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

前文中使用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的周围进行判断也不会越界访问,因为外层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安权_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值