汉诺塔-Scratch经典数学游戏

汉诺塔-Scratch经典数学游戏

汉诺塔-51scratch
汉诺塔-Scratch经典数学游戏
此内容为付费资源,请付费后查看
19.9
限时特惠
39.9
立即购买
您当前未登录!建议登陆后购买,可保存购买订单
付费资源

作品简介

法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。

不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

由汉诺塔游戏引出一个经典的数学问题,如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数?

图片[1]-Scratch汉诺塔_Scratch经典数学游戏作品-51scratch少儿编程网
汉诺塔经典数学题

今天要为大家分享的Scratch作品就是《经典汉诺塔》,这是一款益智类小游戏,游戏以动画的形式模拟了解决汉诺塔数学问题的移动过程。

点击绿旗,运行程序,会弹出一个询问框,小猫问道“我是猫博士,请输入盘子数量(1-10)”,玩家可以输入1-10之间的任意数字。当玩家输入数字,按下确定键后,在舞台下方出现A、B、C三个字母,用来表示三根柱子的位置,刚开始的时候盘子都放在左边A位置所表示的柱子上,并且盘子按从小到大的顺序上下排列,然后借助中间B位置的柱子,来回不停的移动盘子,在移动的过程中,要确保一次只能移到一个盘子且大盘子不能在小盘子上面,经过若干次的移动,最后盘子都移动了C位置所表示的柱子上,并且盘子也是按从小到大的顺序上下排列的。

作品效果

Scratch经典汉诺塔作品的完整效果如视频所示:

Scratch汉诺塔作品效果

作品解读

Scratch经典汉诺塔作品一共使用了4个角色,如图所示:

Scratch汉诺塔作品角色列表
Scratch汉诺塔作品角色列表

各角色功能和效果简单说明如下:

  • 字母:有3个造型,分别是字母A、B、C,用来边数左中右三个位置的柱子;
  • 盘子:重点角色,根据用户输入的数字克隆盘子,并按照从大到小的顺序依次往上放,在移动的过程中,每次只能移动一个盘子,并且大盘子不能在小盘子上面;
  • 猫博士:用于提问并等待玩家的输入,当玩家输入数字后开始移动盘子;
  • 汉诺塔:作品的标题,显示在舞台上方。

要使用Scratch编程解决汉诺塔问题,需要借助递归的编程思想,考虑最简单的情况,如果只有一个盘子,那么直接从A移到C即可,如果超过一个盘子呢,比如盘子数为n,可以将(n-1)个盘子看成是一个整体,将其从A移到B,接着再将第n个盘子到从A移动C,然后再将(n-1)个盘子看成是一个整体,将其从B移到C即可,这部分的代码如下:

递归算法移动盘子
递归算法移动盘子

关于递归算法,这种解决问题的方法也只有计算机才喜欢,我们虽然看着代码很简单,但真要深入理解也是很费脑细胞的,不过递归确实有中数学上的简洁美和逻辑美,这也是编程中的一个难点,希望这个作品对你理解递归有所帮助。

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片