2022年9月26日 星期一

互技概 Week04

 0. 球球

0-1. 球走

void setup(){

  size(500,500);

}

int x=250, y=250; ///位置

void draw(){

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

  x=x+1;

  y=y-1;

}


0-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;

  if(y>500) vy = -vy;

}



0-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); ///板子(長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;

}

0-4. 加速度and讓板子縮放

void setup(){

  size(500,500);

}

float x=250, y=250; ///位置

float vx=1.0, vy=-0.5;

float boardX, boardY=470, boardW=100, boardH=20;

void draw(){

  boardX = mouseX-boardW/2;

  background(#FFFFF2); ///背景去除殘影

  int boardX = mouseX;

  rect(boardX, boardY, boardW, boardH); ///板子(長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>boardY && x<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;

}


1. go

1-1. 9入旗子

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);  

    }

   }

}

1-2. 修改迴圈

void setup(){

  size(500,500);

}

int [][] go ={

  {0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,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,0,0,0,0},

  {0,0,1,0,0,1,0,0,0},

  {0,0,0,0,1,0,0,0,0},

  {0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,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);  

    }

   }

}

1-3. 棋盤

void setup(){

  size(500,500);

}

int [][] go ={ ///0沒有旗子 1黑 2白

  {0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,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,0,0,0,0},

  {0,0,1,0,0,1,0,0,0},

  {0,0,0,0,1,0,0,0,0},

  {0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0},

};

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, 50, 50);  

      }else if(go[i][j] == 2){

        fill(255);

        ellipse(50+j*50, 50+i*50, 50, 50);  

      }  

    }

  }

}

1-4. 放旗子

///go

void setup(){

  size(500,500);

}

int [][] go ={ ///0沒有旗子 1黑 2白

  {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 i = (mouseX-25)/50; ///按的位置

  int j = (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);  

      }  

    }

  }

}




沒有留言:

張貼留言