2022年9月26日 星期一

@W@ Week04

 

Week04

1.)

1-1.小球往右上移動
void setup(){
 size(500,500); 
}
int x=250,y=250;
void draw(){
 ellipse(x,y,10,10);
 x=x+1;
 y=y-1;
}


1-2.小球碰到邊界會轉方向
void setup(){
 size(500,500); 
}
float x=250,y=250;
float vx=1.0,vy=-0.5;
void draw(){
 ellipse(x,y,10,10);
 x=x+vx;
 y=y+vy;
 if(x>500)vx=-vx;
 if(y<0)vy=-vy;
}

1-3.劃出一個會反彈的小方格
void setup(){
 size(500,500); 
}
float x=250,y=250;
float vx=2.0,vy=-1.5;
void draw(){
 background(#FFFFF2);
 int boardX=mouseX;
 rect(boardX,470,100,20);
 ellipse(x,y,10,10);
 x=x+vx;
 y=y+vy;
 if(x>500)vx=-vx;
 if(x<0)vx=-vx;
 if(y<0)vy=-vy;
 if(y>470 && x>boardX && x<boardX+100)vy=-vy;
}

2.)

2-1.加摩擦力
void setup(){
  size(500,500); 
}
float x=250,y=250;
float vx=2.0,vy=-2.5;
float boardX,boardY=470,boardW=100,boardH=20; 
void draw(){
  boardX=mouseX-boardW/2;
  background(#FFFFF2);
  int boardX=mouseX;
  rect(boardX,boardY,boardW,boardH);
  ellipse(x,y,10,10);
  x=x+vx;
  y=y+vy;
  if(x>500)vx=-vx;
  if(x<0)vx=-vx;
  if(y<0)vy=-vy;
  if((y>boardY && y<boardY+boardH) && (x>boardX && x<boardX+boardW)){
    vy=-vy;
    vx+=(mouseX-pmouseX)/2;
  }
  if(mousePressed && mouseButton==LEFT) boardW*=1.01;
  if(mousePressed && mouseButton==RIGHT) boardW*=0.99;
}


2-2.開新檔
void setup(){
 size(500,500); 
}

void draw(){
  for(int x=50;x<=450;x+=50){
    for(int y=50;y<=450;y+=50){
       ellipse(x,y,50,50); 
    }
  }
}

2-3.用陣列寫黑白棋
void setup(){
 size(500,500); 
}
int [][] go={
 {0,0,0,0,0,0,0,0,1},
 {0,0,0,0,0,0,0,0,1},
 {0,1,0,0,0,0,0,0,1},
 {0,0,0,0,0,0,1,0,1},
 {0,0,0,0,0,0,0,0,1},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},  
};
void draw(){
  for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
       if(go[i][j]==1)fill(0);
       else fill(255);
       ellipse(50+j*50,50+i*50,50,50); 
    }
  }
}


3.)

3-1.
void setup(){
 size(500,500); 
}
int [][] go={
 {0,0,0,0,0,0,0,0,1},
 {0,0,0,0,0,0,0,0,1},
 {0,1,0,0,0,0,0,0,1},
 {0,0,0,0,0,0,1,0,1},
 {0,0,0,0,0,0,0,0,1},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},  
};
void draw(){
  background(246,194,108); 改背景色
  for(int i=1;i<=9;i++){畫線
    line(50,50*i,450,50*i);
    line(50*i,50,50*i,450);
  }
  for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
       if(go[i][j]==1){
         fill(0);
         ellipse(50+j*50,50+i*50,40,40); 
       }
       else if(go[i][j]==2){
           fill(255);
           ellipse(50+j*50,50+i*50,40,40);
       }
    }
  }
}


3-2.
void setup(){
 size(500,500); 
}
int [][] go={ ///歸零
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0},  
};
int N=0;
void mousePressed(){
  int j=(mouseX-25)/50;
  int i=(mouseY-25)/50;
  go[i][j]=(N%2==0)?1:2; ///ifN%2==0用1,否則用2
  N++;
}
void draw(){
  background(246,194,108);
  for(int i=1;i<=9;i++){
    line(50,50*i,450,50*i);
    line(50*i,50,50*i,450);
  }
  for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
       if(go[i][j]==1){
         fill(0);
         ellipse(50+j*50,50+i*50,40,40); 
       }
       else if(go[i][j]==2){
           fill(255);
           ellipse(50+j*50,50+i*50,40,40);
       }
    }
  }
}







沒有留言:

張貼留言