九宮挌拼圖 ( 2024 改良版 )
這篇文章會介紹,如何在 Scratch 裡使用變數、分身、清單、多個角色、重複、滑行、廣播訊息和數學計算...等積木,實作一個九宮挌拼圖的小遊戲 ( 此篇文章修改原本「九宮格拼圖」無法過關的問題,並改用分身的做法,讓程式更清楚好懂 )。
快速導覽:
繪製角色
使用繪畫的方式新增角色「box」,負責畫面上作為題目 1~8 的數字方塊,使用方形工具繪製 98x98 的白底黑邊正方形,將其對齊畫布中心。
在正方形裡加上數字,接著複製成為八組造型,內容是 1~8 的數字,造型名稱也必須對應內容數字,使用 1~8 作為名稱。
文字的「行高」會讓尺寸產生變化,但只要文字不要超過正方形,基本尺寸就仍然是 98x98。
使用繪畫的方式新增角色「move」,負責畫面上作為缺口的空白方塊,使用方形工具繪製 98x98 的白底正方形,將其對齊畫布中心。
加入一個角色「cat」,負責提示現在走了幾步,或者提示現在是否過關。
程式原理 ( box 數字方塊 )
編輯 box 數字方塊角色的程式,新增「方塊位置清單」函式,勾選「執行完畢再更新畫面」。
「方塊位置清單」函式內容放入 pos_x 和 pos_y 兩個清單,清單內容分別紀錄九宮格的座標,座標的數值如下圖所示。
新增「造型清單」函式,勾選「執行完畢再更新畫面」。
「造型清單」函式內容先用一個 list 清單搭配重複迴圈依序紀錄每個造型名稱 1~8,紀錄完成後,重複「偶數次」,每次重複將最後一項移動到「隨機的奇數項」,這種互換的方式可以確保都是「偶數替換」,避免無法過關的狀況發生,互換完成後,list 的內容會變成隨機數,在最後添加 9 作為空白方塊使用。
新增「建立分身」函式,勾選「執行完畢再更新畫面」。
「建立分身」函式內容先隱藏本尊,新增變數 n 紀錄第幾個項目,並使用重複八次的迴圈產生八個分身。
編輯點擊綠旗時,依序執行函式,並在分身產生時,根據位置清單和造型清單,將分身擺放到指定的位置並切換成對應的造型。
新增「移動」函式,不用勾選「執行完畢再更新畫面」。
「移動」函式內容使用 x 和 y 變數紀錄「被點擊的」數字方塊座標,接著判斷如果「數字方塊和空白方塊的 x y 座標距離總和小於 110」,表示這個數字方塊會移動,移動時使用變數 a 紀錄數字方塊在清單 list 裡的項目位置,使用變數 o 紀錄空白方塊在清單 list 裡的項目位置,再透過「替換」積木將兩者互換,互換後發送 move 廣播訊號並滑行到空白方塊的位置。
回到建立分身的積木裡,使用重複迴圈搭配邏輯,實作點擊分身的程式,當分身被點擊時,執行「移動」函式,同時判斷 ok 變數是否等於 list 清單,如果不相等表示還沒過關,可以繼續移動。
ok 變數內容會在另外的角色設定,判斷相等的作法參考「判斷兩個清單是否相同」。
程式原理 ( move 空白方塊 )
編輯 move 空白方塊角色的程式,點擊綠旗時將空白方塊定位在九宮格的右下角,設定 ox 和 oy 變數為當前的座標,當收到 move 廣播訊號時,將位置設定到數字方塊的位置,並更新 ox 和 oy 的內容。
程式原理 ( cat 提示角色 )
編輯 cat 提示角色的程式,點擊綠旗時將角色定位在舞台右下角,使用 step 變數紀錄步數,使用 ok 變數存放過關的數字排列,收到 move 廣播訊號時,除了更改 step 步數,同時也會判斷 list 清單內容是否等於 ok 變數的值,如果相等就呈現過關訊息。
完成效果
完成後,點擊綠旗,就可以開始進行九宮格拼圖的遊戲。
範例解答
範例解答:九宮挌拼圖 ( 2024 改良版 )
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~