2024年9月23日 星期一

BK Week03 中二結界 + 圍棋

Processing 程式碼

匯入圖片
PImage img = loadImage("arufa.jpg");
size(600, 400); // 因為圖檔大小剛好是600*400
image(img, 0, 0);


用兩個 Void 把圖片匯入 + 畫無框半透明長方形
PImage img;
void setup() {
  size(600, 400);
  img = loadImage("arufa.jpg");
}
void draw() {
  image(img, 0, 0);
  noStroke(); //不要框線
  fill(200, 200, 255, 128); //最後面的128是 "半透明"
  rect(mouseX, mouseY, 80, 55); //畫長方型
}


畫超多長方形出來形成結界
PImage img;
void setup() {
  size(600, 400);
  img = loadImage("arufa.jpg");
}
void draw() {
  image(img, 0, 0);
  noCursor(); //不要有滑鼠游標
  noStroke(); //不要框線
  fill(200, 200, 255, 128); //最後面的128是 "半透明"
  
  rect(mouseX, mouseY-80, 80, 55);
  
  rect(mouseX-35, mouseY-40, 80, 55);
  rect(mouseX+35, mouseY-40, 80, 55);
  
  rect(mouseX+70, mouseY, 80, 55);
  rect(mouseX, mouseY, 80, 55);
  rect(mouseX-70, mouseY, 80, 55);
  
  rect(mouseX-105, mouseY+40, 80, 55);
  rect(mouseX-35, mouseY+40, 80, 55);
  rect(mouseX+35, mouseY+40, 80, 55);
  rect(mouseX+105, mouseY+40, 80, 55);
  
  rect(mouseX+70, mouseY+80, 80, 55);
  rect(mouseX, mouseY+80, 80, 55); //畫長方型
  rect(mouseX-70, mouseY+80, 80, 55);
  
  rect(mouseX-35, mouseY+120, 80, 55);
  rect(mouseX+35, mouseY+120, 80, 55);
  
  rect(mouseX, mouseY+160, 80, 55);
}


用 for迴圈 畫超多長方形出來形成結界
PImage img;
void setup() {
  size(600, 400);
  img = loadImage("arufa.jpg");
}
void draw() {
  image(img, 0, 0);
  noCursor(); //不要有滑鼠游標
  noStroke(); //不要框線
  fill(200, 200, 255, 128); //最後面的128是 "半透明"

  for (int i=1; i<=4; i++) {
    for (int j=0; j<i; j++) {
      float y=i*35, x=-i/2*60+j*60 + ((i%2==0)?30:0);
      rect(mouseX+x, mouseY-80+y, 80, 55);
    }
  }
  for (int i=3; i>=1; i--) {
    for (int j=0; j<i; j++) {
      float y=(4-i)*35+160, x=-i/2*60+j*60 + ((i%2==0)?30:0);
      rect(mouseX+x, mouseY-80+y, 80, 55);
    }
  }
}


畫9*9的棋盤
方法一:
size(450, 450);
background(220,179,92);
strokeWeight(2);
for (int i=0; i<=9; i++) {
  line(25, 25+i*50, 425, 25+i*50); //橫線
  line(25+i*50, 25, 25+i*50, 425); //直線
}

方法二:
size(450, 450);
background(220, 179, 92);
strokeWeight(2);
noFill();
for (int i=0; i<8; i++) {
  for (int j=0; j<8; j++) {
    rect(25+j*50, 25+i*50, 50, 50);
  }
}


畫9*9的棋盤 + 白色棋子
void setup() {
  size(450, 450);
}
void draw() {
  background(220, 179, 92);
  strokeWeight(2);
  for (int i=0; i<=9; i++) {
    line(25, 25+i*50, 425, 25+i*50); //橫線
    line(25+i*50, 25, 25+i*50, 425); //直線
  }
  ellipse(mouseX, mouseY, 45, 45);
}


讓白棋可以放在棋盤上
int[][] board = new int[9][9]; // Java 2D 陣列, 預設0
void setup() {
  size(450, 450);
}
void draw() {
  background(220, 179, 92);
  strokeWeight(2);
  for (int i=0; i<=9; i++) {
    line(25, 25+i*50, 425, 25+i*50); //橫線
    line(25+i*50, 25, 25+i*50, 425); //直線
  }
  for (int i=0; i<9; i++){
     for(int j=0; j<9; j++){
        if(board[i][j]==1) ellipse(25 + j*50, 25 + i*50, 45, 45); 
     }
  }
  ellipse(mouseX, mouseY, 45, 45);
}
void mousePressed(){
   int i = mouseY/50, j = mouseX/50;
   board[i][j] = 1;
}


讓黑、白棋可以交錯下
int goColor = -1; //-1:黑 +1:白 0:沒有棋子
int[][] board = new int[9][9]; // Java 2D 陣列, 預設0
void setup() {
  size(450, 450);
}
void draw() {
  background(220, 179, 92);
  strokeWeight(2);
  for (int i=0; i<=9; i++) {
    line(25, 25+i*50, 425, 25+i*50); //橫線
    line(25+i*50, 25, 25+i*50, 425); //直線
  }
  for (int i=0; i<9; i++) {
    for (int j=0; j<9; j++) {
      if (board[i][j]==0) continue; //不要畫
      if (board[i][j]==1) fill(255);
      if (board[i][j]==-1) fill(0);
      ellipse(25 + j*50, 25 + i*50, 45, 45);
    }
  }
  if (goColor==-1) fill(0);
  else fill(255, 128); //半透明
  ellipse(mouseX, mouseY, 45, 45);
}
void mousePressed() {
  int i = mouseY/50, j = mouseX/50;
  board[i][j] = goColor;
  goColor = goColor * -1; //顏色交換
}


用陣列 + for迴圈畫出結界
int []boardX = {0, -35, +35, +70, 0, -70, -105, -35, +35, +105, +70, 0, -70, -35, +35, 0};
int []boardY = {-80, -40, -40, 0, 0, 0, +40, +40, +40, +40, 80, 80, 80, 120, 120, 160};
PImage img;
void setup() {
  size(600, 400);
  img = loadImage("arufa.jpg");
}
void draw() {
  image(img, 0, 0);
  noCursor(); //不要有滑鼠游標
  noStroke(); //不要框線
  fill(200, 200, 255, 128); //最後面的128是 "半透明"

  for (int i=0; i<16; i++) {
    rect(mouseX+boardX[i], mouseY+boardY[i], 80, 55);
  }
}



沒有留言:

張貼留言