☝1
這學期的第一個程式
先用簡單的一行程式來複習大一學過的
設置一個視窗
size( 500 , 500 ); 設定視窗大小 ( 寬度 , 高度 );
太無聊了,加上背景吧
background(255,255,0); 背景色(紅,綠,藍);
255,255,0 是黃色 背景變成黃色
💾 程式碼存檔區
///直接模式 Immediate Mode size(500,500);//視窗大小(寬,高); background(255,255,0);//背景色(紅,綠,藍);
剛才我們寫的是 直接模式 Immediate Mode
以前學的也都是這樣,打什麼就出現什麼
這學期我們要教的是 互動模式 Interactive Mode (Active Mode)
✌2
所以我們今天的第二個程式
在大一大二學 C 時要 int main(){ ... }
這裡也一樣,只是改成
void setup(){ ... } 設定 剛才的視窗大小、背景顏色就要寫在這邊
void draw(){ ... } 畫圖 每秒畫60次
ellipse(mouseX,mouseY,8,8); ellipse 是畫圓 用滑鼠控制 8,8 是圓的長寬
執行效果 可以連續的畫出圓
💾 程式碼存檔區
//互動模式 Interactive Mode (Active Mode) void setup(){ //設定 size(500,500); background(255,255,0); } void draw(){ //畫圖 每秒畫60次 ellipse(mouseX,mouseY,8,8); }
👌3
因為看了一下學姐的作品
想知道線條怎麼畫出來的
稍微修改一下前面的程式
把背景改成白色
為什麼只有 255 因為白色是 255,0,0
下面比較重要
if(mousePressed){ //如果 mouse有按下去 }
按下滑鼠...
line(mouseX,mouseY,pmouseX,pmouseY);
畫線(滑鼠座標mouseX,mouseY,到之前滑鼠座標pmouseX,pmouseY);
💾 程式碼存檔區
//互動模式 Interactive Mode (Active Mode) void setup(){ //設定 size(500,500); background(255); //改白色背景 背景(255); } void draw(){ //畫圖 每秒畫60次 if(mousePressed){ //如果 mouse有按下去 line(mouseX,mouseY,pmouseX,pmouseY); }//畫線(滑鼠座標mouseX,mouseY,到之前滑鼠座標pmouseX,pmouseY); }
那是不是知道如何變色後就可以製作簡單的小畫家呢
void keyPressed(){ //如果有按下keyboard的key}
如果按下鍵盤...和上學期電腦圖學的寫法一樣
if(key=='1') ...
stroke 是筆觸 配上RGB就能切換不同顏色的筆刷
執行效果 原始線條為黑色 當按下1時畫出紅色線條 2為綠色 3為藍色
那怎麼畫完儲存呢?
一樣我們寫一個 save 就可以在檔案總管中找到 output.png 這張圖
💾 程式碼存檔區
//互動模式 Interactive Mode (Active Mode) void setup(){ //設定 size(500,500); background(255); //改白色背景 背景(255); } void draw(){ //畫圖 每秒畫60次 if(mousePressed){ //如果 mouse有按下去 line(mouseX,mouseY,pmouseX,pmouseY); }//畫線(滑鼠座標mouseX,mouseY,到之前滑鼠座標pmouseX,pmouseY); } void keyPressed(){ //如果有按下keyboard的key if(key=='1')stroke(255, 0, 0); //如果按下數字1 筆觸是紅色 if(key=='2')stroke( 0,255, 0); //如果按下數字2 筆觸是綠色 if(key=='3')stroke( 0, 0,255); //如果按下數字3 筆觸是藍色 if(key=='s'||key=='S')save("output.png"); }
prcessing 有個很棒的地方,和之前用的不一樣
不需要完整寫完並編譯後才會得到錯誤資訊
打的過程中遇到灰色底線就是錯誤資訊提醒
項此時就在提示 我們上面已經寫了 void setup() 是互動模式寫法
但下面又寫了 line()... 為直接模式
另一個 processing 的好處 只要我們不清楚任何用法時
選取後按右鍵 > 在參考文件裡找選取的字...
馬上會跳轉至解釋頁面
內容很仔細可以看見格式或是一些效果如何撰寫
但是剛才的寫法太過生硬
💾 程式碼存檔區
//互動模式 Interactive Mode (Active Mode) void setup(){ //設定 size(500,500); background(255); //改白色背景 背景(255); } void draw(){ //畫圖 每秒畫60次 if(mousePressed){ //如果 mouse有按下去 line(mouseX,mouseY,pmouseX,pmouseY); }//畫線(滑鼠座標mouseX,mouseY,到之前滑鼠座標pmouseX,pmouseY); } void keyPressed(){ //如果有按下keyboard的key if(key=='1')stroke(255, 0, 0); //如果按下數字1 筆觸是紅色 if(key=='2')stroke( 0,255, 0); //如果按下數字2 筆觸是綠色 if(key=='3')stroke( 0, 0,255); //如果按下數字3 筆觸是藍色 if(key=='s'||key=='S')save("output.png"); if(key=='+')strokeWeight(10); if(key=='-')strokeWeight(1); }
我們設置一個W int w=1;
所以可以輕鬆地控制筆刷大小
有個同學很聰明一邊按+一邊畫圖
所以我效仿了他,有毛筆的效果
因為最下方有
println(w);
在我們按壓+ -的同時會在小黑印出 w 當下的值
💾 程式碼存檔區
//互動模式 Interactive Mode (Active Mode) void setup(){ //設定 size(500,500); background(255); //改白色背景 背景(255); } void draw(){ //畫圖 每秒畫60次 if(mousePressed){ //如果 mouse有按下去 line(mouseX,mouseY,pmouseX,pmouseY); }//畫線(滑鼠座標mouseX,mouseY,到之前滑鼠座標pmouseX,pmouseY); } int w=1; void keyPressed(){ //如果有按下keyboard的key if(key=='1')stroke(255, 0, 0); //如果按下數字1 筆觸是紅色 if(key=='2')stroke( 0,255, 0); //如果按下數字2 筆觸是綠色 if(key=='3')stroke( 0, 0,255); //如果按下數字3 筆觸是藍色 if(key=='s'||key=='S')save("output.png"); if(key=='+')strokeWeight(++w); if(key=='-')strokeWeight(--w); println(w); }
👋最後
老師介紹了一個網頁
是 processing 的論壇
帶著大家註冊帳號
教學如何在這個論壇上撰寫與發佈
也可以去看看老師之前發佈過的
最後一樣上傳 github





沒有留言:
張貼留言