Processing 程式碼
利用 array I frameCount 讓照片自動切換 看起來像影片PImage [] img = new PImage[3]; void setup() { img[0] = loadImage("sinzl01.png"); img[1] = loadImage("sinzl02.png"); img[2] = loadImage("sinzl03.png"); } int I = 0; //0,1,2,0,1,2,0,1,2... void draw() { background(img[I]); if (frameCount%20==0) I = (I+1)%3; }利用 frameCount 讓 ellipse 在限制的範圍裡來回移動void setup() { size(500, 300); //寬度是500,兩倍是1000 } void draw() { background(#FFFFF2); float x = (frameCount*5 % 1000); if (x>500) x = 1000-x; //超過500範圍,就折回來 for (int y=30; y<300; y+=50) { ellipse(x, y, 30, 30); } }用之前教過的 pushMatrix() popMatrix() 在裡面加上 frameCount搭配 mouseX mouseY 讓火雞自己動也跟著滑鼠游標移動PImage img; void setup() { size(500, 300); img = loadImage("turkey.png"); imageMode(CENTER); } void turky(int x, int y) { pushMatrix(); translate(mouseX, mouseY); rotate(radians(frameCount)); image(img, 0, 0); popMatrix(); } void draw() { background(255); turky(mouseX, mouseY); //會跟著mouse動 turky(100, 100); //左上角 turky(400, 100); //右上角 turky(100, 200); //左下角 turky(400, 200); //右下角 }利用 PShape pushMatrix() popMatrix() 畫出 3DgundamPShape gundam; void setup() { size(500, 500, P3D); //小心P3D gundam = loadShape("Gundam.obj"); } void draw() { background(#BBFF81); //淡綠色 pushMatrix(); translate(mouseX, mouseY); rotateY(radians(frameCount)); rotate(radians(180)); scale(10, 10, 10); shape(gundam, 0, 0); //shape(gundam, 0, 0, 250/2, 500/2) popMatrix(); }多加一個 for迴圈 畫出好多個 GundamPShape gundam; void setup() { size(500, 500, P3D); //小心P3D gundam = loadShape("Gundam.obj"); } void draw() { background(#BBFF81); //淡綠色 drawGundam(mouseX, mouseY); for (int x=0; x<=500; x+=500/4) { drawGundam(x, 300); } } void drawGundam(int x, int y) { pushMatrix(); translate(x, y); rotateY(radians(frameCount)); rotate(radians(180)); scale(10, 10, 10); shape(gundam, 0, 0); //shape(gundam, 0, 0, 250/2, 500/2) popMatrix(); }做出最簡單的俄羅斯方塊 可以利用方向建移動void setup() { size(300, 600); } float x = 50, y = 50; void draw() { background(0); fill(153, 0, 204); rect(x, y-25, 25, 25); rect(x+25, y, 25, 25); rect(x, y, 25, 25); rect(x, y+25, 25, 25); if (frameCount%50==0) y += 25; } void keyPressed() { if (keyCode==RIGHT) x += 25; if (keyCode==LEFT) x -= 25; }用 array 畫出俄羅斯方塊的背景void setup() { size(240, 440); // y:20+2 x:10+2 } void draw() { for (int i=0; i<22; i++) { for (int j=0; j<12; j++) { if (grid[i][j]==1) fill(119, 119, 119); if (grid[i][j]==0) fill(0); if (grid[i][j]==2) fill(153, 0, 204); rect(j*20, i*20, 20, 20); } } } int [][] grid = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, };把剛剛的 if() 改成 c now 執行結果會跟上一個一樣color [] c = {#000000, #777777, #9900CC, #CCCC00, #00B500, #CC0000}; //會有10種顏色 //黑,灰,紫,黃,綠,紅...... void setup() { size(240, 440); // y:20+2 x:10+2 } void draw() { for (int i=0; i<22; i++) { for (int j=0; j<12; j++) { int now = grid[i][j]; fill(c[now]); rect(j*20, i*20, 20, 20); } } } int [][] grid = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, };讓俄羅斯方塊自動落下 觸底停止color [] c = {#000000, #777777, #9900CC, #CCCC00, #00B500, #CC0000, #0000CC, #CC9900, #00000C, #FFFFFF}; //會有10種顏色 //黑,灰,紫,黃,綠,紅...... int T = 2; void setup() { size(240, 440); // y:20+2 x:10+2 } void draw() { for (int i=0; i<22; i++) { for (int j=0; j<12; j++) { int now = grid[i][j]; fill(c[now]); rect(j*20, i*20, 20, 20); } } if (frameCount%50==0) { int bad=0; //一開始沒有壞掉 for (int i=20; i>=1; i--) { //從下到上的迴圈 for (int j=1; j<12-1; j++) { //最左右不動,中間才動 if (grid[i][j]==9) { //如果是可以移動的主角,暫定是2,之後是0 if (grid[i+1][j]!=0 && grid[i+1][j]!=9) bad=1; } //不能往下走 } } if (bad==0) { for (int i=20; i>=1; i--) { for (int j=1; j<12-1; j++) { if (grid[i][j]==9) { grid[i-1][j] = 9; grid[i][j] = 0; } } } } else { for (int i=20; i>=1; i--) { for (int j=1; j<12-1; j++) { if (grid[i][j]==9) { grid[i][j] = T; } } } } } } int [][] grid = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, };
沒有留言:
張貼留言