1. 程式人生 > >Processing 網格紋理製作(棋盤格)

Processing 網格紋理製作(棋盤格)

#寫在前面的話 很久沒有寫博文了。最近在整理Processing有關文件,看到之前做的一些例子,想著分享在網際網路上,當然和以前一樣,目前也僅為了給初學者有個學習參考,筆者能力有限。廢話不多說,幹就完事了。 來做個紋理怎麼樣?基本紋理很多樣式,我們慢慢嘗試去實現,今天搞一個網格紋理,準確的說是棋盤格,就像下圖所示: #開始 首先寫好Processing該有的樣子,定義`settings()`,`setup()`,`draw()`等函式: ``` void settings(){ size(800,800); } void setup() { } void draw() { } ``` 這個`settings()`我會單獨去做講解,這裡簡單說一下:它是早於`setup()`初始化的處理函式,有點像Unity腳本系統中`Start()`和`Awake()`的關係,但是邏輯層面是不一樣的。很多PApplet類中的函式在這裡是不能被呼叫的,除了`size()`和`smooth()`兩個函式。而且,一旦寫了`settings()`,就必須得把上述兩個函式寫在`settings()`裡頭!大家以後都可以養成習慣這麼去填寫,因為Processing系統這麼設定,有它的道理,不過如果是純碎學習,那不碼這個`settings()`也無妨。還有個值得說的,因為只是要做個圖,其實`draw()`沒必要寫上。 #小試牛刀 我們先試一試畫一個矩形框,如下: ``` noStroke(); fill(255); rect(150,150,100,100); ``` 這樣會在畫布上出現一個白色矩形框,ok,接下來要做的是把這個事情給過程化(面向過程),寫個函式封裝其過程: ``` void drawRect(int c, int x, int y, int w, int h) { noStroke(); fill(c); rect(x, y, w, h); } ``` `drawRect()`可以被傳入五個引數,分別代表其顏色、座標資訊x,y、矩形長寬大小。為什麼能這麼去封裝它,這要求思考問題本身。細細觀察棋盤格的特點,黑白方塊相隔,如果抽象出它的屬性,那麼就不難想得到有諸如上述的引數,我們把它稱之為屬性(當然這個說法其實是不嚴謹的,因為現在我們的程式設計思路僅僅是面向過程,在OOP面向物件中這個特點會更加明顯)[哦對,有讀者感興趣的話也能找找有關函數語言程式設計的資料,絕對會讓你開拓眼界,在思考問題的方式上會有不一樣的感受哦