第一節課
week11-1
有一篇文章,希望可以快速排位置,先來劃座位的格子(4*4)。
void setup(){ size(600,500); } void draw(){ background(255); for(int i=0;i<4;i++){ for(int j=0;j<6;j++){ rect(j*100,i*100,100,100); } } }
把格子加上顏色(紅色)跟文字(Hello)。
void setup(){ size(600,500); } 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("Hello",j*100+25,i*100+50); } } }
在第一個程式上加上座位號碼,發現會有數字重複。
先把數字固定(例如從10到30),再用一個迴圈做交換,在這裡做100次交換。
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)); value[i][j]=i*6+j+10;//從10開始,數字不重複 } } for(int k=0;k<100;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); } } }
同學提問說要如何切畫面來換關卡(現在只有設個state所以是白色)
int state=0; void setup(){ size(400,400); } void draw(){ if(state==0){ background(255); }else if(state==1){ background(255,0,0); }else if(state==2){ background(0,255,255); } }
week11-4加上第二個場景(紅色)。
加上鍵盤右鍵,讓灰色方塊移動到白色區域,就跳到下一關。
在第三個場景加上時間倒數,倒數完回到場景一,就達成循環。
int state=0; void setup(){ size(400,400); textSize(50); } int x=50,y=50,t=100; void draw(){ if(state==0){ background(255); fill(0); text("Click to Start",80,200); x=50; }else if(state==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){ background(0,255,255); fill(255,255,0); text("Wait "+t,80,200); t--; if(t==0) state=0; } } void mousePressed(){ if(state==0) state=1; } void keyPressed(){ if(state==1&&keyCode==RIGHT){ x+=10; if(x==300) state=2; } }
換另一個題目,要試著解決投籃的拋物線問題。
PImage imgRack; void setup(){ size(300,300); imgRack=loadImage("rack.jpg"); } void draw(){ background(255); image(imgRack,0,0); 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; }
成功做出拋物線,運用前幾個禮拜學到的flying(true&false)。
PImage imgRack; void setup(){ size(300,300); imgRack=loadImage("rack.jpg"); } void draw(){ background(255); image(imgRack,0,0); if(flying){ x+=vx; y+=vy; vy+=0.98; }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); } boolean flying=false; float x,y,vx,vy; float posX=-100,posY=-100; void mousePressed(){ x=posX=mouseX; y=posY=mouseY; flying=false; } void mouseReleased(){ vx=posX-mouseX; vy=posY-mouseY; flying=true; }
加上暫停功能
做出踩地雷
week11-C
貪吃蛇
沒有留言:
張貼留言