2022年9月26日 星期一

互動week04

1. 製作一顆球且恆動

void setup(){

  size(500,500);

}

int x=250, y=250;//變數(位置)

void draw(){

  ellipse( x, y, 10, 10);//橢圓

  x = x + 1;

  y = y + -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;
  if( x < 0) vx = -vx;
}

3. 去掉球殘影且碰到底部長條會反彈

void setup(){
  size(500,500);
}
float x=250, y=250;//變數(位置)精細
float vx = 1.0 , vy = -0.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( y < 0) vy = -vy;
  if( x < 0) vx = -vx;
  if( y>470 && x>boardX && x<boardX+100 ) vy = -vy;
}

4.改變球碰板子後移速且控子板子長度

void setup(){
  size(500,500);
}
float x=250, y=250;//變數(位置)精細
float vx = 2.0 , vy = -1.5;
float boardX, boardY=470, boardW=100, boardH=20;
void draw(){
  boardX = mouseX-boardW/2;
  background(#FFFFF2);//背景,去除殘影
  rect(boardX, boardY, boardW, boardH);//控制的板子
  ellipse( x, y, 10, 10);//橢圓
  x = x + vx;
  y = y + vy;
  if( x > 500) vx = -vx;
  if( y < 0) vy = -vy;
  if( x < 0) vx = -vx;
  if( (y>boardY && y<boardY+boardH) &&
      (x>boardX && x<boardX+boardW) ){
    vy = -vy;
    vx += (mouseX-pmouseX)/2;//mouse的移動速度
  }
  if(mousePressed && mouseButton==LEFT) boardW *= 1.01;//左鍵板子變長1%
  if(mousePressed && mouseButton==RIGHT) boardW *= 0.99;//右鍵板子縮短1%
}


B

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.陣列9X9個黑白棋

void setup(){
  size(500,500);
}
int [][] go ={
  {0,0,0,1,0,0,0,0,1},
  {0,0,0,0,0,1,0,0,0},
  {0,1,0,0,0,0,0,0,1},
  {0,0,0,0,0,0,0,0,0},
  {0,0,0,0,0,1,0,0,1},
  {0,0,0,1,0,0,0,0,1},
  {0,1,0,0,0,0,1,0,0},
  {0,0,0,1,0,0,0,0,0},
  {0,0,0,0,0,0,0,0,0},
};//陣列 array 9X9
void draw(){ //用迴圈,來畫出很多棋
  for(int i=0; i<9; i++){//左手i 對應y座標
    for(int j=0; j<9; j++){//左手j 對應x座標
    if( go[i][j]==1) fill(0);
    else fill(255);
      ellipse(50+j*50, 50+i*50, 50, 50);
    }
  }
}

3.畫出棋盤並減少棋子數量

void setup(){
  size(500,500);
}
int [][] go ={
  {0,0,0,1,0,0,0,0,1},
  {0,0,0,0,0,1,0,0,0},
  {0,1,0,0,0,0,0,2,1},
  {0,0,2,0,0,0,0,0,0},
  {0,0,0,2,0,1,0,0,1},
  {0,0,0,1,0,0,0,0,1},
  {0,1,0,0,0,0,1,0,0},
  {0,0,0,1,2,0,0,0,0},
  {0,0,0,0,0,0,0,0,0},
};//陣列 array 9X9
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++){//左手i 對應y座標
    for(int j=0; j<9; j++){//左手j 對應x座標
      if( go[i][j]==1){
        fill(0);//1:黑棋
        ellipse(50+j*50, 50, 40, 40);
      }else if(go[i][j]==2){
        fill(255);//2:白棋
        ellipse(50+j*50, 50+i*50, 40, 40);
      }
    }
  }
}


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}
};//陣列 array 9X9
int N=0;//目前有幾個棋子
void mousePressed(){
  int j = (mouseX-25)/50; //右手j, 對應x座標
  int i = (mouseY-25)/50; //左手i, 對應y座標
  go[i][j] = (N%2==0) ? 1 :2 ; ///if(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++){//左手i 對應y座標
    for(int j=0; j<9; j++){//左手j 對應x座標
      if( go[i][j]==1){
        fill(0);//1:黑棋
        ellipse(50+j*50, 50+i*50, 40, 40);
      }else if(go[i][j]==2){
        fill(255);//2:白棋
        ellipse(50+j*50, 50+i*50, 40, 40);
      }
    }
  }
}

沒有留言:

張貼留言