什么?Scratch也能做原琴譜面轉(zhuǎn)換器?(附Scratch下載文件)

一、字母轉(zhuǎn)數(shù)字
程序塊總覽







好的,我們來分塊將這些程序塊的邏輯進(jìn)行分析

首先,譜面轉(zhuǎn)換器的本質(zhì)工作是將字母(字符)替換為對應(yīng)的數(shù)字(字符),這里使用的方法是通過“加載進(jìn)度”這一變量來告訴程序要判定的是哪個字符,然后通過后面的判定模塊對特定的字符進(jìn)行判定。
For Example:
1.點(diǎn)擊綠旗
2.初始化(即清空“輸出”列表,將“加載進(jìn)度”設(shè)為1)
3.詢問“譜”
4.輸入“ABCD”字符
5.得到字符總數(shù)為4
6.廣播“消息1”并將“加載進(jìn)度”變量增加1(此程序運(yùn)行字符總數(shù)次(四次))

為了讓所有的判定模塊同時運(yùn)行(不同時會出bug),這里采用以接收廣播“消息1”的方式來同時啟動21個判定的模塊,理論上,這些判定模塊會同時判定同一個字符,并將此字符對應(yīng)的數(shù)字寫入“輸出”列表
For Example:
7.接收到廣播“消息1”
8.21個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為初始值1)個字符進(jìn)行判定
9.判定字符“A”的模塊判定為真,將“A”所對應(yīng)的數(shù)字“1”加入“輸出”列表
10.接收到第二次廣播“消息1”
11.21個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為2)個字符進(jìn)行判定
12.判定字符“B”的模塊判定為真,將“B”所對應(yīng)的數(shù)字“-5”加入“輸出”列表
13.接收到第三次廣播“消息1”
14.21個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為3)個字符進(jìn)行判定
15.判定字符“C”的模塊判定為真,將“C”所對應(yīng)的數(shù)字“-3”加入“輸出”列表
16.接收到第四次廣播“消息1”
17.21個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為4)個字符進(jìn)行判定
18.判定字符“D”的模塊判定為真,將“D”所對應(yīng)的數(shù)字“3”加入“輸出”列表
19.此時掃描程序不再廣播“消息1”(只會廣播4次),程序結(jié)束
那到這里哎估計(jì)就看明白了,我輸入多少個字符,就會進(jìn)行多少次的判定,這個程序就會套娃多少次,而每一次套娃都會讓“加載進(jìn)度”模塊增加1,套娃的次數(shù)為字符總數(shù),即增加量為字符總數(shù),所以“加載進(jìn)度”變量的最終數(shù)字為“字符總數(shù)+1”
?以上即為字母轉(zhuǎn)數(shù)字的全部邏輯(也許你們看明白了罷)

二、數(shù)字轉(zhuǎn)字母
程序總覽








好的,我們來分塊將這些程序塊的邏輯進(jìn)行分析

這一塊的內(nèi)容與字母轉(zhuǎn)數(shù)字一樣,我就復(fù)制黏貼一下吧
For Example:
1.點(diǎn)擊綠旗
2.初始化(即清空“輸出”列表,將“加載進(jìn)度”設(shè)為1,將“正負(fù)號判定”設(shè)為0)
3.詢問“譜”
4.輸入“+11-22”字符
5.得到字符總數(shù)為6
6.廣播“消息1”并將“加載進(jìn)度”變量增加1(此程序運(yùn)行字符總數(shù)次(六次))

那么后邊的判定模塊我們來重點(diǎn)分析,當(dāng)判定正號的模塊判定到“+”,它會將“正負(fù)號的判定”設(shè)為2,當(dāng)判定數(shù)字的模塊判定到對應(yīng)的數(shù)字,又會啟動下一級的判定(即根據(jù)“正負(fù)號判定”來判定正負(fù)號),并把對應(yīng)的字母寫進(jìn)“輸出”列表。
For Example:
7.接收到廣播“消息1”
8.10個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為初始值1)個字符進(jìn)行判定
9.判定字符“+”的模塊判定為真,將“正負(fù)號判定”設(shè)為2
10.接收到第二次廣播“消息1”
11.10個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為2)個字符進(jìn)行判定
12.判定字符“1”的模塊判定為真,廣播“1”
13.接收到廣播“1”
14.3個次級的判定模塊啟動
15.判定“正負(fù)號判定”為2的模塊判定為真,將代表“+1”的Q寫入“輸出”列表,并將“正負(fù)號判定”設(shè)為0
16.接收到第三次廣播“消息1”
17.10個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為3)個字符進(jìn)行判定
18.判定字符“1”的模塊判定為真,廣播“1”
19.接收到廣播“1”
20.3個次級的判定模塊啟動
21.判定“正負(fù)號判定”為0的模塊判定為真,將代表“1”的“A”寫入“輸出”列表
22.接收到第四次廣播“消息1”
23.10個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為4)個字符進(jìn)行判定
24.判定字符“-”的模塊判定為真,將“正負(fù)號判定”設(shè)為1
25.接收到第五次廣播“消息1”
26.10個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為5)個字符進(jìn)行判定
27.判定字符“2”的模塊判定為真,廣播“2”
28.接收到廣播“2”
29.3個次級的判定模塊啟動
30.判定“正負(fù)號判定”為1的模塊判定為真,將代表“-2”的X寫入“輸出”列表,并將“正負(fù)號判定”設(shè)為0
31.接收到第六次廣播“消息1”
32.10個判定模塊同時啟動,對字符串中第“加載進(jìn)度”(此時“加載進(jìn)度”為6)個字符進(jìn)行判定
33.判定字符“2”的模塊判定為真,廣播“2”
34.接收到廣播“2”
35.3個次級的判定模塊啟動
36.判定“正負(fù)號判定”為0的模塊判定為真,將代表“2”的S寫入“輸出”列表
37.此時掃描程序不再廣播“消息1”(只會廣播6次),程序結(jié)束

那么到這里整個程序的分析就結(jié)束了,這應(yīng)該大概或許能看懂罷,這看不懂額,我也沒有什么更好的辦法了就盡量理解吧,我盡力了qaq


欸嘿!~~~知道你在找什么~文件的下載鏈接在這兒(附有Scratch下載文件哦!)
鏈接:https://pan.baidu.com/s/1BUdKJCPkrqJv44yGb7P4RQ?
有需要的可以關(guān)注私信問我要提取碼,感謝支持!