2

分享

【Scratch 教學】分身編號 1 -Scratch分身與執行緒

Scratch 中有個很強的功能『分身』是初學者一定要學會使用的,但分身最多就只能產生 300 個,如果重複產生或忘了刪除最後可能導致整個專案當掉。所以,掌握有多少個分身以及給每個分身一個編號,是 debug 過程中一個重要的手段。
首先,要先提到變數可被設為『適用於所有角色』與『僅適用於當前角色』,學過程式的人應該很快就能將它們理解為「全域變數 (global variable)」和「區域變數 (local variable)」,或者將後者視為「私有變數 (private variable)」。既然Scratch wiki 中主要稱之為 "Local Variable",那我們也就稱之為「區域變數」吧。
當建立變數時如果選擇了區域變數(例如「速度」),除了其他角色無法設定或改變這個變數,重點是這個角色產生出來的每個分身都會有屬於自己的變數「速度」,也就是說,分身 1 號改變了自己的「速度」不會影響到分身 2 號的「速度」。這樣就可以做到讓分身獨立的運作,各自有各自的行進速度。
Scratch 傑夫老師 Scratch教學

建立變數時可選擇「僅適用當前角色」的區域變數

這一篇,目的是要讓每個分身一個編號,編號一定是唯一 (unique) 的,那就要利用到區域變數。最簡單的做法如下:先建立一個區域變數『id』。
Scratch 傑夫老師 Scratch教學

『id』是一個區域變數

Scratch 傑夫老師 Scratch教學

執行的結果,中間的是「本尊」

執行之後看到每個「分身」說出了自己的編號,而且每個分身的編號都不同。
但很多時候分身是由別的角色或背景來建立,使用的是『建立 OO 的分身』,上面的方式就不行。通常這類情形還會需要紀錄建立了多少分身,那就要利用一個全域變數『分身數量』來紀錄。
Scratch 傑夫老師 Scratch教學

變數『分身數量』是一個全域變數

Scratch 傑夫老師 Scratch教學

Sprite1 當分身產生的程式

Scratch 傑夫老師 Scratch教學

執行的結果,可由變數『分身數量』知道產生了多少個分身

這樣,既能做到分身數量的管理,又能給每個分身一個編號,更進階的作法,會利用分身編號搭配上清單,就更能有效的管理每個分身。

然而,這裡留下一個問題,為什麼第二個方法中的變數「分身數量」初始值要為 0 而不是 1 呢?這跟我們之前提到的執行緒的機制有關,沒看過的朋友請先跳去看看,再接著看下一篇喔! Bye now~
#Scratch  #傑夫老師  #Scratch教學 
分類:學習

傑夫(Jeff)老師喜歡研究積木型(block)程式,如:Scratch, App Inventor, micor:bit,除了有一般中小學生的課程,也不定期的會開設Scratch師資培訓班,並且是「Scratch的100個技巧」的共同作者。

評論
上一篇
  • 【Scratch 教學】綠旗不同步 4 -Scratch內部執行機制
  • 下一篇
  • 【Scratch 教學】分身編號 2 -Scratch分身與執行緒
  • 更多文章
    載入中... 沒有更多了