2021年10月25日 星期一

ᐇ Week07

 Week07:

本周内容為for回圈,陣列,mouseButton完成黑白棋游戲,相關processing網站介紹

1.畫棋盤

多條line指令畫出棋盤竪綫


void setup(){

  size(500,500);

void draw(){

  background(253,236,180);

  line(50,50,50,450);

  line(100,50,100,450);//從(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);

  line(450,50,450,450);

}


2.for回圈畫棋盤

更短的程式碼畫出同樣的效果


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);//用for有槼律的加上50的倍數

  }

}

3.完成棋盤
加上橫綫完成棋盤

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);
  }
}
4.陣列
p語言陣列的宣告,int [][]go

void setup(){
  size(500,500);
}
///int [][]go=new int[9][9];
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(){
  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);
  }
}
5.陣列
區分i,j

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);//j是x軸坐標,i是y軸坐標
    }
  }
}
6.畫棋子
用多重回圈畫出棋子,之後再做更準確的修改

void setup(){
  size(500,500);
}
///int [][]go=new int[9][9];
int [][]go={
  {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,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 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){//go[][]陣列中為1的才會下棋子
        int x=50+50*j, y=50+50*i;//棋子的x,y坐標
        fill(255); ellipse(x,y,40,40);
      }
    }
  }
}
7.准確滑鼠畫棋子
加入mousePressed指令,完成簡單的下棋動作

void mousePressed(){
  int i=(mouseY-25)/50;//更加準確
  int j=(mouseX-25)/50;
  go[i][j]=1;
}
8.黑白棋及清除
mouseButton函式下黑白棋以及清除

void setup(){
  size(500,500);
}
///int [][]go=new int[9][9];
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(){
  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 i=(mouseY-25)/50;
  int j=(mouseX-25)/50;
  if(mouseButton==LEFT) go[i][j]=1;//左鍵下白棋
  if(mouseButton==RIGHT) go[i][j]=2;//右鍵下黑棋
  if(mouseButton==CENTER) go[i][j]=0;//中鍵清除
}
9.畫大圓
openprocessing.org網站參考程式碼,畫出大圓

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);
  }
}
10.openprocessing.org
有大量processing程式碼可供參考

11.互動畫圓
void setup(){
  size(500,500);
}
void draw(){
  background(128);
  noFill();  
  for(float a=0;a<360;a++){
    float x=250+mouseX*cos(radians(a));
    float y=250+mouseY*sin(radians(a));
    ellipse(x,y,mouseX,mouseY);
  }
}
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,mouseX,mouseY);
  }
}













沒有留言:

張貼留言