汉诺塔-Scratch婆罗贺摩塔问题

汉诺塔-51scratch
汉诺塔-Scratch婆罗贺摩塔问题
此内容为付费资源,请付费后查看
29.9
限时特惠
59.9
立即购买
您当前未登录!建议登陆后购买,可保存购买订单
付费资源
已售 3

作品介绍

传说越南河内某间寺院有三根银棒(A, B, C),上串64个金盘, 寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子,预言说当这些盘子移动完毕,世界就会灭亡, 这个传说叫做梵天寺之塔问题(Tower of Brahma puzzle),也叫婆罗贺摩塔问题。

如果考虑一下把64片金片,由一根针上移到另一根针上,并且始终保持上小下大的顺序,这需要多少次移动呢?

这里需要递归的方法。假设有n片,当n = 64时,需要2^64 – 1次移动(大约1.8 x 10^19),假如每秒钟移动一次,移完这些金片需要5845.42亿年以上,而地球存在至今不过45亿年,太阳系的预期寿命据说也就是数百亿年。真的过了5845.42亿年,不说太阳系和银河系,至少地球上的一切生命,都早已经灰飞烟灭。

今天我大家分享的Scratch作品是《汉诺塔》,这是一款益智创意游戏,游戏的目标就是要按照汉诺塔的规则,将一根柱子上的圆盘都移到另一根柱子上。

点击绿旗,运行程序,进入游戏封面,这里有三个按钮,表示三个不同的等级,其中Practice表示练习级别,只有3个圆盘,Normal表示正常级别,有5个圆盘,Master表示大师级,共有7个圆盘。点击按钮,进入游戏,按照规则来将左边柱子上的圆盘移到最右边柱子上,在移动的过程中,每次只能移动一个圆盘,并且只能将小圆盘放到大圆盘的上面,完成移动之后,游戏结束。

作品效果

Scratch汉诺塔作品的预览效果如视频所示:

Scratch汉诺塔作品效果

作品解读

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

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

本作品创作的关键点在于在移动的过程中,如何确保只能将小圆盘放到大圆盘的上面,这里借助了列表数据结构,针对三个柱子,可以定义3个列表,用来表示每根柱子上有哪些圆盘,每个圆盘都有一个数字对应,数字越大,圆盘就越大,在移动圆盘过程中,根据列表中的数据来确定是否可以移动,如果可以移动,则将圆盘放置到新的位置,同时更新列表中的数据,如图所示:

汉诺塔列表数据
汉诺塔列表数据

由于代码较多,这里就不再列出代码了,你可以下载作品源代码进行查看。

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

昵称

取消
昵称表情代码图片

    暂无评论内容