抽籤 ( 可調整總數、中籤數 )
這篇教學會利用 Scratch 角色的造型與變數的調整滑桿,搭配「區域變數」、「全域變數」和「廣播」,製作可以自行設定抽籤總數,以及中籤數量的抽籤小遊戲。
快速導覽:
繪製角色造型
使用「繪畫」工具建立「籤」的角色「straw」,角色有兩個造型,第一個造型是「no」表示「沒有中籤」,內容為一根水平的長方形,第二個造型是「yes」表示「中籤」,跟「no」的差異在於長方形左側有一個紅色圓形,內容有一個順時針旋轉 90 度的「中」字,整體造型位置對齊畫布中心。
使用「繪畫」工具建立「顯示結果」的角色「text」,角色有兩個造型,第一個造型是「no」表示「沒有中籤」,內容為大型的文字「沒中」,第二個造型是「yes」表示「中籤」,內容為大型的文字「抽中啦」,整體造型位置對齊畫布中心。
使用「繪畫」工具建立「設定按鈕」的角色「setting」,使用灰色黑框長方形,內容有文字 SETTING,整體造型位置對齊畫布中心。
使用「繪畫」工具建立「設定面板」的角色「board」,使用淺色黑邊長方形為底,上方有標題文字以及「抽籤總數」和「中籤數」兩組文字,文字下方預計放入有調整滑桿的變數,整體造型位置對齊畫布中心。
使用「繪畫」工具建立「關閉面板按鈕」的角色「close」,使用圓形搭配直線畫出關閉的造型,整體造型位置對齊畫布中心。
使用「繪畫」工具建立「確認設定按鈕」的角色「submit」,使用橘色黑框長方形,內容有文字 SUBMIT,整體造型位置對齊畫布中心。
抽籤畫面預計分成兩種,第一種是「正在抽籤」的畫面,各個角色排列如下圖:
第二種是「設定」的畫面,各個角色排列如下圖:
積木程式原理 ( straw )
前往「straw」角色,這個角色是最重要的「籤」,點擊綠旗時設定變數總籤數 total 為 10,中籤數 total_ok 為 2,接著廣播 clear 訊息負責刪除舞台上的抽籤分身,等待分身都刪除後廣播 submit 訊息。
收到 submit 訊息,先設定變數 x 為 -200,這個變數表示籤的水平座標可以動態更改,如果籤小於 10 支,就根據籤的數量動態改變 x 內容,最後透過定位的方式設定第一支籤的位置。
新增「中籤號碼」函式,勾選「執行完畢再更新畫面」,預計執行後會產生中籤的號碼。
「中籤號碼」函式內容裡,先判斷如果中籤數 total_ok 小於總籤數 total,就將 total_ok 設定為 total 的數值 ( 避免中籤數大於總籤數 ),接著新增清單 ok_number,使用「重複...直到」積木,產生隨機數之後,判斷如果清單中沒有產生的數字,就將該數字寫入清單,直到清單長度等於中籤數為止,如此一來就能使用 ok_number 清單儲存中籤的號碼。
新增「分身」函式,勾選「執行完畢再更新畫面」,預計執行後會根據 total 和 total_ok 的數值,產生對應數量的分身。
「分身」函式內容裡,先設定一個變數 n,接著根據籤的總數進行重複,每次重複時將 n 增加 1,並判斷 ok_number 清單裡是否有 n 的數值,如果有,就將籤改為中籤的造型,如果沒有就保持沒有中籤的造型,此外,也可以透過位置和亮度的調整,讓每一籤都有點不同,也可以運用簡單的數學公式,每支籤排列時都會帶有一些旋轉的角度。
設定點擊角色的程式 ( 點擊角色支援點擊分身 ),點擊籤的角色時,除了設定圖層往前以及亮度之外,運用移動積木將籤往上移動產生「抽籤」效果,並根據籤的造型決定是否中籤,如果中籤就發送 yes 訊號,如果沒有中籤就發送 no,除此之外,當收到 clear 訊號後,刪除分身 ( 所有分身都會收到訊號,收到後就會將自己刪除 )。
編輯收到 submit 訊息的程式,在最後方依序執行「中籤號碼」和「分身」函式。
到這個階段,點擊綠旗後應該就可以看見基本的抽籤效果。
積木程式原理 ( text )
前往「text」角色,這個角色會使用大型文字顯示是否中籤,點擊綠旗時隱藏角色,收到 yes 或 no 訊號時,顯示造型並切換為 yes 或 no 的造型,三秒後再度隱藏角色,如果收到 submit 訊號,立刻終止所有的等待過程,隱藏角色。
積木程式原理 ( setting )
前往「setting」角色,這個角色是「設定按鈕」,點擊後會開啟設定面板設定中籤數和總數,點擊綠旗時顯示角色,點擊角色後會發送 setting 訊號並隱藏角色,收到 submit 和 close 訊號時會再度顯示角色。
積木程式原理 ( board )
前往「board」角色,這個角色是「設定面板」,面板中除了說明文字,還會包含具備拖拉滑桿的變數,點擊綠旗以及收到 submit、close 訊號時,隱藏角色以及隱藏 total 和 total_ok 變數,收到 setting 訊號時,顯示角色、total 和 total_ok 變數,並發送 show 訊號 ( 面板上的按鈕會接收 show 訊號,避免被面板蓋住 )。
當變數出現在舞台上後,用滑鼠在變數上按「右鍵」,將變數設定為「滑桿」,就能讓使用者自行調整數值。
點擊「變更滑桿數值範圍」,將 total 變數範圍設定 2~20,total_ok 變數範圍設定為 1~20。
積木程式原理 ( close )
前往「close」角色,這個角色是「關閉按鈕」,點擊後會關閉設定面板,設定點擊綠旗、角色點擊以及收到 submit 訊號時隱藏角色,收到 show 訊號時顯示角色,並將角色的圖層設定到最前方。
積木程式原理 ( submit )
前往「submit」角色,這個角色是「確認設定按鈕」,點擊後會重新設定 total 和 total_ok 變數,並根據變數產生對應的畫面,收到 show 訊號時顯示角色並將角色的圖層設定到最前方,點擊綠旗、收到 close 和點擊角色時隱藏角色,但在點擊角色時,必須使用「廣播訊息並等待」,確保收到 clear 訊號的動作都完成後,再發送 submit 訊號 ( 避免畫面上還有前一次的分身 )。
完成效果
所有角色的程式都完成後,點擊綠旗,舞台上會根據設定出現 2~20 支籤,就能夠開始進行抽籤的小遊戲囉。
範例解答
範例解答:抽籤 ( 可調整總數、中籤數 )
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~