2024年9月16日 星期一

聽均一席話如聽一席話 Week02 11160712 互動的小遊戲

 //week02_1_pacman_radians_mouseX

void setup() {
  size(400, 400);
}
void draw() {
  background(255);
  fill(#FFDC0F);//填充黃色
  float a =radians(mouseX);
  for (int x=0; x<400; x+=100) {
    for (int y=0; y<400; y+=100) {
      arc(x+50, y+50, 100, 100, 0+a, PI*2-a, PIE);
      //X座標,Y,寬,高,開始,結束,蘋果派的方法畫
    }
  }
}
透過滑鼠移動來控制小精靈嘴巴的開闔



//week02_2_pacman_radians_frameCount
void setup() {
  size(400, 400);
}
void draw(){
  background(255);
  fill(#FFDC0F);//填充黃色
  float a=radians(frameCount);
  if(a>PI/4)a=a-PI/4;
  arc(200,200,300,300,0+a,PI*2-a,PIE);
  
}
自動張合嘴巴但不完全


//week02_3_pacman_open_close_open_close
void setup() {
  size(400, 400);
}
void draw(){
  background(255);
  fill(#FFDC0F);//填充黃色
  float a=frameCount%180;
  if(a<45)a=radians(a);
  else if(a<90)a=radians(90-a);
  else if(a<135)a=radians(a-90);
  else if(a<180)a=radians(180-a);
  arc(200,200,300,300,0+a,PI*2-a,PIE);
  
}
自動張合嘴巴

//week02_4_for_for_open_close_open_close
void setup() {
  size(400, 400);
}
void draw() {
  background(255);
  fill(#FFDC0F);//填充黃色
  for (int x=0; x<400; x+=100) {
    for (int y=0; y<400; y+=100) {
      float a=frameCount%180;
      if (a<45)a=radians(a);
      else if (a<90)a=radians(90-a);
      else if (a<135)a=radians(a-90);
      else if (a<180)a=radians(180-a);
      arc(x+50, y+50, 100, 100, 0+a, PI*2-a, PIE);
    }
  }
}
自動張合嘴巴且有16個小精靈


//week02_5_pacman_if_keyPressed_keyCode
void setup() {
  size(400, 400);
}
int x=200,y=200;
void draw() {
  background(255);
  fill(#FFDC0F);//填充黃色
  if(keyPressed && keyCode==RIGHT)x++;
  if(keyPressed && keyCode==LEFT)x--;
  if(keyPressed && keyCode==UP)y--;
  if(keyPressed && keyCode==DOWN)y++;
  ellipse(x,y,100,100);
}
透過上下左右鍵控制圓球

//week02_6_pacman_b_direction_from_week02_3
void setup() {
  size(400, 400);
}
void draw(){
  background(255);
  fill(#FFDC0F);//填充黃色
  float a=frameCount%180;
  float b=radians(mouseX);
  if(a<45)a=radians(a);
  else if(a<90)a=radians(90-a);
  else if(a<135)a=radians(a-90);
  else if(a<180)a=radians(180-a);
  arc(200,200,300,300,b+0+a,b+PI*2-a,PIE);
  
}
自動張合嘴巴並透過上下左右鍵控制

//week02_7_pacman_d_direction_void_keyPressed_keyCode
void setup() {
  size(400, 400);
}
float x=200, y=200, d=PI/2*1;
void draw() {
  background(255);
  fill(#FFDC0F);
  float a=frameCount%180;
  if (a<45)a=radians(a);
  else if (a<90)a=radians(90-a);
  else if (a<135)a=radians(a-90);
  else if (a<180)a=radians(180-a);
  arc(x, y, 100, 100, d+0+a, d+PI*2-a, PIE);
}
void keyPressed() {
  if (keyCode==RIGHT) {
    x++;
    d=PI/2*0;
  } else if (keyCode==DOWN) {
    y++;
    d=PI/2*1;
  } else if (keyCode==LEFT) {
    x--;
    d=PI/2*2;
  } else if (keyCode==UP) {
    y--;
    d=PI/2*3;
  }
}

透過上下左右鍵控制嘴巴開合方向

//week02_8_pacman_dx_dy_d_void_keyPressed
void setup() {
  size(400, 400);
}
int x=200, y=200, d=0;
void draw() {
  background(255);
  fill(#FFDC0F);
  float a = 0.5;
  int [] dx = {1,0,-1,0};
  int [] dy = {0,1,0,-1};
  x += dx[d] ;
  y += dy[d] ;
  arc(x, y, 100, 100, PI/2*d + a, PI/2*d+PI*2-a, PIE);
}
void keyPressed() {
  if (keyCode==RIGHT) d=0;
  if (keyCode==DOWN) d=1;
  if (keyCode==LEFT) d=2;
  if (keyCode==UP) d=3;
}
自動往前走並上下左右鍵控制移動方向

//week02_9_pacman_radians_abs_frameCount_if_keyPressed
void setup() {
  size(400, 400);
}
int x=200, y=200, d=0;
void draw() {
  background(255);
  fill(#FFDC0F);
  float a = radians(abs(frameCount%90-45));
  int [] dx = {1,0,-1,0};
  int [] dy = {0,1,0,-1};
  if(keyPressed)x += dx[d] ;
  if(keyPressed)y += dy[d] ;
  arc(x, y, 100, 100, PI/2*d + a, PI/2*d+PI*2-a, PIE);
}
void keyPressed() {
  if (keyCode==RIGHT) d=0;
  if (keyCode==DOWN) d=1;
  if (keyCode==LEFT) d=2;
  if (keyCode==UP) d=3;
}
自動開合嘴巴並透過上下左右鍵控制移動方向

沒有留言:

張貼留言