网易首页 > 网易号 > 正文 申请入驻

【壹零学院】Scratch制作游戏——汉诺塔

0
分享至

汉诺塔简介

汉诺塔(又称河内塔)游戏是来源于印度的一个古老传说:大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

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

神话故事本身我们不需要深究,不过根据故事中的规则计算,若每秒移动一次圆盘,完成移动需要连续不断地移动5845.54亿年以上,不管故事真假地球都早已毁灭了。那么如果是一个圆盘少一些的汉诺塔游戏,我们又需要移动多久呢?这里我们尝试按照传说中的汉诺塔规则,编写一个Scratch版本的汉诺塔游戏(图2)。

游戏规则与实现方法分析

1.汉诺塔规则:首先我们需要总结汉诺塔的核心规则:有三根柱子可以放入圆盘,每个圆盘大小不同;最开始所有圆盘按照从小到大的顺序放在第一根柱子上面,每根柱子上面的圆盘都只能小的在上面,大的在下面;每次只能移动一个圆盘。

2.规则的转化:三根柱子可以用三个列表来记录放入的圆盘;每个圆盘有独立的编号,编号需要和大小呈现正相关,方便比较大小;每次移动圆盘时,可以将圆盘数据放入一个变量中,一次只能放入一个圆盘的数据;放入圆盘时,将提起的圆盘数据变量与放下的柱子列表最小项进行比较,要小于列表最小项才可以放入列表。

3.程序框架搭建:游戏包含2个角色:向下箭头、圆盘(用画笔实时绘制);背景中绘制三根柱子。设定好各项变量:箭头位置、提起、项数。设定好列表:一、二、三、高度位置。游戏开始后用画笔工具按照变量列表值画出需要的圆盘,之后可以控制箭头选择圆盘提起和放下,每次对圆盘产生操作,都要重新绘制所有圆盘。背景可以参考图3自行绘制。

数据设定与导入

按照规划要求,我们需要三个柱子列表,这里取名“一、二、三”,另外需要确定圆盘的高度,游戏中我们只用五个圆盘,所以高度最多包含五项,将对应的圆盘y坐标写入“高度位置”列表中(写一个文本,然后手动导入到列表),第一个圆盘紧贴地面,之后每个圆盘之间的间隔距离为单个圆盘的高度,这里设为20。列表参考数值如图,第一个圆盘的y坐标以背景中基线为准自行测量(图4)。

将三个柱子列表清空后,将五个圆盘的宽度信息(项数×10)输入第一个列表中,需要注意从大到小输入,背景代码参考如图5:

画笔绘制刷新功能

圆盘使用画笔实时绘制,画笔角色不需要显示出来,可以绘制一个小圆点造型(如图6),将虚像调到最高让它隐形。当接收到广播“画出圆盘”时,先清空之前的笔迹(图7)。

然后开始绘制五个圆盘,圆盘位置由三个柱子列表提供x坐标(三根柱子分别为-155,0,155),“高度位置”列表提供y坐标。每个柱子需要绘制的圆盘个数由柱子列表的项数决定,需要注意的是:不同大小的圆盘,x坐标的偏差值不一样,列表能提供的x坐标是中心点坐标,需要向左右偏移圆盘宽度的一半。

同时,为了让圆盘与圆盘之间更容易区分,我们为每个圆盘设定不同的颜色,我们知道画笔颜色的数值范围是1-100,每个圆盘的大小差值为20,所以颜色可以设定为(项数X6),在第一个柱子上绘制圆盘的程序如图8。

接下来按照同样的方法绘制出第二和第三根柱子上的圆盘,x起始坐标改为0和155(图9)。

选择箭头的动作

1.选择箭头的移动:箭头角色在造型中直接导入Scratch自带素材(Arrow1-c)(图10)。

通过左右键控制变量“箭头位置”在1到3之间切换。按下右箭头键,“箭头位置”加1,按下左箭头键则相反。当“箭头位置”等于1的时候,表示移到了第一根柱子上方,当“箭头位置”等于2的时候,移到第二根柱子上方,当“箭头位置”等于3的时候,移到第三根柱子上方。为了让箭头在3个位置间循环,如果箭头位置大于3时,将箭头位置设为1,或者小于1时将箭头位置设为3(图11)。

设置箭头位置对应的x坐标(图12)。

2.提起圆盘:箭头在提起和放入圆盘功能之间循环,当完成“提起圆盘”后,才可开始“放入圆盘”;完成“放入圆盘”后,才可以“放入圆盘”。每完成一段操作,则广播画出圆盘。每次广播都需要等上一个广播内容完成,最开始还需要等待数据注入完成(图13)。

接收到广播“提起圆盘”后,为避免一次按键多次检测,我们加上一个等待0.5秒,提示用户按空格键提起圆盘。按下空格键后,还需保证当前箭头指向的柱子上存在圆盘,也就是对应列表的项数大于0,才可以将最上面的圆盘保存到变量“提起”中,然后停止这个脚本(图14)。

3.放入圆盘:放入圆盘的方法与提起圆盘类似,不同之处在于按下空格键后,如果当前箭头指向的柱子没有圆盘,也就是对应列表项数为0,则直接将提起的圆盘数据放入对应列表,并将变量“提起”设定为空,否则需要保证对应列表最后一项比提起的圆盘更大,否则不能放入指定列表。放入成功后停止这个脚本(图15)。

调试和小结

至此程序完成,测试完成无误后,调整好变量列表的显示与隐藏即可。我们通过对汉诺塔游戏规则的分拆解析,结合Scratch各模块功能,创建以画笔刷新屏幕改变显示效果的机制,完成了Scratch版本的汉诺塔游戏。通过这个游戏我们可以掌握画笔积木制作动画效果的方法、列表数据的提取和插入、变量储存位置的方法、调取列表最后项的方法等知识点。

测试完成后,在背景代码中添加调整变量和列表的显示与隐藏(图16)。

最后我们再思考一下,如果需要加入更多的圆盘该修改哪些地方呢,除了舞台背景中重复5次绘制的代码肯定要改成6,“高度位置”列表中要添加一个新的高度值外,还有其他地方需要修改吗(图17)?

如果完成游戏时如何判断游戏胜利并表示出来呢?可以添加一个表示胜利的背景(如图18)。那么你修改程序和我的一样吗(图19)?

想要记录操作步数,那么这个变量该怎么设置呢?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
重庆一工业园区发生火灾?官方辟谣

重庆一工业园区发生火灾?官方辟谣

极目新闻
2024-12-05 11:06:20
故事:男子93年在上海买6套别墅,遗忘20年后回国,竟当场愣住了

故事:男子93年在上海买6套别墅,遗忘20年后回国,竟当场愣住了

五元讲堂
2024-12-02 14:29:31
哈登生涯得分升至历史第17!卢:他的排名只会继续上升

哈登生涯得分升至历史第17!卢:他的排名只会继续上升

直播吧
2024-12-04 23:34:03
沙姆军离俄空军基地只有35公里!普京宁愿不打乌克兰也必救叙利亚

沙姆军离俄空军基地只有35公里!普京宁愿不打乌克兰也必救叙利亚

大风文字
2024-12-04 12:33:12
梅德韦杰夫升职,普京即将下台?俄同意无条件和谈,中方必须备战

梅德韦杰夫升职,普京即将下台?俄同意无条件和谈,中方必须备战

现代小青青慕慕
2024-12-04 09:02:54
曼联10号耍帅失败,40秒后丢球!阿莫林怒不可遏,传奇开炮

曼联10号耍帅失败,40秒后丢球!阿莫林怒不可遏,传奇开炮

叶青足球世界
2024-12-05 10:07:20
科大讯飞:与华为保持良好合作 为华为mate70中的基于大模型的方言自由说等功能提供相关技术支持

科大讯飞:与华为保持良好合作 为华为mate70中的基于大模型的方言自由说等功能提供相关技术支持

财联社
2024-12-04 22:42:07
当不成总统了?尹锡悦“政变”失败,弹劾将开始,朴槿惠有望报仇

当不成总统了?尹锡悦“政变”失败,弹劾将开始,朴槿惠有望报仇

贵州阿饽聊故事
2024-12-04 16:09:39
中国有两大致命缺口,一个是台湾,另一个曾要300万大军才能堵住

中国有两大致命缺口,一个是台湾,另一个曾要300万大军才能堵住

历史求知所
2024-11-29 12:50:03
鲍威尔表示,美国债务正走在不可持续的道路上,美联储在设定利率时从不考虑债务水平

鲍威尔表示,美国债务正走在不可持续的道路上,美联储在设定利率时从不考虑债务水平

每日经济新闻
2024-12-05 05:26:07
超大的巨型国家国土的缺陷:俄罗斯领土太严寒了,出海条件太差了

超大的巨型国家国土的缺陷:俄罗斯领土太严寒了,出海条件太差了

蜉蝣说
2024-12-03 16:27:28
深圳深江铁路施工现场发生地面坍塌 13人失联

深圳深江铁路施工现场发生地面坍塌 13人失联

财联社
2024-12-05 06:24:06
校园里有哪些既震撼又劲爆的八卦?和室友妈妈在一起那个很震撼

校园里有哪些既震撼又劲爆的八卦?和室友妈妈在一起那个很震撼

美好客栈大掌柜
2024-12-04 00:22:14
当不成总统了?普京给特朗普“提了一个醒”!拜登火速推翻承诺

当不成总统了?普京给特朗普“提了一个醒”!拜登火速推翻承诺

书房评天下
2024-12-05 09:54:08
张玉凤晚年写回忆录,揭露国家最高机密:毛主席并非宣传的那样

张玉凤晚年写回忆录,揭露国家最高机密:毛主席并非宣传的那样

谢小龙聊历史
2024-10-24 23:35:08
私处的毛毛到底要不要脱?

私处的毛毛到底要不要脱?

许超医生
2024-12-04 10:04:58
铁头同伙在日本开庭,称“不满日本排放核废水”,案发前夜3人在海鲜居酒屋聚餐……

铁头同伙在日本开庭,称“不满日本排放核废水”,案发前夜3人在海鲜居酒屋聚餐……

日本物语
2024-12-04 16:28:15
范冰冰饭局照流出,喝酒还吐舌头,素颜温婉大方,和妆后判若两人

范冰冰饭局照流出,喝酒还吐舌头,素颜温婉大方,和妆后判若两人

南城无双
2024-10-25 23:54:18
又一家云计算运营商因价格上涨900% 而放弃VMware

又一家云计算运营商因价格上涨900% 而放弃VMware

cnBeta.COM
2024-12-04 14:18:02
琼瑶离世留下25亿遗产如何分配?林青霞悼念说很后悔,林心如哭了

琼瑶离世留下25亿遗产如何分配?林青霞悼念说很后悔,林心如哭了

辣条小剧场
2024-12-04 22:10:16
2024-12-05 11:40:49
壹零社
壹零社
最新鲜的互联网产业资讯
2662文章数 1522关注度
往期回顾 全部

科技要闻

美国加大制裁之时 中国半导体出口破万亿

头条要闻

牛弹琴:尹锡悦政治生命已基本结束 可能比朴槿惠更惨

头条要闻

牛弹琴:尹锡悦政治生命已基本结束 可能比朴槿惠更惨

体育要闻

哈登,我不做大哥好多年

娱乐要闻

琼瑶尸检结果:一氧化碳中毒窒息而亡

财经要闻

代表青春的人人网,怎么“又”凉了?

汽车要闻

表现够全能 柴油版二代哈弗H9或许更适合家用

态度原创

时尚
教育
健康
本地
公开课

这些穿搭好适合50岁的女性,简约又高级,这样搭配时尚有质感

教育要闻

动点定值问题,突破压轴题就四个字,胆大心细!

花18万治疗阿尔茨海默病,值不值?

本地新闻

云游中国|来伦布夏果感受充满Passion的人生

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版