2021年12月6日 星期一

week04

 今天一開始老師先教我們畫棋盤

先用簡單的line來畫出9條直線


之後我們可以使用for迴圈來簡化這個程式

再來只要把橫線的程式也加上去,就可以完成一個8*8的棋盤

之後第二節課我們先教陣列

就可以把陣列套進去剛剛的棋盤程式碼裡面

我們可以修改陣列裡面的值,去決定棋子該放在哪一格
只要把0改成1,他所對應的棋盤位置就會出現一個棋子
int [][]go={
  {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},
  {1,1,0,0,0,0,0,0,0} };

void setup()
{
  size(500,500);
}
void draw()
{
  background(253,236,180);
  for(int i=0;i<9;i++){
    line(50+50*i,50,50+50*i,450);
    line(50,50+50*i,450,50+50*i);
  }
  for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
      if(go[i][j]==1){
        int x=50+50*j,y=50+50*i;
        fill(255);ellipse(x,y,40,40);
      }
    }
  }
}

之後只要加上mosuePressed就可以用滑鼠點擊放棋子了

int [][]go={
  {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},
  {1,1,0,0,0,0,0,0,0} };

void setup()
{
  size(500,500);
}
void draw()
{
  background(253,236,180);
  for(int i=0;i<9;i++){
    line(50+50*i,50,50+50*i,450);
    line(50,50+50*i,450,50+50*i);
  }
  for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
      if(go[i][j]==1){
        int x=50+50*j,y=50+50*i;
        fill(255);ellipse(x,y,40,40);
      }
    }
  }
}
void mousePressed(){
  int j=(mouseX-50)/50;
  int i=(mouseY-50)/50;
  go[i][j]=1;
}

但是這樣有可能會因為系統無條件捨去導致滑鼠點擊位置與實際落子位置有所偏差
所以我們要稍微修改一下
void mousePressed(){
  int j=(mouseX-50)/50;
  int i=(mouseY-50)/50;
  go[i][j]=1;
裡面的mouseX-50改成mouseX-25
mouseY也是同理
這樣就可以讓棋子落子的位置更加精準

之後我們再更進階的加上mosueButton使用滑鼠的左右以及中鍵分別可以放白棋.黑棋以及消除棋子

再來我們學的是利用cos()及sin()畫出360個圓,每度都有1個小的圓

void setup(){
  size(500,500);
}
void draw(){
  for(float a=0;a<360;a++){
    float x=250+250*cos(radians(a));
    float y=250+250*sin(radians(a));
    ellipse(x,y,4,4);
  }
}
的作品

最後一節課老師跟我們講了一個可以看到很多人自己用Processing畫畫的網站OpenProcessing.org

可以看到很多人的作品

之後回到程式,我們可以加上mouse
移動滑鼠就可以改變圓的型態


void setup(){
  size(500,500);
}
void draw(){
  background(128);
  for(float a=0;a<360;a++){
    float x=250+mouseX*cos(radians(a));
    float y=250+mouseY*sin(radians(a));
    ellipse(x,y,mouseY,mouseY);
  } 

void setup(){
  size(500,500);
}
float w=30;
float r=0,g=255,b=0;
void draw(){
  stroke(r,g,b);noFill();
    r+=random(3);if(r>255)r=0;
    g+=random(3);if(g>255)g=0;
    b+=random(3);if(b>255)b=0;
    ellipse(mouseX,mouseY,w,w);
    w+=0.5;
    if(w>100)w=30;
}




沒有留言:

張貼留言