目录

这个中秋节礼物很特别,毛毛虫小学员编写数独数学逻辑小游戏献给爸妈

目录

这个中秋节礼物很特别,毛毛虫小学员编写“数独”数学逻辑小游戏献给爸妈!

前言

01

中秋佳节,小朋友们有没有不一样的节日活动呢?对了,中秋节一定要记得吃月饼。

我们毛毛虫的小朋友可不一般了,吃月饼时还不忘记编程学习。上课中间休息时,为了调剂小朋友的兴趣,我拿出纸和笔,对他们说,咱们一起来玩数独游戏。

https://i-blog.csdnimg.cn/blog_migrate/e8fe0ae91b29f492d9056ddafe00cbf6.png

02

数独是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。

数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。

03

为了减少难度,我和小朋友玩的是4×4的4个数字的“数独”游戏。

游戏规则如下:如下图所示,规则非常简单:每一行、每一列、每一个小宫(粗线隔开的部分)数字1,2,3,4不能重复出现。

https://i-blog.csdnimg.cn/blog_migrate/bb7cd1fc5bf20db5a65e276979fa140c.png

04

小朋们掌握规则后,玩的都很开心。完毕,其中有一个小朋友说,老师,我们能在电脑中自己编写一个类似的“数独”游戏吗?

我说,可以呀。

于是,我们马上行动,开始工作,具体流程分:

1、准备素材。

2、流程和逻辑分析。

3、打开Scratch开始编程。

4、测试。

素材准备

https://i-blog.csdnimg.cn/blog_migrate/2623e6dedf661da0521d1a625fc6732b.png

1、我从网上下载了一副4X4的数独图片,并使用PS简单处理下。也可以使用Scratch的绘制工具自行绘制。我在这里偷了一下懒,直接从网上下载。

https://i-blog.csdnimg.cn/blog_migrate/2623e6dedf661da0521d1a625fc6732b.png

2、我们做的是一个相对而言较简单的4个数字数独游戏,可以直接从Scratch的角色库里拿到数字角色。

3、打开Scratch,导入素材。

业务分析

https://i-blog.csdnimg.cn/blog_migrate/6383e840af9c25c3770262ccba82c265.png

游戏规则本身不难,但必须通过编程逻辑的方式解决:

1、数字填空:只能在有效的范围内填写。

2、确保所填写处不能有其它数字。

3、检查正填写处的数字不能破坏游戏规则,即不能让每一行,每一列,每一个小宫中数字出现重复。

制作过程

编写过程小朋友都很有兴趣,我们前期解决了数字填写的问题,后面两个问题我和小朋友们也探讨了下,这时候就体现出Scratch的短板,毕竟是让小孩子用的,缺少丰富的数据结构,让代码变得有点。

1、数字填空逻辑的实现

这个主要使用克隆积木,当用户每点击一个数字时,都会克隆一个。位置这里使用了 虚拟坐标转实际坐标的方式 。整个实现过程对小朋友来讲理解上没有问题,但是制作过程因逻辑有点小复杂,中间出了很多问题。

2、确保所填写处不能有其它数字

这个其实思路很简单,当每放置一个数字后,在某些位置进行两个状态量记载:标记已经填充和标记数字本身。每次填充之前检查此位置是否有数字。只是在设计数据结构时很费心思。

3、检查正填写处的数字不能破坏游戏规则,即不能让每一行,每一列,每一个小宫中数字出现重复。这个原理和前面第二个问题差不多。

部分代码

https://i-blog.csdnimg.cn/blog_migrate/be3d07b802d58d2a7339eef8ce65f411.png

https://i-blog.csdnimg.cn/blog_migrate/2c3832549f360699aa949bbe0cb5b911.png

https://i-blog.csdnimg.cn/blog_migrate/530b736913f10c72d521164b5221e767.png

https://i-blog.csdnimg.cn/blog_migrate/7b3608cf7b2b4e4b4107dccb352e89d2.png

因篇幅问题,其它代码不再粘贴,如需要完整代码,可关注我们!

视频演示

使用什么样的编程语言并不重要,关键是设计思路、解决方案。Scratch与专业计算机语言相比较封装度较高,暴露出来的API并不多,有些功能实现起来很有困难,但并不妨碍它是一款优秀的伟大的图形编程工具。专业知识丰富的计算机工作人员通过它也能做出很酷的实用性应用程序。