2022年9月26日 星期一

week04

week04

1.打磚塊

void setup(){

  size(500,500);

}

int x=250,y=250;

void draw(){

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

   x=x+1; (讓橢圓的形狀往x+1方向擴張)

   y=y-1;(讓橢圓的形狀往y-1方向擴張)

}

---------------------------------------------------------------



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(x<0)vx=vx*-1;

   if(y<0)vy=-vy;

   if(y>500)vy=vy*-1;

    4個if讓球碰到牆壁反彈

}

---------------------------------------------



void setup(){

  size(500,500);

}

float x=250,y=250;

float vx=2.0,vy=-0.5;

void draw(){

   background(#E2FF6F); 設定背景更新背景 消暗影

   rect(mouseX,475, 100, 20);

   int boardX = mouseX;

   ellipse(x,y,10,10);

   x=x+vx;

   y=y+vy;

   if(x>500)vx=-vx;

   if(x<0)vx=-vx;

   if(y<0)vy=-vy;

   if(y>470 && x>boardX && x<boardX+100)vy=-vy;

}

滑鼠座標在板子左上角


變形提2

void setup(){
  size(500,500);
}
float x=250,y=250;
float vx=2.0,vy=-0.5;
void draw(){
   background(#E2FF6F);
   rect(mouseX-50,475, 100, 20); 
   ellipse(x,y,10,10);
   x=x+vx;
   y=y+vy;
   if(x>500)vx=-vx;
   if(x<0)vx=-vx;
   if(y<0)vy=-vy;
   if(y>470 && x>=mouseX-50 && x<=mouseX+50)vy=-vy;
   if(y==500) print("game over");
}
滑鼠X標在板子中間
-----------------------------------------


void setup(){
  size(500,500);
}
float x=250,y=250;
float vx=2.0,vy=-0.5;
float boardX, boardY=470,boardW=100,boardH=20;  板子的座標

void draw(){
   boardX=mouseX-boardW/2; 讓滑鼠座標在板子x座標中間
   background(#E2FF66);
   rect(boardX,boardY, boardW, boardH); 

   ellipse(x,y,10,10);
   x=x+vx;
   y=y+vy;
   if(x>500)vx=-vx;
   if(x<0)vx=-vx;
   if(y<0)vy=-vy;

   if(y>boardY && y<boardY+boardH &&
      x>boardX && x<boardX+boardW)
   {vy=-vy; vx+=(mouseX-pmouseX)*0.5;}

   if(mousePressed && mouseButton==LEFT)boardW *= 1.01;//按下滑鼠板子放大
   if(mousePressed && mouseButton==RIGHT)boardW *=0.99;//按下滑鼠板子縮小

}
-------------------------------

2.圍棋

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); 用陣列畫處50*50高寬的棋子 9*9排列
    }
  }
}
-----------------------------------------------




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,1,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},
};
void draw(){
  background(246,194,108);
  for(int i=1 ;i<=9;i++){
    line(50,50*i,450,50*i); ///利用for來畫線x和y
    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); 在陣列職等於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);
      }
    }
  }
}
----------------------------------------


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(){ //當滑鼠按下 計算ij座標,ij初始為0
  int j=(mouseX-25)/50;
  int i=(mouseY-25)/50;

   go[i][j]=(N%2==0) ? 1:2; 當餘數為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);
      }
    }
  }
}

沒有留言:

張貼留言