用scratch编写游戏-数字华容道

由于疫情,只能在家,外孙女要学scratch,先学了南海出版社的“编程真好玩”,然后和外孙女一起用scratch编了一些游戏,想把编写步骤和设计思想写出来,和大家交流。刚编了“数字华容道”,就先说它吧。
游戏初始,写有数字的方块(简称:数字块)随机摆放如图1所示。单击和空白块相邻的数字块,图1中是块5、块6、块2和块8,数字块移到空白块处,用此法移动数块,最后成为图2所示,就算赢了。
在这里插入图片描述
图1
在这里插入图片描述
图2
有8个数字块和一个空白块(数字块9,但不显数字),共9块,按照3行3列规格排列,如图1所示,每个数字块和空白块可放在9个位置中的任意位置,因此要用列表记录每一位置,块位置编号如图2所示。建立两个列表:块可放位置X,块可放位置Y,分别记录位置的X和Y坐标,列表的序号(第几项)就是块位置编号如图2,例如,列表的第5个数据存放的是位置5处的坐标。程序开始就要初始化“块可放位置X”、“块可放位置Y”。程序中,每个数字块和空白块大小为:100*100,其中心在对角线交点处,程序设计的要求块之间没有空隙,后边介绍原因,这里是让两个块之间有1-2单位重合。第2列,即2、5和8号数字块,X坐标都是0,那么,第1列都是-99,第3列都是99。第2行,即4、5和6号数字块,Y坐标都是0,第1行都是98,第3行都是-98。其初始化程序如下:
在这里插入图片描述
还要建立一个列表:块初始位置,用来记录每个数字块和空白块放在哪一个位置上,其序号(第几项)代表数字块的编号,所存数据是列表“块可放位置X”和“块可放位置Y的序号。举例说明,图1中,编号为1的数字块放在位置9上,那么,列表块初始位置”中序号为1(第1项)所存数据应为9,即是说编号为1的数字块的X、Y坐标分别是列表数据是“块可放位置X”和“块可放位置Y”的第9项(序号9)的数据,即两个列表所存的X、Y坐标。游戏初始数字块要随机摆放,实现的方法是让列表“块初始位置”中的数据是随机的。本例实现方法是,首先用循环方法在列表“块初始位置”中顺序填入9、8…2、1,共9个数。然后用随机数发生器从1到9中生成随机数作为序号,把最后一项(第9项)的数据取出插入到该序号数据前边,然后删除最后数据。重复9次。最后,广播初始位置消息,让每个数字块和空白块移动到列表“块初始位置”中指定的位置。这段脚本如下。这段脚本和前一段脚本放在背景处。
在这里插入图片描述
每个数字块和空白块接到“初始位置”消息时的脚本如下,这是数字块1的脚本。注意不同编号的块第1条脚本中数字不同,它应是数字块自己的编号,例如数字块2,则下图中的1改为2。下边第2段脚本只有数字块1有,其它数字块没有,用来提示如何玩这个游戏。脚本如下:
在这里插入图片描述
单击数字块,每个数字块要响应这个事件,移动数字块。第1步,要判断自己和空白块是否相邻,由于块之间没有空隙,所以只要判断是否碰到数字块9,如果是真,则要把自己和空白块位置互换。例如图1中,如单击了数字块5,则要把列表“块初始位置”中第5项数据和第9项数据交换。最后广播“初始位置”消息,完成数据块移动。移动了数字块,就要判断是否数字块和空白块按图2排列,判断方法是查看列表“块初始位置”中从第1项到第9项的数据是否依次为1、2…8、9,如是则胜利了。脚本如下。注意,空白块只响应“初始位置”消息的脚本。为了避免空白块的4个角和其对角线的上的数字块相碰,例如图1中的空白块和块5、块6、块2、块8,要把空白块的四个角变为圆角。这是数字块1的脚本,其他数字块则要做相应修改。
在这里插入图片描述
这个脚本积木块用来判断数字块和空白块是否按图2排列。如果有一个位置不对,停止这个脚本将从这个积木块退出,此时变量N一定小于10,只有位置全对,N才等于10.
在这里插入图片描述
提醒一下,最好先画数字块1的图形,为其设计脚本。用拷贝的方法创建其它数字块和空白块,修改几个数字,空白块删除不用的脚本即可。水平有限,欢迎大家指导。下载地址:
https://download.csdn.net/download/geng_zhaoying/12345302

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值