前言

上一节Scratch编程课程,我们讲了如何判断横向左右两个方向是否五子连珠。

实际上,我们一共需要判断8个方向,包括:上、下、左、右、左上↖、右下↘、右上↗、左下↙

那么,在上一节课代码基础上,稍加修改就能实现其它6个方向的判断了。

可是,你会发现每个方向的代码相似度非常高,也就是说我们可以从中找出一种规律,从而大大简化代码。在介绍我的优化代码之前,我们先解决下落子点棋子重复落子的问题。

解决落子点棋子重复落子问题

大家看下图,增加一个判断,判断当前落子点的列表编号在列表中对应的值,如果值为0,说明该落子点可以落子;反之,不为0,说明该落子点已经有棋子了。

scratch编程走迷宫(51.Scratch青少年编程实例教程)(1)

图1

如何将8个方向的代码,优化成一个自定义积木?

大家看下图,我把它们的计算格式进行了统一,然后用红色标出了不同的地方。不同的地方有两处,我们分别在自定义积木中设置参数a和b 。大家结合下面的代码慢慢理解。

scratch编程走迷宫(51.Scratch青少年编程实例教程)(2)

图2


编写判断8个方向是否五子连珠的程序

图2是图3中重复执行程序的执行终止判断代码,我把他们拆开,方便大家理解。

①是判断是否找到相同颜色的棋子;②③④⑤判断是否超出棋盘范围。当没有相同棋子或者超出了棋盘范围,那么,重复执行就终止了,因为没必要再继续在这个方向上查找了。

scratch编程走迷宫(51.Scratch青少年编程实例教程)(3)

图3


scratch编程走迷宫(51.Scratch青少年编程实例教程)(4)

图4

虽然是8个方向,但是我们计算连珠总数的时候,是两个相对方向一起计算的,所以得两个方向结合起来计数。具体程序见下图。如果,总数超过4,那么发出“五子连珠”的广播。接收广播的角色,根据当前落子是“黑棋”还是“白棋”,经过判断后显示“黑棋胜”或者“白旗胜”。

scratch编程走迷宫(51.Scratch青少年编程实例教程)(5)

图5

最后,我们两个两个地组合,对所有8个方向进行判断。

scratch编程走迷宫(51.Scratch青少年编程实例教程)(6)

图6

演示效果

教程写到这里,我们的五子连珠游戏已经可以正常判断胜负了,我和糖果两个人玩了一局,感觉还真不错。



本次Scratch编程课程就讲到这里,后续课程见!

本文所有图片、视频及文字内容,均为原创,转载时请保留版权信息。

查看更多Scratch编程教程,请点击下一行的了解更多,进入程序员猪猪的头条主页。

点击关注,每天接收更新哦。

,