[TODO]
上課內容:
圖片的動畫
// week13_1_animated_background_array_I_frameCount PImage [] img = new PImage[3]; void setup(){ size(550,370); img[0] = loadImage("snail01.png"); img[1] = loadImage("snail02.png"); img[2] = loadImage("snail03.png"); } int I=0; void draw(){ background(img[I]); if(frameCount%20==0) I = (I+1)%3; }
自己動的動畫
// week13_2_animated_background_frameCount_x 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); } }
動畫
// week13_3_animated_background_turkey_pushMatrix_translate_rotate PImage img; void setup(){ size(500,300); img = loadImage("among_us.png"); imageMode(CENTER); } void among(int x, int y){ pushMatrix(); translate(x, y); rotate(radians(frameCount)); image(img, 0, 0, 128, 67); popMatrix(); } void draw(){ background(0); among(mouseX, mouseY); //會跟著mouse移動 among(100,100); //左上角 among(400,100); //右上角 among(100,200); //左下角 among(400,200); //右下角 }
3D模型1
// week13_4_obj_mtl_gundam_loadShape_shape_obj_mtl_jpg PShape gundam; void setup(){ size(500, 500, P3D); //小心P3D gundam = loadShape("Gundam.obj"); } void draw(){ shape(gundam, 0, 0, 250, 500); }
3D模型2
// week13_5_PShape_gundam_loadShape_shape_pushMatrix_scale_translate_rotate_popMatrix PShape 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(5, 5, 5); shape(gundam, 0, 0); //shape(gundam, 0, 0, 250/2, 500/2); popMatrix(); }
3D模型3
// week13_6_PShape_gundam_for_loop PShape 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(5, 5, 5); shape(gundam, 0, 0); //shape(gundam, 0, 0, 250/2, 500/2); popMatrix(); }
俄羅斯方塊1
// week13_7_tetris_falling 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; }
俄羅斯方塊2
// week13_8_tetris_grid_2d_array_fill_rect 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,2,0,0,0,0,0,0,1}, {1,0,0,0,2,2,0,0,0,0,0,1}, {1,0,0,0,2,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,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, };
俄羅斯方塊3
// week13_9_tetris_color_array_now color [] c= {#000000, #777777, #9900CC, #CCCC00}; //將會有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,2,0,0,0,0,0,0,1}, {1,0,0,0,2,2,0,0,0,0,0,1}, {1,0,0,0,2,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,2,0,0,0,0,0,0,1}, {1,0,0,0,2,2,0,0,0,0,0,1}, {1,0,0,0,2,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, };
俄羅斯方塊4
// week13_10_tetris_falling_if_frameCount_for_for_if 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); } } 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]==2){ //如果是可以移動的主角,暫定是2,之後是1、0 if(grid[i+1][j]!=0 && grid[i+1][j]!=2) bad=1; }//不能往下走 } } if(bad==0){ for(int i=20; i>=1; i--){ for(int j=1; j<12-1; j++){ if(grid[i][j]==2){ grid[i+1][j]=2; grid[i][j]=0; } } } } } } int [][] grid = { {1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,2,0,0,0,0,0,0,1}, {1,0,0,0,2,2,0,0,0,0,0,1}, {1,0,0,0,2,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,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, };俄羅斯方塊5
// week13_11_tetris_falling_alive_9_freeze_dead_T color [] c= {#000000, #777777, #9900CC, #CCCC00, #00B500, #CC0000, #0000CC, #CC9900, #0000CC, #FFFFFF}; //將會有10個顏色 int T = 2; //型號,假設先設成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){ //如果是可以移動的主角,活著,是9 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; //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,9,0,0,0,0,0,0,1}, {1,0,0,0,9,9,0,0,0,0,0,1}, {1,0,0,0,9,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,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, };
沒有留言:
張貼留言