电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

类型scratch3下的汉诺塔游戏设计

收藏

编号:347369891    类型:共享资源    大小:1.26MB    格式:DOCX    上传时间:2023-03-14
  
10
金贝
分享到微信 分享到微博 分享到QQ空间
关 键 词:
scratch3 汉诺塔 游戏
资源描述:
scratch3的汉诺塔游戏设计和实现 汉诺塔游戏可以描述为:假设有三根柱子A、B和C,A从上到下叠放着从小到大的一定数量的圆盘,现在需要将A上面的盘子按照原样移动到另一根柱子上(这里设为C)。移动规则是:一次只能在两根柱子之间移动一个圆盘,小圆盘只能放在大圆盘的上面。如果盘子数量是n,那么最少的移动次数为2n-1,当n=64是,需要移动 18446744073709551615 次。图1是最后完成的scratch3汉诺塔游戏启动界面,图2是游戏过程中的的一个界面,图3是游戏完成后的界面。 图1 汉诺塔游戏启动界面 在图1下部有6个移动按钮,用户通过点击6个移动按钮来移动不同柱子上的盘子。点击 ,将第1个柱子上的最上面的圆盘移动到第2个柱子的最上面(不符合汉诺塔移动规则时,用户点击没有任何反应),其他5个按钮类似。盘子数量可以进行设置,这里规定的最大盘子数是6(下面有介绍,与你做的角色造型多少相对应),也就是说盘子数量可以设置为1、2、3、4、5和6。 图2 游戏过程中间的的一个界面 图3 游戏过程中间的的一个界面 在图3中,隐藏6个移动按钮,并告诉用户已经完成的提示信息“恭喜你,已经完成了游戏!”。下面分别叙述整个游戏的制作流程。 一、 设计舞台和角色 舞台设计比较简单,在舞台中间放3根柱子即可。设计1个角色,整个角色包含12个造型。前6个造型分别表示6个盘子(本游戏设计为最大盘子数量为6),后6个造型分别表示6个按钮。第1个盘子的造型如下: 图4 第1个盘子的造型 第1个盘子的造型名称为1,后面5个盘子的造型名称分别是2、3、4、5、6,造型名称在代码中需要用到。盘子造型的宽度依次递增20,高度保持不变:第1个盘子的大小是50X28,第2个盘子的大小是70X28,依次类推。 第1个按钮(角色的第7个造型)的造型如下: 图5 第1个按钮造型 第1个按钮的造型名称为12,12表示从第1根柱子移动到第2根柱子,这种命名规范在编程中用起来方便,且便于记忆, 后面5个按钮的造型名称分别是13、21、23、31、32。这6个按钮造型的大小相同,都是71X30。 二、 初始界面和初始数据的设定 游戏的初始界面如图1所示。初始变量是建立三个列表变量:list1、list2和list3,分别对应当前的三根柱子包含的盘子情况,3个列表包含的初始数据如图6所示: 图6 3个列表的初始数据 该部分的相关代码如下: 在上面的代码中,建立了一个局部变量:我的盘子编号,来区分1个角色的不同克隆体,6个按钮也用这个局部变量来区分。 三、 建立【移动盘子】的函数(自制积木)和【显示当前场景】的函数(自制积木) 【移动盘子】函数主要功能是:当盘子从number1(柱子)移动到number2(柱子)时,改变对应柱子的列表(数据),同时发送一个消息给角色(所有克隆体)。 【显示当前场景】函数主要功能是:根据当前3根柱子对应的列表(数据),在舞台上显示当前场景。 【移动盘子】的函数主要算法是: 当number1=list1时,求出第1个不等于0的列表项swap1;当number2=list2时,求出第1个不等于0的列表项swap2,如果swap2>swap1,将swap1加入list2,list1对应的列表项赋值为0,否则list1和list2均不改变;当number2=list3时,同number2=list2。 当number1=list2,number2=list1或者list3,算法同number1=list1; 当number1=list3,number2=list1或者list2,算法同number1=list1。 这里需要保存3个全局变量,分别是:保存的被移动柱子编号,保存的被移动盘子编号,能移动盘子,这3个全部变量用于后面的显示。 【移动盘子】函数代码如下: 【显示当前场景】函数的主要算法是:利用移动盘子函数产生的2个全局变量(保存的被移动盘子编号和保存的被盘子编号),计算被移动盘子要去的目标X坐标和Y坐标。至于哪个盘子(克隆体需要移动),在后面调用显示当前场景函数的时候,利用保存的被移动盘子编号与克隆体编号匹配来决定; 【显示当前场景】函数的代码如下: 四、建立【判断是否完成】的函数(自制积木) 算法比较简单,list3的盘子数量是否等于初始设定的盘子数量,该函数需要包含一个全部变量:是否完成,用于判断游戏的终止及给用户的提示信息。 五、按钮(角色)被点击的代码 按钮被点击的代码如下: 六、按钮点击后的消息处理 当按钮被点击后,调用【移动盘子】函数,广播【三个列表已经被更新】的消息,所有还需要定义接收到消息后的处理代码,在处理代码中调用【显示当前场景】、【判断是否完成】函数。如果游戏已经完成,给用户发提示信息,同时删除6个按钮对应的克隆体。 具体代码如下: 七、代码包含的变量、列表和自制积木(函数)
展开阅读全文
提示  金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:scratch3下的汉诺塔游戏设计
链接地址:https://www.jinchutou.com/shtml/view-347369891.html
关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.