2021年10月25日 星期一

week04 圍棋

今天來下圍棋,首先,先來做個棋盤

Step:01 用程式碼畫個棋盤


程式碼如下:

void setup()

{

  size(500,500);

}

void draw()

{

  background(253,236,180);

  line(50,50,50,450);

  line(100,50,100,450);

  line(150,50,150,450);

  line(200,50,200,450);

  line(250,50,250,450);

  line(300,50,300,450);

  line(350,50,350,450);

  line(400,50,400,450);

}

用迴圈畫線,程式碼如下:

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

  }

}


Step:02 


程式碼如下:

int [][]c={

  {1,0,0},

  {1,0,0},

  {1,0,0}};

 void setup()

 {

   size(300,300);

 }

 void draw(){

  for(int i=0;i<3;i++){

    for(int j=0;j<3;j++)

    { 

      if(c[i][j]==0)fill(128);

      else fill(255,0,0);

      rect(j*100,i*100,100,100);

    }

   }

 }


Step:03  當陣列裏頭出現"1"的時候,棋盤上會顯示白棋。


程式碼如下:

int [][]go={

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

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

      }

    }

}


Step 04滑鼠點擊棋盤,即可顯示白棋

程式碼如下

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

將上方程式碼誇號裡的mouseX-50 和mouseY-50修改成 mouseX-25 和mouseY-25,這樣滑鼠點擊棋盤時,所下的白棋座標會比較準確!
程式碼如下:
 int j=(mouseX-25)/50;
  int i=(mouseY-25)/50;

Step05:左鍵白棋、右鍵黑棋、中鍵悔棋,圍棋遊戲可以玩啦!


程式碼如下:
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 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);
      }else if(go[i][j]==2){
        int x=50+50*j,y=50+50*i;
        fill(0);ellipse(x,y,40,40);
      }
    }
}
void mousePressed(){
  int j=(mouseX-25)/50;
  int i=(mouseY-25)/50;
  if(mouseButton==LEFT)go[i][j]=1;
  if(mouseButton==RIGHT)go[i][j]=2;
  if(mouseButton==CENTER)go[i][j]=0;
}


課堂作業(二)
用程式碼當藝術家!

程式碼如下:
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);
  }
}

Step:畫圈圈


程式碼如下:
void setup()
{
  size(500,500);
}
void draw()
{
  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,mouseX);
  }
}

Step:03改變顏色
程式碼如下:
void setup()
{
  size(500,500);
}
void draw()
{
  background(255);
  noFill();
  stroke(mouseX,mouseY,255);
  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,mouseX);
  }
}

會隨著滑鼠游標停留時間改變大小顏色的圈圈。



程式碼如下:
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(mouseY,mouseX,w,w);
    
    w+=0.5;
    if(w>100)w=30;
  }

沒有留言:

張貼留言