2024年9月23日 星期一

Week03-唐門外系弟子-林活修行互動技術秘笈

 week03_1_PImage_loadImage_image

從網路上先把圖檔jpg下載至桌面,再將圖片拉到processing程式裏面去。視窗大小按照圖檔解析度圖片才不會糊掉或太小。

//week03_1_PImage_loadImage_image

PImage img = loadImage("arufa.jpg");
size(600, 400);
image(img, 0 , 0);

week03_2_void_setup_void_draw_fill_rect
從week03-1的地方另存新檔,原因:既有的同檔就不用重新再拉。
將顏色黑邊消除就用noStroke()。
PImage img;
void setup() {
  size(600, 400);
  img = loadImage("arufa.jpg");
}
void draw() {
  image(img, 0, 0);
  noStroke();
  fill(200,200,255, 128);
  rect(mouseX, mouseY, 70, 50);
}

week03_3_arufa_rect_rect_rect
做出最強的防護盾!利用rect(mouseX,mouseY)座標設定。
將滑鼠游標消除利用noCursor()。
//week03_3_arufa_rect_rect_rect
PImage img;
void setup() {
  size(600, 400);
  img = loadImage("arufa.jpg");
}
void draw() {
  image(img, 0, 0);
  noCursor();//不要有cursor游標
  noStroke();
  fill(200, 200, 255, 128);
  
  rect(mouseX, mouseY-80, 70, 50);
  
  rect(mouseX-30, mouseY-40, 70, 50);
  rect(mouseX+30, mouseY-40, 70, 50);
  
  rect(mouseX+60, mouseY, 70, 50);
  rect(mouseX, mouseY, 70, 50);
  rect(mouseX-60, mouseY, 70, 50);

  rect(mouseX-90, mouseY+40, 70, 50);
  rect(mouseX-30, mouseY+40, 70, 50);
  rect(mouseX+30, mouseY+40, 70, 50);
  rect(mouseX+90, mouseY+40, 70, 50);
  
  rect(mouseX+60, mouseY+80, 70, 50);
  rect(mouseX, mouseY+80, 70, 50);
  rect(mouseX-60, mouseY+80, 70, 50);
  
    rect(mouseX-30, mouseY+120, 70, 50);
  rect(mouseX+30, mouseY+120, 70, 50);
  
  rect(mouseX, mouseY+160, 70, 50);
  
}

week03_4_arufa_for_for_rect
同樣的效果用for迴圈處理,但數字的計算太麻煩了,有待改進......
PImage img;
void setup() {
  size(600, 400);
  img = loadImage("arufa.jpg");
}
void draw() {
  image(img, 0, 0);
  noCursor();//不要有cursor游標
  noStroke();
  fill(200, 200, 255, 128);

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

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

week03_5_go_for_for_rect
利用for迴圈製作出go board棋盤
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);
  }
}
week03_5_go_for_line_line
同樣用for迴圈製作,但用line來製作。
size(450, 440);
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);
  
}
week03_6_go_void_setup_void_draw_ellipse_mouseX_mouseY
在棋盤上面增加要下的白子。
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);
}
week03_7_go_board_2d_array_void_mousePressed_board_i_j
讓白子可以下在線的點上,下在正確的位置上面。
int [][] board = new int [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);
  }
  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;
}

week03_8_go_goColor_black_white
切換黑白子交互下棋,goColor設定棋子。
//切換黑、白、黑、白...
int goColor = -1;//-1:black +1:white 0:null
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);
  ellipse(mouseX, mouseY, 45, 45);
}
void mousePressed() {
  int i = mouseY/50, j= mouseX/50;
  board[i][j] = goColor;//-1:black +1:white
  goColor = goColor * -1;
}

week03_9_arufa_array_for
arufa再來!把噁心的東西用陣列解決。
int []boardX = {  0,-30, +30,+60, 0,-60,-90,-30,+30,+90,+60,+0,-60,-30,+30,  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();//不要有cursor游標
  noStroke();
  fill(200, 200, 255, 128);
  
  for(int i=0;i<16;i++){
   rect(mouseX+boardX[i], mouseY+boardY[i], 70, 50);
 }
  
}





























沒有留言:

張貼留言