Week11 如何換關卡
week11_1_random_seat
視窗600*500裡面,做一個6*4的表格 ▼
填充顏色和Hello ▼
week11_2_random_seat_array_value
void setup(){ size(600,500); for(int i=0; i<4; i++){ for(int j=0; j<6; j++){ value[i][j] = int(random(40)); } } } int[][] value = new int[4][6]; void draw(){ background(255); for(int i=0; i<4; i++){ for(int j=0; j<6; j++){ fill(#F5B4B4);rect(j*100, i*100, 100, 100); fill(0); text(value[i][j], j*100+25, i*100+50); } } }
week11_3_random_seat_array_value_swap
void setup(){ size(600,500); for(int i=0; i<4; i++){ for(int j=0; j<6; j++){ value[i][j] = i*6+j +10; //從10開,數字不重複 } } for(int k=0; k<4; k++){ int i=int(random(4)), j=int(random(6)); int i2=int(random(4)), j2=int(random(6)); int temp = value[i][j]; value[i][j] = value[i2][j2]; value[i2][j2] = temp; } } int[][] value = new int[4][6]; void draw(){ background(255); for(int i=0; i<4; i++){ for(int j=0; j<6; j++){ fill(#F5B4B4);rect(j*100, i*100, 100, 100); fill(0); text(value[i][j], j*100+25, i*100+50); } } }
week11_4_many_states
int state = 0; void setup(){ size(400,400); } void draw(){ if(state==0){ //第0關 background(255); }else if(state==1){ //第1關 background(255,0,0); }else if(state==2){ //第2關 background(0,0,255); } }
week11_5_many_states_mousePressed
關卡切換,按滑鼠一下進入第1關(紅色) ▼
int state = 0; void setup(){ size(400,400); textSize(50); } void draw(){ if(state==0){ //第0關 background(255); fill(0);text("Click to Start ! ", 70, 200); }else if(state==1){ //第1關 background(255,0,0); }else if(state==2){ //第2關 background(0,0,255); } } void mousePressed(){ if(state==0) state = 1; }
week11_6_many_states_keyPressed
灰色方塊右鍵移動到跟白色方塊重和,換成第2關 ▼
week11_7_many_states_mousePressed_keyPressed_mills_t60
int state = 0; void setup(){ size(400,400); textSize(50); } int x=50, y=50, t=100;; void draw(){ if(state==0){ //第0關 background(255); fill(0);text("Click to Start ! ", 70, 200); x = 50; //進入state0 x重設為50 }else if(state==1){ //第1關 background(255,0,0); fill(255); rect(300,50, 50,50); fill(128); rect(x,y, 50,50); t = 100; }else if(state==2){ //第2關 background(0,0,255); fill(255,255,0); text("Wait "+t, 70,200); t--; if(t==0)state = 0; //倒數結束,回到state0 } } void mousePressed(){ if(state==0) state = 1; } void keyPressed(){ if(state==1 && keyCode==RIGHT){ x+=10; if(x==300)state=2; } }
week11_8_basketball_shoot_curve
▼
PImage imgRack; void setup(){ size(300,300); imgRack = loadImage("rack.jpg"); } void draw(){ background(255); image(imgRack, 0, 0, 300, 300); if(mousePressed){ fill(255); ellipse(posX, posY, 20,20); line(posX,posY, mouseX, mouseY); } fill(#FFA652); ellipse(mouseX, mouseY, 20, 20); } float posX = -100, posY = -100; void mousePressed(){ posX = mouseX; posY = mouseY; }
week11_9_basketball_shoot_curve_2
用boolean、mousePressed和mouseReleased
做出有重力加速度的籃球 ▼
PImage imgRack; void setup(){ size(300,300); imgRack = loadImage("rack.jpg"); } void draw(){ background(255); image(imgRack, 0, 0, 300, 300); if(flying){ x += vx; y += vy; vy += 0.98; // gravity }else{ x = mouseX; y = mouseY; if(mousePressed){ fill(255); ellipse(posX, posY, 20,20); line(posX,posY, x, y); } } fill(#FFA652); ellipse(x, y, 20, 20); } float posX = -100, posY = -100; float x, y, vx, vy; boolean flying = false; void mousePressed(){ x = posX = mouseX; y = posY = mouseY; flying = false; } void mouseReleased(){ vx = posX - mouseX; vy = posY - mouseY; flying = true; }
week11_A_basketball_shoot_curve_pause
PImage imgRack; void setup(){ size(300,300); imgRack = loadImage("rack.jpg"); } boolean gameOver = false; void keyPressed(){ gameOver = true; } void draw(){ background(255); image(imgRack, 0, 0, 300, 300); if(flying){ if(!gameOver){//if(!keyPressed)// 遊戲結束暫停動作 x += vx; //沒有gameOver才能動 y += vy; vy += 0.98; // gravity } }else{ x = mouseX; y = mouseY; if(mousePressed){ fill(255); ellipse(posX, posY, 20,20); line(posX,posY, x, y); } } fill(#FFA652); ellipse(x, y, 20, 20); } float posX = -100, posY = -100; float x, y, vx, vy; boolean flying = false; void mousePressed(){ x = posX = mouseX; y = posY = mouseY; flying = false; } void mouseReleased(){ vx = posX - mouseX; vy = posY - mouseY; flying = true; }
week11_B_mine_sweep
//踩地雷 int [][] mine = new int[9][9]; void setup(){ size(450, 450); for(int i=0; i<9; i++) mine[i][0] = 9; for(int k=0; k<1000; k++){ int i = int(random(9)), j = int(random(9)); int i2 = int(random(9)), j2 = int(random(9)); int temp = mine[i][j]; mine[i][j] = mine[i2][j2]; mine[i2][j2] = temp; } for(int i=0; i<9; i++){ for(int j=0; j<9; j++){ if(mine[i][j]==9){ //遇到紅色地雷,附近格子數字要+1 addNumber(i-1, j-1); addNumber(i-1, j); addNumber(i-1, j+1); addNumber(i, j-1); //addNumber(i, j); 自己 addNumber(i, j+1); addNumber(i+1, j-1); addNumber(i+1, j); addNumber(i+1, j+1); } } } } void addNumber(int i, int j){ if(i<0 || j<0 || i>=9 || j>=9) return; //超過範圍不做事 if(mine[i][j]!=9)mine[i][j]++; //不是地雷+1 } void draw(){ for(int i=0; i<9; i++){ for(int j=0; j<9; j++){ if(mine[i][j]==9)fill(255,128,128); else fill(255); rect(j*50, i*50, 45,45); if(mine[i][j]!=0){ fill(0); text(""+mine[i][j], j*50+23, i*50+23, 45, 45); } } } }
week11_C_snake_360_direction 三角函數 下禮拜繼續
沒有留言:
張貼留言