教學影片: https://youtu.be/VyJw9LbZBvk
透過不同的指令,我們可以使用電腦繪畫千變萬化的圖案。
首先要做的是,使用Scratch 3.0時要先新增畫筆的擴充模組。(如何新增Scratch擴充模組?)
先由簡單的開始。以下是繪畫正方形的例子:
以上的是最基本需要的程式磚塊。
|
磚塊程式Blocky code |
說明 |
|
|
按綠色旗標籤 |
|
|
落筆,可以開始繪畫。 |
|
|
移動100步(其實是100像素),由於上方已落筆,因此移動的軌跡會被描繪出來。 留意,如沒有 |
|
|
向右轉90度。 |
|
|
重複向前行100步,然後向右轉90度,重複多三次,共4次,便成正方形。 |
但問題是:
1. 如何控制正方形的繪畫方向? (以上的方向是如何決定的?)
2. 重複執行程式,如把貓貓移動了位置的話,會發現之前的正方形沒有消失,那如何清除之前的圖形?
3. 如果要繪畫十二邊形的話,那豈不是要複製很多相同的磚塊程式,這樣很大機會複製錯誤。有沒有更好的方法?
以下是改良版: 使用迴圈處理。
|
磚塊程式Blocky code |
說明 |
|
|
程式開始後,先清除畫板上所有東西 |
|
|
指定貓貓開始時的位置。 留意,畫板的大小是480x360。0,0是位於正中央的位置。 |
|
|
設定開始時貓貓面向的方向,90度是向正右。可調較不同角度的。 |
|
|
使用這計算次數的repeat迴圈,填上4,代表repeat迴圈內的指令要重複執行4次。 |
如果要繪畫其他形狀,要修改甚麼位置? 例如要繪畫
(1) 三角形
(2) 五邊形
(3) 六邊形
(4) 十二邊形
(5) 圓形
提示: 修改轉動的角度及重複執行的次數。留意,繪畫十二邊形及圓形時,因太大,超出畫板範圍,要修改移動步數才成。
如果要連續繪畫多個形狀,哪如何處理? 例如以下,繪畫正方形後,再繪畫三角形,最後六邊形。
當然可以像以上的做法,但似乎很累贅,亦不易看到程式碼的作用。有沒有更清晰的做法?
使用自定函數(self-defined function)便可使程式更易閱讀,亦方便執行重複的程式碼。例如以下例子,是否很清晰便可以看到程式是做甚麼的?
進階程式設計: 使用雙迴圈。
配合雙迴圈,可以有更多的變化,如以下示例:
咦?為甚麼沒有任何變化?
當然沒有甚麼變化,因為完成內迴圈後,沒有進行任何改變,祇是再重複執行4次而已。其實實際上程式執行還是有分別的,以上程式其實總共繪畫了4次正方形,不過因為是相同位置,結果不明顯而已。但執行時還是可以看到貓貓轉了4個圈。
試試於內迴圈外加一些指令,例如改變一下以下參數:
1. 角度
2. 位置
3. 顏色
4. 畫筆粗幼
5. 外迴圈次數
以下是一個例子,祇是每次繪畫正方形後,貓貓向右轉15度,外迴圈次數改成100,便可得出以下圖案。
有沒有覺得很奇怪? 以上的圖案,怎麼看也沒有100個正方形! (但貓貓是真的轉了100次,繪畫了100個正方形) 你看到是甚麼原因嗎?
修改了一個參數,另外隱藏了貓貓,便可得出以下圖案。
作業(1)
試試看,如何輸出以下的畫面: (留意,每次正方形輸出的位置是隨機的。
沒有留言:
張貼留言