iT邦幫忙

2021 iThome 鐵人賽

0
自我挑戰組

Scratch 3 從入門到精通系列 第 41

Day41 ( 遊戲設計 ) 翻翻卡 ( 卡牌記憶 )

  • 分享至 

  • xImage
  •  

翻翻卡 ( 卡牌記憶 )

教學原文參考:翻翻卡 ( 卡牌記憶 )

這篇文章會介紹,如何在 Scratch 3 裡使用變數、清單、多個角色、重複、廣播訊息和造型...等積木,實作一個翻翻卡的卡牌記憶小遊戲。

相關文章參考:變數清單重複廣播訊息造型

角色設定

在角色編輯區,刪除貓咪角色,使用繪畫,繪製新角色 ( 參考:造型與繪圖 )。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

將新角色的第一個造型,繪製一個黃色的方形 ( 顏色可自行定義 ),作為卡牌的封面 ( cover ),接著新增三個造型,作為翻牌配對的圖案。

小技巧:如果擔心圖形位置不準確,可以先複製第一個造型,再複製新增的圖案,貼上到複製的造型上即可。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

雖然有六張卡牌,但因為卡牌的程式都相同,所以先放置一張卡牌,所有程式都完成後,再複製出其他五張卡牌。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

積木程式原理 ( 舞台 )

點擊「舞台」,將一開始的程式寫在「舞台」裡。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

新增三個變數 ( 幾張卡、n 和 ok ) 和一個清單 ( 卡牌順序 )。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

設定點擊綠旗的程式:

  • 因為有六張卡,所以將變數「幾張卡」設定為 6 ( 方便未來增加卡片數量時可以調整 )。
  • 因為卡片圖案從角色的「第二個」造型開始,所以將變數 n 設定為 2
  • 刪除清單「卡牌順序」的所有項目。
  • 使用「重複幾次」積木,重複「幾張卡」的次數。
  • 每次重複將「無條件捨去的 n」數值添加到「卡牌順序」
  • 每次重複將 n 增加 0.5

因為卡牌的圖案兩兩相同,所以每次將 n 添加 0.5,再使用無條件捨去,就能做到兩兩相同的效果,例如 [2, 2.5, 3, 3.5, 4, 4.5] 就會變成 [2, 2, 3, 3, 4, 4]。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

接著設計「打亂卡排順序」以及「開始遊戲」的程式:

  • 使用「重複幾次」積木,重複「幾張卡 x 4」次。
  • 每次重複將「卡牌順序」的「第一個項目」,插入到後方任何一項裡 ( 2~卡牌數量+1 )
  • 每次重複移除「卡牌順序」的「第一個項目」( 這個做法可以打亂卡排順序 )
  • 打亂卡排順序後,設定變數 ok 為 0 ( ok 變數為判斷圖案是否相同的變數 )。
  • 廣播訊息「開始」。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

這裡使用打亂順序的方式,是將第一個項目取出,例如 [2, 2, 3, 3, 4, 4] 就會變成 [2, 3, 3, 4, 4],再將第一個項目插入到後方隨機的位置,就可能會變成 [2, 3, 3, 2, 4, 4],當重複的次數夠多,清單順序就會完全被打亂。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

積木程式原理 ( 卡牌 )

點擊卡牌角色,編輯「翻牌比對」的程式,首先當點擊綠旗時,顯示卡牌 ( 因為遊戲結束會隱藏卡牌,所以開始時要重新顯示 ),並將卡牌造型設定為封面 cover

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

接著建立一個「僅適用當前角色」的變數,命名為「個別內容」。

「僅適用當前角色」的變數在改變數值時,不會影響到別的角色。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

設定收到「開始」訊息時,將「個別內容」變數設定為「卡牌順序」的第一個項目,接著移除卡排順序的第一個項目 ( 如此就能保證不會和別張卡牌重複 )。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

設定「當角色被點擊」的程式:

  • 如果「造型編號」等於 1,表示卡牌還沒有翻開,可以執行翻牌程式。
  • 將造型編號換成「個別內容」的數值。
  • 判斷如果變數 ok 等於 0,表示舞台放沒有卡牌被翻開
    • 將變數 ok 設定為「個別內容」的數值。
  • 如果變數 ok 不等於 0,表示舞台已經有卡牌被翻開
    • 判斷如果變數 ok 等於「個別內容」,表示圖案相同,發送「相同」的訊息。
    • 判斷如果變數 ok 不等於「個別內容」,表示圖案不相同,就將 ok 設定為 0,發送「不同」的訊息。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

設定收到「相同」訊息時的程式:

  • 判斷變數 ok 是否等於「個別內容」。
  • 如果等於「個別內容」,等待一秒後,隱藏卡牌。
  • 接著將變數 ok 設定為 0。

為什麼要再次判斷變數 ok 是否等於「個別內容」?因為發送「相同」訊息時,舞台上所有的卡牌都會收到同樣的訊息,所以必須要再次進行判斷,確認相同後,再將變數 ok 設定為 0。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

接著設定收到「不同」訊息時,等待一秒後將卡牌造型變成封面 cover。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

最後,複製卡牌角色,並將複製出的卡牌,在舞台上排列整齊。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

完成效果

完成後,點擊綠旗,就可以開始進行翻翻卡 ( 卡牌記憶 ) 的遊戲。

Scratch 3 教學 - 翻翻卡 ( 卡牌記憶 )

範例解答

範例解答:翻翻卡 ( 卡牌記憶 )

延伸練習

如果已經熟悉了翻翻卡 ( 卡牌記憶 )的原理,還可以嘗試更多好玩的作法:

  • 沿用範例程式,將卡片變成 10 張。( 解答 )

關於我

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,如果對我有點興趣(笑,可以與我聯繫,一起來做點有玩又有創意的東西吧!


上一篇
Day40 ( 遊戲設計 ) 反彈球 ( 乒乓球 )
下一篇
Day42 ( 遊戲設計 ) 九宮挌拼圖
系列文
Scratch 3 從入門到精通46
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言