搜尋

抽籤 ( 可調整總數、中籤數 )

這篇教學會利用 Scratch 角色的造型與變數的調整滑桿,搭配「區域變數」、「全域變數」和「廣播」,製作可以自行設定抽籤總數,以及中籤數量的抽籤小遊戲。

快速導覽:

繪製角色造型

使用「繪畫」工具建立「籤」的角色「straw」,角色有兩個造型,第一個造型是「no」表示「沒有中籤」,內容為一根水平的長方形,第二個造型是「yes」表示「中籤」,跟「no」的差異在於長方形左側有一個紅色圓形,內容有一個順時針旋轉 90 度的「中」字,整體造型位置對齊畫布中心。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用「繪畫」工具建立「籤」的角色

使用「繪畫」工具建立「顯示結果」的角色「text」,角色有兩個造型,第一個造型是「no」表示「沒有中籤」,內容為大型的文字「沒中」,第二個造型是「yes」表示「中籤」,內容為大型的文字「抽中啦」,整體造型位置對齊畫布中心。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用「繪畫」工具建立「顯示結果」的角色

使用「繪畫」工具建立「設定按鈕」的角色「setting」,使用灰色黑框長方形,內容有文字 SETTING,整體造型位置對齊畫布中心。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用「繪畫」工具建立「設定按鈕」的角色

使用「繪畫」工具建立「設定面板」的角色「board」,使用淺色黑邊長方形為底,上方有標題文字以及「抽籤總數」和「中籤數」兩組文字,文字下方預計放入有調整滑桿的變數,整體造型位置對齊畫布中心。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用「繪畫」工具建立「設定面板」的角色

使用「繪畫」工具建立「關閉面板按鈕」的角色「close」,使用圓形搭配直線畫出關閉的造型,整體造型位置對齊畫布中心。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用「繪畫」工具建立「關閉面板按鈕」的角色

使用「繪畫」工具建立「確認設定按鈕」的角色「submit」,使用橘色黑框長方形,內容有文字 SUBMIT,整體造型位置對齊畫布中心。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用「繪畫」工具建立「送出設定按鈕」的角色

抽籤畫面預計分成兩種,第一種是「正在抽籤」的畫面,各個角色排列如下圖:

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 「正在抽籤」的畫面

第二種是「設定」的畫面,各個角色排列如下圖:

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 「設定」的畫面

積木程式原理 ( straw )

前往「straw」角色,這個角色是最重要的「籤」,點擊綠旗時設定變數總籤數 total 為 10,中籤數 total_ok 為 2,接著廣播 clear 訊息負責刪除舞台上的抽籤分身,等待分身都刪除後廣播 submit 訊息

收到 submit 訊息,先設定變數 x 為 -200,這個變數表示籤的水平座標可以動態更改,如果籤小於 10 支,就根據籤的數量動態改變 x 內容,最後透過定位的方式設定第一支籤的位置

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 根據籤的數量動態改變 x 內容

新增「中籤號碼」函式,勾選「執行完畢再更新畫面」,預計執行後會產生中籤的號碼。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 新增「中籤號碼」函式

「中籤號碼」函式內容裡,先判斷如果中籤數 total_ok 小於總籤數 total,就將 total_ok 設定為 total 的數值 ( 避免中籤數大於總籤數 ),接著新增清單 ok_number,使用「重複...直到」積木,產生隨機數之後,判斷如果清單中沒有產生的數字,就將該數字寫入清單,直到清單長度等於中籤數為止,如此一來就能使用 ok_number 清單儲存中籤的號碼

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用清單儲存中籤的號碼

新增「分身」函式,勾選「執行完畢再更新畫面」,預計執行後會根據 total 和 total_ok 的數值,產生對應數量的分身。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 新增「分身」函式

「分身」函式內容裡,先設定一個變數 n,接著根據籤的總數進行重複,每次重複時將 n 增加 1,並判斷 ok_number 清單裡是否有 n 的數值,如果有,就將籤改為中籤的造型,如果沒有就保持沒有中籤的造型,此外,也可以透過位置和亮度的調整,讓每一籤都有點不同,也可以運用簡單的數學公式,每支籤排列時都會帶有一些旋轉的角度。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 「分身」函式內容

設定點擊角色的程式 ( 點擊角色支援點擊分身 ),點擊籤的角色時,除了設定圖層往前以及亮度之外,運用移動積木將籤往上移動產生「抽籤」效果,並根據籤的造型決定是否中籤,如果中籤就發送 yes 訊號,如果沒有中籤就發送 no,除此之外,當收到 clear 訊號後,刪除分身 ( 所有分身都會收到訊號,收到後就會將自己刪除 )。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 根據籤的造型決定是否中籤

編輯收到 submit 訊息的程式,在最後方依序執行「中籤號碼」和「分身」函式。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 依序執行「中籤號碼」和「分身」函式。

到這個階段,點擊綠旗後應該就可以看見基本的抽籤效果。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 初步完成效果

積木程式原理 ( text )

前往「text」角色,這個角色會使用大型文字顯示是否中籤,點擊綠旗時隱藏角色,收到 yes 或 no 訊號時,顯示造型並切換為 yes 或 no 的造型,三秒後再度隱藏角色,如果收到 submit 訊號,立刻終止所有的等待過程,隱藏角色。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 使用大型文字顯示是否中籤

積木程式原理 ( setting )

前往「setting」角色,這個角色是「設定按鈕」,點擊後會開啟設定面板設定中籤數和總數,點擊綠旗時顯示角色,點擊角色後會發送 setting 訊號並隱藏角色,收到 submit 和 close 訊號時會再度顯示角色。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 設定面板設定中籤數和總數

積木程式原理 ( board )

前往「board」角色,這個角色是「設定面板」,面板中除了說明文字,還會包含具備拖拉滑桿的變數,點擊綠旗以及收到 submit、close 訊號時,隱藏角色以及隱藏 total 和 total_ok 變數,收到 setting 訊號時,顯示角色、total 和 total_ok 變數,並發送 show 訊號 ( 面板上的按鈕會接收 show 訊號,避免被面板蓋住 )。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 具備拖拉滑桿的變數

當變數出現在舞台上後,用滑鼠在變數上按「右鍵」,將變數設定為「滑桿」,就能讓使用者自行調整數值。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 將變數設定為「滑桿」

點擊「變更滑桿數值範圍」,將 total 變數範圍設定 2~20,total_ok 變數範圍設定為 1~20

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 變更滑桿數值範圍

積木程式原理 ( close )

前往「close」角色,這個角色是「關閉按鈕」,點擊後會關閉設定面板,設定點擊綠旗、角色點擊以及收到 submit 訊號時隱藏角色,收到 show 訊號時顯示角色,並將角色的圖層設定到最前方。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 關閉設定面板

積木程式原理 ( submit )

前往「submit」角色,這個角色是「確認設定按鈕」,點擊後會重新設定 total 和 total_ok 變數,並根據變數產生對應的畫面,收到 show 訊號時顯示角色並將角色的圖層設定到最前方,點擊綠旗、收到 close 和點擊角色時隱藏角色,但在點擊角色時,必須使用「廣播訊息並等待」,確保收到 clear 訊號的動作都完成後,再發送 submit 訊號 ( 避免畫面上還有前一次的分身 )。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 ) - 重新設定 total 和 total_ok 變數

完成效果

所有角色的程式都完成後,點擊綠旗,舞台上會根據設定出現 2~20 支籤,就能夠開始進行抽籤的小遊戲囉。

Scratch 教學 - 抽籤 ( 可調整總數、中籤數 )

範例解答

範例解答:抽籤 ( 可調整總數、中籤數 )

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

Scratch 教學

基本介紹

關於 Scratch 使用 Scratch 3 註冊與登入 操作介面 我的東西

圖形與聲音

繪製造型&背景 編輯音效

程式積木

積木種類 動作 外觀 音效 事件 控制 偵測 運算 變數 清單 函式積木

擴充功能

音樂 畫筆 視訊偵測 文字轉語音 翻譯

技巧&觀念

全域變數、區域變數 深入理解區域變數 控制指定分身 控制所有分身的方法 雲端變數 雲端變數記錄文字 變數串接文字 判斷英文字母大小寫 中斷與停止程式 廣播訊息並等待 鍵盤與滑鼠 滑鼠點擊與長按 偵測所有鍵盤按鍵 點擊隱藏的角色 突破角色尺寸限制 角色與舞台邊界 重複積木的等待時間 音樂暫停與繼續播放 使用造型名稱建立清單 使用造型代替變數 文字轉清單 清單合併為文字 判斷兩個清單是否相同 複製清單、反轉清單 清單數字排序 清單最大值最小值

入門範例

鍵盤控制貓咪 指向中間的箭頭 水果音樂鋼琴 貓咪的影分身之術 貓咪的細胞分裂 螃蟹跑來跑去 吃水果 摸蝴蝶 小狗追棒球 魚兒水中游 小鳥往前飛 舞棍阿伯 小時鐘 搖骰子 轉動的眼球 抽獎輪盤 大樂透電腦選號 卡牌抽籤 ( 20 中 1 ) 移動到邊緣切換場景 人物依序跳舞 ( 廣播 ) 按鈕控制貓咪 ( 廣播 )

進階範例

貓咪跑步 ( 連續背景 ) 貓咪跑步 ( 超長背景 ) 大型數字 ( 圖形數字 ) 拖拉怪獸碰撞牆壁 鍵盤鋼琴 ( 記錄音符 ) 中文字逐字稿 英文字逐字稿 計算機 1 ( 顯示數字 ) 計算機 2 ( 加減乘除 ) 雲端聊天室 音樂播放器 推貓咪 ( 視訊偵測 ) 圍捕小魚 ( 視訊偵測 ) 戳泡泡 ( 視訊偵測 )

視覺特效範例

視差效果 水中吐泡泡 雪花隨風飄 鍵盤鋼琴 ( 音符動畫 ) 無限循環畫中畫 水底探照燈 狙擊望遠鏡 ( 兩倍變焦 ) 貓咪萬花筒 仙女棒 ( 光跡效果 ) 駭客任務背景特效 放煙火 1 ( 往上發射 ) 放煙火 2 ( 爆炸效果 )

繪圖範例

鏡射畫圖 ( 對稱圖形 ) 小畫家 ( 舞台上畫圖 ) 記錄畫圖軌跡 繪製圓形 繪製橢圓形 繪製立方體 ( 會動 ) 繪製正多邊形 繪製正多角星形 ( 單純 ) 繪製正多角星形 ( 多線 ) 繪製拋物線 繪製折線圖 繪製圓餅圖 繪製圓餅圖 ( 指示線 ) 蜘蛛結網 ( 八邊形網 ) 繪製舞台方格 繪製正弦波形 ( sin ) 正弦波毛毛蟲動畫 顯示聲波圖形

物理&模擬範例

鐘擺運動 簡單磁鐵效果 兩個磁鐵的磁力線 立體空間 ( 三度空間 ) 循跡移動 拋物線發射炮彈 地球繞著太陽轉 彈跳的籃球 電風扇 ( 控制強度 ) 拉不走的彈力球 慣性移動 ( 滑鼠 ) 慣性移動 ( 鍵盤 )

入門遊戲範例

猴子接香蕉 打地鼠 打地鼠 ( 體感視訊偵測 ) 刮刮樂 吹風機吹頭髮 太空狗閃躲隕石 九九乘法測驗 英文單字測驗 釣魚遊戲 拍西瓜 ( 儲存最高分 ) 寶可夢猜猜我是誰 ( 基本 ) 形狀配對拼圖 台灣地圖拼圖 英文打字機 英文打字機 ( 判斷大小寫 ) 射擊外星人 猜數字 ( 猜大小 ) 猜數字 ( 幾 A 幾 B ) 連連看 ( 產生器 ) 連連看

進階遊戲範例

青蛙過河 青蛙過馬路 反彈球 ( 乒乓球 ) 打磚塊 狙擊氣球 ( 兩倍變焦 ) Flappy Bird Flappy Bird ( 聲控版 ) 走迷宮 ( 基本 ) 大型迷宮 ( 鍵盤控制 ) 大型迷宮 ( 滑鼠控制 ) 翻卡記憶遊戲 翻卡記憶遊戲 ( 改良版 ) 井字棋 ( 圈圈叉叉 ) 九宮格拼圖 九宮格拼圖 ( 改良版 ) 音階記憶 貪吃蛇 ( 分身版 ) 貪吃蛇 ( 畫筆版 ) 小雞下樓梯 拉霸機

團康遊戲範例

搖骰子 ( 1~3 個 ) 比手畫腳 ( 猜動物 ) 音樂傳球遊戲 大聲公 ( 比賽誰的氣長 ) 抽籤 ( 可調整中籤數量 ) 轉盤指針 ( 指到誰就當鬼 ) 倒數計時器 ( 基本版 ) 倒數計時器 ( 大數字版 )

遊戲設計技巧

角色 ( 地上移動 ) 角色 ( 蹲下、左右轉 ) 角色 ( 跳耀、兩段跳 ) 角色 ( 牆壁、爬牆 ) 地圖 ( 清單轉換 ) 地圖 ( 二維陣列 ) 地圖 ( 控制移動 ) 地圖 ( 牆壁碰撞偵測 ) 地圖 ( 吃東西偵測 ) 俄羅斯方塊 ( 角色與背景 ) 俄羅斯方塊 ( 移動與碰撞 ) 俄羅斯方塊 ( 放置方塊 ) 俄羅斯方塊 ( 消除完成方塊 ) 俄羅斯方塊 ( 下個形狀 )