欢迎光临散文网 会员登陆 & 注册

什么?Scratch也能做原琴谱面转换器?(附Scratch下载文件)

2023-03-11 17:52 作者:烟绯老师诶嘿嘿  | 我要投稿

一、字母转数字

程序块总览

好的,我们来分块将这些程序块的逻辑进行分析

初始化及扫描

首先,谱面转换器的本质工作是将字母(字符)替换为对应的数字(字符),这里使用的方法是通过“加载进度”这一变量来告诉程序要判定的是哪个字符,然后通过后面的判定模块对特定的字符进行判定。

For Example:

1.点击绿旗

2.初始化(即清空“输出”列表,将“加载进度”设为1)

3.询问“谱”

4.输入“ABCD”字符

5.得到字符总数为4

6.广播“消息1”并将“加载进度”变量增加1(此程序运行字符总数次(四次))

判定模块(没有放完全,后面的同理套娃)

为了让所有的判定模块同时运行(不同时会出bug),这里采用以接收广播“消息1”的方式来同时启动21个判定的模块,理论上,这些判定模块会同时判定同一个字符,并将此字符对应的数字写入“输出”列表

For Example:

7.接收到广播“消息1”

8.21个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为初始值1)个字符进行判定

9.判定字符“A”的模块判定为真,将“A”所对应的数字“1”加入“输出”列表

10.接收到第二次广播“消息1”

11.21个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为2)个字符进行判定

12.判定字符“B”的模块判定为真,将“B”所对应的数字“-5”加入“输出”列表

13.接收到第三次广播“消息1”

14.21个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为3)个字符进行判定

15.判定字符“C”的模块判定为真,将“C”所对应的数字“-3”加入“输出”列表

16.接收到第四次广播“消息1”
17.21个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为4)个字符进行判定
18.判定字符“D”的模块判定为真,将“D”所对应的数字“3”加入“输出”列表

19.此时扫描程序不再广播“消息1”(只会广播4次),程序结束


那到这里哎估计就看明白了,我输入多少个字符,就会进行多少次的判定,这个程序就会套娃多少次,而每一次套娃都会让“加载进度”模块增加1,套娃的次数为字符总数,即增加量为字符总数,所以“加载进度”变量的最终数字为“字符总数+1”


 以上即为字母转数字的全部逻辑(也许你们看明白了罢)

二、数字转字母

程序总览

好的,我们来分块将这些程序块的逻辑进行分析

初始化及扫描

这一块的内容与字母转数字一样,我就复制黏贴一下吧

For Example:

1.点击绿旗

2.初始化(即清空“输出”列表,将“加载进度”设为1,将“正负号判定”设为0)

3.询问“谱”

4.输入“+11-22”字符

5.得到字符总数为6

6.广播“消息1”并将“加载进度”变量增加1(此程序运行字符总数次(六次))

判定模块(同理没有放完全,后面都是套娃)

那么后边的判定模块我们来重点分析,当判定正号的模块判定到“+”,它会将“正负号的判定”设为2,当判定数字的模块判定到对应的数字,又会启动下一级的判定(即根据“正负号判定”来判定正负号),并把对应的字母写进“输出”列表。

For Example:

7.接收到广播“消息1”

8.10个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为初始值1)个字符进行判定
9.判定字符“+”的模块判定为真,将“正负号判定”设为2

10.接收到第二次广播“消息1”
11.10个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为2)个字符进行判定
12.判定字符“1”的模块判定为真,广播“1”

13.接收到广播“1”

14.3个次级的判定模块启动

15.判定“正负号判定”为2的模块判定为真,将代表“+1”的Q写入“输出”列表,并将“正负号判定”设为0

16.接收到第三次广播“消息1”

17.10个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为3)个字符进行判定
18.判定字符“1”的模块判定为真,广播“1”

19.接收到广播“1”

20.3个次级的判定模块启动

21.判定“正负号判定”为0的模块判定为真,将代表“1”的“A”写入“输出”列表

22.接收到第四次广播“消息1”

23.10个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为4)个字符进行判定
24.判定字符“-”的模块判定为真,将“正负号判定”设为1

25.接收到第五次广播“消息1”
26.10个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为5)个字符进行判定
27.判定字符“2”的模块判定为真,广播“2”

28.接收到广播“2”

29.3个次级的判定模块启动

30.判定“正负号判定”为1的模块判定为真,将代表“-2”的X写入“输出”列表,并将“正负号判定”设为0

31.接收到第六次广播“消息1”

32.10个判定模块同时启动,对字符串中第“加载进度”(此时“加载进度”为6)个字符进行判定
33.判定字符“2”的模块判定为真,广播“2”

34.接收到广播“2”

35.3个次级的判定模块启动

36.判定“正负号判定”为0的模块判定为真,将代表“2”的S写入“输出”列表

37.此时扫描程序不再广播“消息1”(只会广播6次),程序结束

那么到这里整个程序的分析就结束了,这应该大概或许能看懂罢,这看不懂额,我也没有什么更好的办法了就尽量理解吧,我尽力了qaq

欸嘿!~~~知道你在找什么~文件的下载链接在这儿(附有Scratch下载文件哦!)

链接:https://pan.baidu.com/s/1BUdKJCPkrqJv44yGb7P4RQ 

有需要的可以关注私信问我要提取码,感谢支持!


什么?Scratch也能做原琴谱面转换器?(附Scratch下载文件)的评论 (共 条)

分享到微博请遵守国家法律