iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
自我挑戰組

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

Day28 ( 高級 ) 記錄畫圖軌跡

  • 分享至 

  • xImage
  •  

記錄畫圖軌跡

教學原文參考:記錄畫圖軌跡

這篇文章會介紹,在 Scratch 3 裡使用擴充功能的畫筆,搭配變數、清單、邏輯判斷、重複無限次...等積木,製作一個可以記錄畫圖軌跡的功能,紀錄軌跡後,按下播放就可以自動畫出圖形。

相關文章參考:擴充功能的畫筆重複變數清單邏輯判斷

角色設定

在角色編輯區,刪除貓咪角色,加入一個「空白」的角色,命名為「畫筆」 ( 參考:Scratch 角色設定 )。

因為待會使用畫筆繪圖,不會出現角色,所以直接使用全空的空白角色。

Scratch 3 教學 - 記錄畫圖軌跡

接著加入兩個預設的圖案,一個是綠色打勾 ( 命名為 ok ),一個是黑色打叉 ( 命名為 no ) ( 參考:Scratch 角色設定 )。

Scratch 3 教學 - 記錄畫圖軌跡

積木程式原理 ( ok )

點擊「ok」角色,從左側積木清單裡,新增 n、ok 和 no 三個變數,以及 x 和 y 兩個清單。

  • 變數 n:讀取清單項目。
  • 變數 ok:判斷是否按下開始畫 ( 打勾 ) 的按鈕。
  • 變數 no:判斷是否按下清除 ( 打叉 ) 的按鈕。
  • 清單 x:記錄畫圖過程的 x 座標。
  • 清單 y:記錄畫圖過程的 y 座標。

Scratch 3 教學 - 記錄畫圖軌跡

設定點擊角色時,廣播「開始畫」的訊息,並設定點擊綠旗的動作:

  • 使用重複無限次積木,每次重複將變數 ok 設為 0,並讓角色不要講話。
  • 每次重複時判斷是否碰到滑鼠,如果碰到滑鼠,就將 ok 設為 1,讓角色講出「開始畫」。

Scratch 3 教學 - 記錄畫圖軌跡

積木程式原理 ( no )

點擊「no」角色,設定點擊角色時,刪除清單 x 和 y 的所有項目,並將清除舞台上的筆跡。

Scratch 3 教學 - 記錄畫圖軌跡

設定點擊綠旗的動作:

  • 使用重複無限次積木,每次重複將變數 no 設為 0,並讓角色不要講話。
  • 每次重複時判斷是否碰到滑鼠,如果碰到滑鼠,就將 no 設為 1,讓角色講出「清空畫面」。

Scratch 3 教學 - 記錄畫圖軌跡

完成後,點擊綠旗,滑鼠移動到 ok 或 no 的角色上,就會出現對應的文字。

Scratch 3 教學 - 記錄畫圖軌跡

積木程式原理 ( 畫筆 )

點擊「畫筆」角色,設定點擊綠旗的動作:

  • 筆跡全部清除、停筆。
  • 設定筆跡寬度為 3,顏色黑色。
  • 刪除清單 x 和 y 的所有項目。

Scratch 3 教學 - 記錄畫圖軌跡

新增另外一組點擊綠旗積木,使用重複無限次積木,每次重複執行:

  • 判斷*「是否按下滑鼠」且「ok + no 等於 0」*( 表示在舞台上按下滑鼠,且沒有碰到 ok 或 no 角色 )。
    • 將畫筆定位到滑鼠的位置 ( 跟隨滑鼠移動 )。
    • 分別將 xy 座標添加進清單 x、y
    • 下筆畫畫。
  • 如果滑鼠放開或碰到 ok 或 no 角色。
    • 將文字「x」添加進清單 x、y,表示該項目不是座標
    • 停筆畫畫。
    • 等待直到「按下滑鼠」且「沒有碰到 ok 或 no」

Scratch 3 教學 - 記錄畫圖軌跡

新增收到「開始畫」訊息的動作:

  • 清除舞台上所有筆跡、停筆。
  • 設定變數 n 為 1,表示從清單的第一個項目開始。
  • 使用「重複次數」積木,重複「清單的長度」( 讀取清單裡每一個項目 )。
  • 每次重複判斷如果項目的內容為「x」,表示不是座標,就停筆
  • 如果項目內容不是「x」,表示該項目是座標值,就定位到該座標,並下筆畫畫
  • 每次重複將 n 增加 1。

Scratch 3 教學 - 記錄畫圖軌跡

完成效果

完成後,點擊綠旗,用滑鼠在舞台上畫圖,點擊綠色勾勾就會畫出同樣的圖形,點擊黑色叉叉就會清空畫面。

Scratch 3 教學 - 記錄畫圖軌跡

範例解答

範例解答:記錄畫圖軌跡

關於我

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


上一篇
Day27 ( 高級 ) 小畫家 ( 舞台上畫圖 )
下一篇
Day29 ( 高級 ) 繪製正多角星形 ( 多線版 )
系列文
Scratch 3 從入門到精通46
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言