2024年9月16日 星期一

BK Week02 小精靈小遊戲

Processing 程式碼

召喚好多小精靈
void setup() {
  size(400, 400);
}

void draw() {
  background(0, 0, 0);
  fill(#F0CF2C); //填充黃色
  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座標, 寬, 高, 開始, 結束, 蘋果派的方法畫
    }
  }
}


用不一樣的方式畫一個小精靈
void setup() {
  size(400, 400);
}

void draw() {
  background(0, 0, 0);
  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);
}


讓小精靈會開嘴巴跟閉嘴巴
void setup(){
   size(400,400); 
}

void draw(){
   background(0,0,0);
   fill(#FFDC0F);
   float a =frameCount%180; //0...45...90...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);
}



很多小精靈會開嘴巴跟閉嘴巴
void setup() {
  size(400, 400);
}

void draw() {
  background(0, 0, 0);
  fill(#F0CF2C); //填充黃色
  for (int x=0; x<400; x+=100) {
    for (int y=0; y<400; y+=100) {
      float a =frameCount%180; //0...45...90...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); //畫弧度
      //X座標, Y座標, 寬, 高, 開始, 結束, 蘋果派的方法畫
    }
  }
}


按鍵盤上下左右讓黃色圓形移動
void setup(){
   size(400,400); 
}

int x=200,y=200; //pacman座標
void draw(){
   background(0,0,0);
   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);
}


根據滑鼠X座標決定小精靈的開口方向
void setup() {
  size(400, 400);
}

void draw() {
  background(0, 0, 0);
  fill(#FFDC0F);
  float a =frameCount%180; //0...45...90...180
  float b=radians(mouseX); //根據滑鼠X座標決定小精靈的開口方向
  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); }


按鍵盤上下左右控制小精靈開口方向
void setup(){
   size(400,400); 
}

float x=200, y=200, d=PI/2*0;
void draw(){
   background(0,0,0);
   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;
  }
}



讓開嘴巴的小精靈移動
void setup() {
  size(400, 400);
}
int x=200, y=200, d=0;
void draw() {
  background(0, 0, 0);
  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;
}


讓會開關嘴巴的小精靈移動
void setup() {
  size(400, 400);
}
int x=200, y=200, d=0;
void draw() {
  background(0, 0, 0);
  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;
}





沒有留言:

張貼留言