2023年11月23日 星期四

小凱 Week11

 第一節課

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);
   }
 }
}

week11-2
在第一個程式上加上座位號碼,發現會有數字重複。

week11-3
先把數字固定(例如從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);
   }
 }
}

week11-4
同學提問說要如何切畫面來換關卡(現在只有設個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-5
week11-4加上第二個場景(紅色)。


week11-6
加上鍵盤右鍵,讓灰色方塊移動到白色區域,就跳到下一關。


week11-7
在第三個場景加上時間倒數,倒數完回到場景一,就達成循環。
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;
  }
}

week11-8
換另一個題目,要試著解決投籃的拋物線問題。
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;
}

第三節課

week11-9
成功做出拋物線,運用前幾個禮拜學到的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-A
加上暫停功能

week11-B
做出踩地雷

week11-C
貪吃蛇






沒有留言:

張貼留言