2024年9月16日 星期一

Week02 Pacman的一天

 



今天第一個程式:
第一個:
void setup()
{
  size(400, 400);
}
void draw()
{
  background(255);
  fill(#FFDC0F);//填充黃色
  float angle=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 + angle, PI*2 - angle, PIE);//變畫弧度
      //(X座標,Y座標,寬,高,開始,結束,PIE)
    }
  }
}

第二個(這個程式會讓pacman開到不見):
void setup()
{
  size(400, 400);
}
void draw()
{
  background(255);
  fill(#FFDC0F);//填充黃色
  float angle=radians(frameCount);
  if (angle>PI/4)angle=angle-PI/4;
  arc(200, 200, 300, 300, 0+angle, PI*2-angle, PIE);
}


第三個(這個有修改過,所以可以控制angle的值,用radians、frameCount,就可以自動開關
):
void setup()
{
  size(400, 400);
}
void draw()
{
  background(255);
  fill(#FFDC0F);//填充黃色
  float angle=frameCount%180;
  if (angle<45)angle=radians(angle);
  else if (angle<90)angle=radians(90-angle);
  else if (angle<135)angle=radians(angle-90);
  else if (angle<180)angle=radians(180-angle);
  arc(200, 200, 300, 300, 0+angle, PI*2-angle, PIE);
}

第四個(用之前的改,變很多個pacman):
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 angle=frameCount%180;
      if (angle<45)angle=radians(angle);
      else if (angle<90)angle=radians(90-angle);
      else if (angle<135)angle=radians(angle-90);
      else if (angle<180)angle=radians(180-angle);
      arc(x+50, y+50, 100, 100, 0 + angle, PI*2 - angle, PIE);
    }
  }
}

第五個(加上keyPressed,偵測按鍵按下就往哪裡走):
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);
}

第六個(用第三個程式修改,使用mouseX,利用mouse在畫面裡面的X座標,改變radians的值,pacman的開口就會改變):
void setup()
{
  size(400, 400);
}
void draw()
{
  background(255);
  fill(#FFDC0F);//填充黃色
  float angle=frameCount%180;
  float b=radians(mouseX);
  if (angle<45)angle=radians(angle);
  else if (angle<90)angle=radians(90-angle);
  else if (angle<135)angle=radians(angle-90);
  else if (angle<180)angle=radians(180-angle);
  arc(200, 200, 300, 300, b+0+angle, b+PI*2-angle, PIE);
}
第七個(把pacman的動畫加進去,然後用上下左右方向鍵改變pacman的開口):
void setup()
{
  size(400, 400);
}
float x=200, y=200, d=0;
void draw()
{
  background(255);
  fill(#FFDC0F);//填充黃色
  float angle=frameCount%180;
  if (angle<45)angle=radians(angle);
  else if (angle<90)angle=radians(90-angle);
  else if (angle<135)angle=radians(angle-90);
  else if (angle<180)angle=radians(180-angle);
  arc(x, y, 100, 100, d+0+angle, d+PI*2-angle, PIE);
}
void keyPressed()
{
  if (keyCode==RIGHT) {
    x++;
    d=PI/2*0;
  }
  if (keyCode==DOWN) {
    y++;
    d=PI/2*1;
  }
  if (keyCode==LEFT) {
    x--;
    d=PI/2*2;
  }
  if (keyCode==UP) {
    y--;
    d=PI/2*3;
  }
}

第八個(把第七個程式縮短):
void setup()
{
  size(400, 400);
}
int x=200, y=200, d=0;
void draw()
{
  background(255);
  fill(#FFDC0F);
  float angle=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+angle, PI/2*d+PI*2-angle, PIE);
}
void keyPressed()
{
  if (keyCode==RIGHT)d=0;
  if (keyCode==DOWN)d=1;
  if (keyCode==LEFT)d=2;
  if (keyCode==UP)d=3;
}


第九個(abs=絕對值的意思):
void setup()
{
  size(400, 400);
}
int x=200, y=200, d=0;
void draw()
{
  background(255);
  fill(#FFDC0F);
  float angle=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+angle, PI/2*d+PI*2-angle, PIE);
}
void keyPressed()
{
  if (keyCode==RIGHT)d=0;
  if (keyCode==DOWN)d=1;
  if (keyCode==LEFT)d=2;
  if (keyCode==UP)d=3;
}


快捷鍵:

ctrl+R 執行

ctrl+T 自動排版

ctrl+N 新檔案


Git 指令

cd desktop

git clone https://github.com/mickey1132/2024-Interaction

cd 2024-Interaction

git status

git add .

git status

git config --global user.email mickylin1132@gmail.com

git config --global user.name mickey1132

git commit -m WeekXX

git push

沒有留言:

張貼留言