2022年9月26日 星期一

互動技術 week04 課堂筆記

 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 - 2 (1)稍微做更改
void setup()
{
  size(500,500);
}
float x=250, y=250;
float vx=2.0, vy=-0.5;
void draw()
{
  ellipse(x, y, 10, 10);
  x = x+vx;
  y = y+vy;
  if(x>500 || x<0) 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 || x<0) vx=-vx;
  if(y<0) vy=-vy;
  if(y>470 && x>boardX && x<boardX+100) vy=-vy;
}

1 - 4 最後的修改
void setup()
{
  size(500,500);
}
float x=250, y=250;
float vx=2.0, vy=-2.5;
float boardX, boardY=470, boardW=500, 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 || x<0) vx=-vx;
  if(y<0) vy=-vy;
  ///if(y>470 && x>boardX && x<boardX+100) 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 - 1 棋盤
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 - 2 黑棋、白棋
void setup()
{
  size(500,500);
}
int [][] go ={
    {0,1,0,1,0,1,0,1,0},    ///0是白棋,1是黑棋
    {1,0,1,0,1,0,1,0,1},
    {0,1,0,1,0,1,0,1,0},
    {1,0,1,0,1,0,1,0,1},
    {0,1,0,1,0,1,0,1,0},
    {1,0,1,0,1,0,1,0,1},
    {0,1,0,1,0,1,0,1,0},
    {1,0,1,0,1,0,1,0,1},
    {0,1,0,1,0,1,0,1,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);
    }
  }
}

2 - 3 增加背景
void setup()
{
  size(500,500);
}
int [][] go ={
    {2,1,0,1,0,1,0,1,2},
    {1,2,1,0,1,0,1,2,1},
    {0,1,2,1,0,1,2,1,0},
    {1,0,1,2,1,2,1,0,1},
    {0,1,0,1,2,1,0,1,0},
    {1,0,1,2,1,2,1,0,1},
    {0,1,2,1,0,1,2,1,0},
    {1,2,1,0,1,0,1,2,1},
    {2,1,0,1,0,1,0,1,2},
};
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);
      }
    }
  }
}

2 - 4 用滑鼠點擊可以產生棋子
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 ;
  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);
      }
    }
  }
}










沒有留言:

張貼留言