2022年9月26日 星期一

Da note week04

 1-1 先寫一條會延伸的線

code:

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 把線變成一個點 並用if判斷球碰到邊界時可以反彈

code:

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;

}

4-3 寫底下增加一個可以操縱的反彈板,完成遊戲

code:

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

  if(y<0)vy=-vy;

  if(x<0)vx=-vx;

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

}

1-4 調整變數 按住滑鼠左鍵時可增加底部的長度

code:
void setup(){
  size(500,500);
}
float x=250, y=250;
float vx=2.0,vy=-2.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;
  }
  if(mousePressed && mouseButton==LEFT)boardW*=1.01;
  if(mousePressed && mouseButton==RIGHT)boardW*=0.99;
}
2-1
寫一個迴圈來畫棋子
code:
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
code:
void setup(){
  size(500,500);
}
int [][] go={
  {0,0,0,0,0,0,0,0,1},
  {0,0,0,0,0,0,0,0,1},
  {0,0,0,0,0,0,0,0,1},
  {0,0,0,0,0,0,0,0,1},
  {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},
};
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優化棋盤的線跟白色的旗子
code:
void setup(){
  size(500,500);
}
int [][] go={
  {0,0,0,0,0,0,0,0,1},
  {0,0,0,0,0,0,0,0,1},
  {0,0,0,0,0,0,0,0,1},
  {0,0,0,0,0,0,0,2,1},
  {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},
};
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 新增一段程式碼用滑鼠可以控制下黑棋跟白棋的位置
code:
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);
      }
     }
    }
}


沒有留言:

張貼留言