拉霸機 ( 吃角子老虎機、Slot Machine )
這篇文章會介紹透過 Scratch 的角色位置的換算,搭配清單、函式、全域變數和區域變數,實作一個俗稱「吃角子老虎機」的拉霸機效果。
快速導覽:
繪製角色 ( 拉霸機花色 )
製作拉霸機的關鍵點在於「花色」的角色,必須按照步驟實作,過程中請務必確認位置和尺寸是否相同,首先使用「繪畫」的方式建立角色「shape」作為拉霸機的花色,使用方形工具繪繪製一個「60x60,白色無邊框」的正方形,並將正方形對齊畫布的中心點 ( 使用滑鼠拖拉正方形靠近畫布中心點時,會自動吸附到畫布中心點 )。
繼續使用方形工具,在白色正方形裡繪製圖案,注意圖案尺寸不要超過白色正方形,完成後全選圖案和正方形,點擊上方「建立群組」按鈕將其組合成群組。
複製群組,先將複製的群組對齊畫布中心,往上移動 60 點,使尺寸變成 60x120,接著解散群組。
解散群組後就可以修改圖形,將原本的圖案改成其他的圖案 ( 範例將綠色正方形改成黃色三角形 )。
接著如法炮製,繪製許多不同的圖案,並調整上下位置,因為每一組圖案的高度都是 60,因此上下移動時也都採用 60 為單位移動,範例使用 15 組圖案,尺寸就會是 60x900 ( 60x15=900 ),對齊時可以使用 ctrl + a 全選移動,將「第四組」圖案用目測的方式對齊畫布中心,上方還會有三組圖案。
繪製角色 ( 拉拉霸機、貓咪 )
使用「繪畫」的方式建立角色「bg」作為拉霸機的造型,繪製時使用許多深棕色四邊形,搭配一些文字和邊框,實作如下圖的造型,注意中間需要保留一些透明區域,作為呈現花色使用。
使用「選個角色」的方式建立角色「cat」,角色選擇 Scratch 預設的貓咪,完成後將花色 shape、拉霸機 bg 和貓咪 cat 按照下圖,排列在舞台中,並按照自己的繪製方式調整位置,使得拉霸機具備可以呈現三組花色的空間*。
程式原理 ( 拉霸機花色 )
點擊「shape」角色,從左側積木清單裡新增「建立分身」函式,勾選「執行完畢再更新畫面」。
先將角色定位在 (-80,0),接著透過函式產生三個分身,每次產生分身後就往右邊移動 80 點,完成後隱藏本尊。
從左側積木清單裡新增「形狀清單」函式,勾選「執行完畢再更新畫面」。
形狀清單的函式主要負責「建立花色形狀的清單」,由於花色可能很多,可以透過「文字轉清單」的方式,先建立 source 和 n 變數,根據花色建立對應的文字字串 ( 例如紅綠黃就會是 rgy ),接著運用重複迴圈建立清單。
從左側積木清單裡,建立「僅適用當前角色」的區域變數「$_shape」,目的在於「分別控制」不同的分身,變數名稱開頭使用「$_」區分區域變數和全域變數。
編輯「當分身產生」的程式,讓三組花色以隨機高度出現,並運用 $_shape 區域變數搭配 x 座標,當按下空白鍵或滑鼠時,分身會由左到右每隔 0.5 秒依序做動作。
從左側積木清單裡新增「轉動」函式,不要勾選「執行完畢再更新畫面」,替函式加入轉動次數 num、速度 v 和加速 dy 三個參數。
從左側積木清單裡,建立「僅適用當前角色」的區域變數「$_dy」,目的在讓不同分身之間的加減速不會互相影響,變數名稱開頭使用「$_」區分區域變數和全域變數。
編輯「轉動」函式內容,函式主要負責花色的轉動,除了「等速」轉動,還會根據加速減速的參數進行加速或減速,轉動時加入邏輯判斷,如果 y 的位置太低就設定角色的 y 座標為 480。
編輯「當分身產生」的程式,加入三組「轉動」函式,依序是「加速、等速、減速」,完成後先將 y 座標補滿成 60 的倍數,在滑動 0.2 秒到「y 座標 + 60」的位置 ( 往上滑動一格 ),做出擬真的拉霸停止效果,當拉霸停止後,根據目前所在的 y 座標換算出數值,透過數值取得 shape 清單裡的名稱,將名稱存入 result 清單裡。
從左側積木清單裡新增「判斷得分」函式,勾選「執行完畢再更新畫面」。
當花色停止轉動後,使用「判斷得分」函式判斷 result 清單內容,如果清單內容三個都相同表示中大獎,發送廣播訊號 1,如果只有兩個相同就發送廣播訊號 2。
程式原理 ( 拉霸機、貓咪 )
點擊拉霸機「bg」角色,設定點擊綠旗時的定位以及在最上層。
點擊貓咪「cat」角色,設定點擊綠旗時的定位以及在最上層,並設定收到 0、1、2 的廣播時要講的內容。
效果展示
完成後點擊綠旗,就可以開始拉霸機的吃角子老虎機遊戲。
範例解答
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~