scratch-五子棋电脑判定输赢

为了让游戏更加公平有趣,我们希望电脑能够快速判定输赢。

下面是4种五子棋获胜的条件,横向、纵向、正斜线、反斜线获胜。

使用变量(黑白棋标志) 来记录每一个格子里面是白棋还是黑棋,数字1表示白棋,数字-1表示黑棋,每使用一次改变一次。

五子棋是是一个二维列表,但是scratch不支持怎么办呢?

我们可以使用一维列表来模拟二维列表。

这个棋盘是横11*竖10的棋盘,总共可以放110个棋子,可以使用公式(某行*11+某列)得到模拟的二维列表,比如第5行,第7列,是白棋,我们可以在 列表 (棋盘情况)的第5*11+7 个项目里面放入数字1。

判定输赢其实很简单,每下一次棋,需要遍历所有点,每个点有4种情况,以这个点为中心,判定横竖斜线五个点的数字相加只要是5或者-5。

虽然棋盘是11*10的大小,但是如果二维列表也是11*10会有一些麻烦,因为如果棋子在边界的时候判断情况会和中心有些不一样,所以我们需要将二维列表拓宽为15*14,没有棋子的地方统统设置为0,这样判断条件就会统一。

源码:

链接:https://pan.baidu.com/s/1QOtxRCE_kve3hVCSxHy06g
提取码:od32

欢饮大家留言相互交流。

发表评论

邮箱地址不会被公开。