2022年10月30日 星期日

大拇指的啦

反彈球

畫面大小(500,500)

用ellispe(x,y,寬,長) 來畫圓形

x+1 ,y-1來使球移動

void setup(){

   size(500,500); 

}

float x=250 , y=250;

void draw(){

   ellipse( x, y , 10 ,10 );

   x=x+1;

   y=y-1;

}

設立變數vx,vy來控制球速

設立上下界來反彈 

x = x + vx;

y = y + vy;

if ( x > 500 || x < 0 )    vx = -vx;

if ( y < 0   || y > 500 )  vy = -vy;

}

板子反彈

設立變數boardX = mouseX 滑鼠控制板子位置

rect( mouseX , 470 , 寬 , 長 , 弧度)方塊能跟滑鼠一起動。

預設板子的前後25會觸發反彈

void draw(){

  background(#FFFFF2);

  int boardX = mouseX;

  rect(boardX-25 , 470 , 50 ,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-25 && x<boardX+25) vy=-vy;///反彈

   vx+= (mouseX - pmouseX)/2;///算出滑鼠的移動量 加在vx

}

用mousePressed() 跟 mouseButton()來移動板子

if ( mousePressed && mouseButton == LEFT ) boardW *= 1.01

if ( mousePressed && mouseButton == RIGHT ) boardW *= 0.99

整體完成反彈球

void setup(){
 size(500,500);
}
float x=250,y=250;
float vx=2.0,vy=-1.5;
float boardx,boardy=470,boardW=100,boardH=15;
void draw(){
 background(#FFEAD1);
 boardx=mouseX- boardW/2;
 rect( boardx ,boardy,boardW,boardH,5);
 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>boardy && y<boardy+30 ) && ( 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;
}

圍棋
用ellispe(x,y,寬,長) 來畫圓形
雙迴圈來將x,y填滿圓形
將全部棋先設為0
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},
};
void draw(){
  for (int x=50;x<=450;x+=50){
     for (int y=50;y<=450;y+=50){
        ellipse(x,y,50,50); 
     }
  }
}



簡易棋盤
雙迴圈畫線
line(x1,y1,x2,y2) 分別將x y乘i來產生多條線
void draw(){
   background(#EABB74);
   for(int i=1;i<=9;i++){
     for(int j=1;j<=9;j++){
       line( 50 , 50*i , 450 , 50*i);
       line(50*i,   50 , 50*i, 450 );
     }
   }
}


使用if else 條件 如果讀到1 設黑 反之 設白
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);
         }  
      }
   }
完整的棋盤+棋子
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=0;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);
         }  
      }
   }
}

沒有留言:

張貼留言