# Processing 程式設計 ## 程式架構 ```python= def setup(): # 畫布的初始設定 def draw(): # 不停重複的在畫布上繪圖 ``` - 所有放在setup()和draw()之下的程式碼都需要空四個空格 - 這個觀念在程式語言中稱為「縮排」 - python使用縮排來表示程式的階層架構,被縮排的指令們會歸屬於它的上一層程式框架 - 在以下的例子中,size()和background()就是屬於setup()的指令,當執行到setup()時才會執行到這兩行 ```python= def setup(): size(800, 600) background(0, 255, 255) ``` ## 常用繪圖指令 代號說明: $r$: 紅色光強度 $g$: 綠色光強度 $b$: 藍色光強度 $x_i$: 第$i$個點的$x$坐標 $y_i$: 第$i$個點的$y$坐標 $w$: 矩形寬度、線條寬度、圓形直徑 $h$: 矩形高度 ```fill(r, g, b)```:指定接下來繪製的**圖形**的顏色 ```noFill()```:圖形無填滿 ```stroke(r, g, b)```:指定接下來繪製的**線條**的顏色 ```noStroke()```:無線條 ```strokeWeight(w)```:指定線條寬度 ```point(x1, y1)```:繪製一個點於$(x_1, y_1)$ ```line(x1, y1, x2, y2)```:繪製一條線於$(x_1, y_1)$、$(x_2, y_2)$之間 ```circle(x1, y1, w)```:以$(x_1, y_1)$為圓心$w$為直徑畫圓 ```rect(x1, y1, w, h)```:以$(x_1, y_1)$為基準(左上角),繪製寬度為$w$高度為$h$的矩形 ```triangle(x1, y1, x2, y2, x3, y3)```:繪製三頂點分別為$(x_1, y_1)$、$(x_2, y_2)$、$(x_3, y_3)$的三角形 ```random(n)```:自$0~n之中隨機取一整數 ## 變數型態 1. 整數(int):不帶小數點的數字 2. 小數(float):帶小數點的數字 3. 字串(str):以 ' ' 或 " " 包夾的文字 ## 變數宣吿 語法:<變數名稱> = <初始值> 例如: ```python= r = 0 w = 1024 s = "a string" ``` 變數的命名有一定的規定: 1. 僅能以英文、數字、底線命名 2. 不能以數字開頭 3. 最短長度為1 4. 不能使用一些特殊字詞 ## 變數使用 變數一旦被宣告之後,之後對這個變數的操作都是"使用變數" 如需在draw()中修改,請在修改前加上global指令 例如: ```python= def draw(): global r, g, b fill(r, g, b) # 以變數的內容決定填色色彩 circle(mouseX, mouseY, 100) r = r + 1 g = g + 2 b = b + 3 ``` ## 條件判斷 當程式需要針對不同條件做不同的指令時使用 基本語法: ```python= if <條件>: <指令> ``` 當上述條件成立時,才執行下面的指令;否則不執行該指令 所有在這個條件之下的指令需要再次縮排 ```python= if <條件1>: <指令1> elif <條件2>: <指令2> else: <指令3> ``` 當條件1成立時執行指令1;而當條件1不成立且條件2成立時執行指令2;如果兩個條件都不成立,執行指令3 條件可以為兩數的大小關係: ```python= a > b a < b a >= b a <= b a == b # 此處的兩個等號才是判斷左右是否相等的意思 a != b ``` ### 使用變數和條件判斷實作新功能 ```python= x = 400 y = 300 left = 0 # 當left為0時向右走,當left為1時向左走 def setup(): size(800, 600) def draw(): global x, y, left background(0, 255, 255) fill(255, 255, 0) ``` #### 練習:你能否讓畫出來的圓形也隨著移動的過程改變顏色呢? ### 滑鼠點擊 當使用mousePressed指令時,代表每當滑鼠按下時執行其中的指令內容 ```python= if mousePressed: rect(mouseX, mouseY, 100, 100) ``` ## 迴圈敘述 當程式需要把同一段指令重複執行數次時使用,分成while迴圈與for迴圈 while迴圈基本語法: ```python= while <條件>: <指令> ``` 當上述條件成立時,重複執行下面的指令;直到條件不成立為止 所有在這個條件之下的指令需要再次縮排 範例: ```python= x = 0 while x < 1000: circle(x+100, mouseY, 200) circle(mouseX, x+100, 200) x = x + 200 ``` 注意:當上述範例第5行沒打的時候,會進入無窮迴圈,導致程式離不開這段迴圈的命令 for迴圈基本語法: ```python= for <計數變數> in range(<初始值>, <終止值>, <變化量>): <指令> ``` for迴圈三要素:初始值、終止值、變化量 在for迴圈中,<計數變數>會被設定為初始值,每次迴圈執行完之後加上<變化量>,直到<計數變數>大於等於終止值為止,例如: ```python= for i in range(0, 100, 1): circle(i, i, 10) ``` 在以上範例中,計數變數$i$會依次從0, 1, 2, ......變化到99之後結束迴圈,這個迴圈: - 一共執行了100次 - $i$從0變化到99 - 在(0, 0)~(99, 99)的位置各畫了一個直徑為10的圓 ※補充: - 當迴圈的變化量為1時,可以省略變化量不寫,例如:```for i in range(0, 100):``` - 當迴圈的變化量為1,且初始值為0時,可以省略初始值與變化量不寫,例如:```for i in range(100):``` - 當迴圈的變化量不為1,但初始值為0時,不可以省略