雲端變數記錄文字
雖然 Scratch 的雲端變數限制只能紀錄「數字」,但仍然可以透過一些程式的轉換,讓雲端變數可以記錄「文字」,近一步傳送文字,這篇文章將會透過函式、清單、變數、字串組合...等積木,實作使用雲端變數記錄文字的方式。
雲端變數記錄文字原理
雲端變數可以記錄最多 256 個數字,將數字兩個兩個一組,可以產生最多 128 個「二位」數字 ( 01、02、11、28、99...等 ),透過這些數字,就可以從指定的「文字清單」裡,找到對應的文字或標點符號,轉換後就能變成對應的數字。
下圖的例子,假設雲端變數存有一組數字 0116161205,透過文字清單轉換後,就會得到 apple 的文字。
積木程式原理 ( 建立對照清單 )
點擊貓咪角色,從左側積木清單,新增 n、source 兩個變數,以及一個 abc 清單。
- 變數 n:取出 source 每個字元使用的變數。
- 變數 source:要轉換的所有英文字母和符號。
- 清單 abc:記錄字母和符號的對照清單。
設定點擊綠旗時 source 變數的內容為 26 個英文字母小寫、26 個英文字母大寫、標點符號和一個空白 ( 可以複製下方整串文字貼上 )。
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_ -+={}[]|"';:>.<,?/1234567890
繼續編輯點擊綠旗程式:
- 設定變數 n 為 1,表示從第一個字開始。
- 清空 abc 清單的內容。
- 使用重複積木,source 的內容有多少個字,就重複幾次。
- 每次重複將取得的字,一一加入 abc 清單中。
- 每次重複將 n 增加 1。
完成後,點擊綠旗,就會看見 abc 清單裡,出現 94 個項目。
積木程式原理 ( 編碼函式 )
新增一個名為「編碼」的函式,負責將「輸入的文字轉換成數字」,函式包含一個 input 參數,勾選「執行完畢再更新畫面」。
新增一個變數 code,記錄轉換後的數字代碼。
編輯「編碼」函式內容:
- 設定變數 n 為 1,表示從輸入的第一個字開始。
- 設定變數 code 為「空」值 ( 不包含任何空白 )。
- 使用重複積木,輸入的內容有幾個字 ( 字母或符號 ),就重複幾次,每次重複執行:
- 判斷該文字在 abc 清單裡的編號,如果編號小於 10,就將 code 設定為「code 組合 0 + 編號」。
- 如果編號大於等於 10,就將 code 設定為「code 組合編號」。
- 將 n 增加 1。
因為使用雲端變數紀錄的數字,採用兩個為一單位,例如字母 a 對應的編號是 1,紀錄時必須轉換成 01。
積木程式原理 ( 解碼函式 )
新增一個名為「解碼」的函式,負責將「雲端變數的數字轉換成文字」,函式包含一個 input 參數,勾選「執行完畢再更新畫面」。
新增一個變數 output,記錄轉換數字之後的文字。
編輯「解碼」函式內容:
- 設定變數 n 為 1,表示從輸入的第一個字開始。
- 設定變數 code 為「空」值 ( 不包含任何空白 )。
- 設定變數 source 為「空」值 ( 不包含任何空白 )。
- 使用重複積木,需要解碼的數字有幾個字,就重複幾次,每次重複執行:
- 設定 code 為「code 組合數字的第 n 個字」。
- 判斷如果 n 除以 2 的餘數等於 0,表示可以被 2 整除,將 output 設定為 code 的內容,並變數 code 為「空」值。
- 將 n 增加 1。
因為需要解碼的數字兩兩一組,使用 2 的倍數就能夠一次取出兩個數字進行組合。
積木程式原理 ( 雲端變數 )
新增一個雲端變數 msg。
修改點擊綠旗的程式:
- 加入重複無限次積木。
- 每次重複詢問使用者,要求使用者輸入文字,預設顯示 output 的內容。
- 輸入文字後,執行編碼函式,將文字轉換成數字。
- 使用雲端變數 msg 記錄數字。
- 廣播訊息 ok。
當收到 ok 訊息時,執行解碼函式,將數字轉換成文字,接著讓貓咪說出文字。
完成效果
完成後,點擊綠旗,輸入「英文字」或「標點符號」,會看見雲端變數記錄了一串數字,經過轉換,貓咪會講出正確的文字。
範例解答
範例解答:雲端變數記錄文字
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~