2022年10月4日 星期二

( σ՞ਊ ՞)σ的互動技術筆記 week05

 所以說我的圖呢到底跑哪去了 :  (


象棋來嘍

step1-1
畫棋盤

//等差級數: 50,100,150,200.....
size(500,700);
for(int  x=50; x<=450; x+=50){
    line(x, 50, x, 500);
}
for(int  y=50; y<=500; y+=50 ){
    line(50, y, 450, y);
}



step1-2
畫棋盤,定編號

//畫棋盤
int [][]board={
  {4, 5, 3, 2, 1, 2, 3, 5, 4},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 6, 0, 0, 0, 0, 0, 0, 0},
  {1, 0, 1, 0, 1, 0, 1, 0, 1},
}; //1:將 2:士 3:象 4:車 5:馬 6:包 7:卒
void setup() {
  size(500, 550);
}
void draw() {
  for (int  x=50; x<=450; x+=50) {
    line(x, 50, x, 250);
    line(x, 300, x, 500);
  }
  //10條
  for (int  y=50; y<=500; y+=50 ) {
    line(50, y, 450, y);
  }
  for (int i=0; i<4; i++) {
    for (int j=0; j<9; j++) {
      text(board[i][j], 50+j*50, 50+i*50);
    }
  }
}


step1-3
加上棋子

//畫棋盤
int [][]board={
  {4, 5, 3, 2, 1, 2, 3, 5, 4},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 6, 0, 0, 0, 0, 0, 0, 0},
  {1, 0, 1, 0, 1, 0, 1, 0, 1},
}; //1:將 2:士 3:象 4:車 5:馬 6:包 7:卒
String[] name = {"將", "士", "象", "車", "馬", "包", "卒"};
void setup() {
  size(500, 550);
  PFont font = createFont("標楷體", 30);
  textFont(font);
  textAlign(CENTER, CENTER);
}
void draw() {
  for (int  x=50; x<=450; x+=50) {
    line(x, 50, x, 250);
    line(x, 300, x, 500);
  }
  //10條
  for (int  y=50; y<=500; y+=50 ) {
    line(50, y, 450, y);
  }
  for (int i=0; i<4; i++) {
    for (int j=0; j<9; j++) {
      int id = board[i][j];//1開始
      if (id==0) continue;//陣列請回去(繼續)
      text(name[id-1], 50+j*50, 50+i*50);
    }
  }
}


steo1-4
按滑鼠會出現棋子

//畫棋盤
int [][]board={
  {4, 5, 3, 2, 1, 2, 3, 5, 4},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 6, 0, 0, 0, 0, 0, 6, 0},
  {7, 0, 7, 0, 7, 0, 7, 0, 7},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-7, 0, -7, 0, -7, 0, -7, 0, -7},
  {-0, -6, 0, 0, 0, 0, 0, -6, 0},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-4, -5, -3, -2, -1, -2, -3, -5, -4},
}; //1:將 2:士 3:象 4:車 5:馬 6:包 7:卒
String[] name = {"將", "士", "象", "車", "馬", "包", "卒"};
String[] name2 = {"帥", "仕", "相", "俥", "傌", "炮", "兵"};
void setup() {
  size(500, 550);
  PFont font = createFont("標楷體", 30);
  textFont(font);
  textAlign(CENTER, CENTER);
}
void draw() {
    background(#EAB502);
    for (int  x=50; x<=450; x+=50) {
      line(x, 50, x, 250);
      line(x, 300, x, 500);
 }
  //10條
  for (int  y=50; y<=500; y+=50 ) {
    line(50, y, 450, y);
  }
  for (int i=0; i<10; i++) {
    for (int j=0; j<9; j++) {
      int id = board[i][j];//1開始
      if (id==0) continue;//陣列請回去(繼續)
      if (id>0) {
        fill(255);
        ellipse( 50+j*50, 50+i*50, 40, 40);
        fill(0);
        text(name[id-1], 50+j*50, 50+i*50-3);
      } else if (id<0) {
        fill(255);
        ellipse( 50+j*50, 50+i*50, 40, 40);
        fill(255, 0, 0);
        text(name2[-id-1], 50+j*50, 50+i*50-3);
      }
    }
  }
}
void mousePressed() {
  for (int i=0; i<10; i++) {
    for (int j=0; j<9; j++) {
      if (dist(mouseX, mouseY, 50+j*50, 50+i*50)<20) {
      }
    }
  }
}


step1-5
開始可以吃棋子了

//畫棋盤
int [][]board={
  {4, 5, 3, 2, 1, 2, 3, 5, 4},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 6, 0, 0, 0, 0, 0, 6, 0},
  {7, 0, 7, 0, 7, 0, 7, 0, 7},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-7, 0, -7, 0, -7, 0, -7, 0, -7},
  {-0, -6, 0, 0, 0, 0, 0, -6, 0},
  {0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-4, -5, -3, -2, -1, -2, -3, -5, -4},
}; //1:將 2:士 3:象 4:車 5:馬 6:包 7:卒
String[] name = {"將", "士", "象", "車", "馬", "包", "卒"};
String[] name2 = {"帥", "仕", "相", "俥", "傌", "炮", "兵"};
void setup() {
  size(500, 550);
  PFont font = createFont("標楷體", 30);
  textFont(font);
  textAlign(CENTER, CENTER);
}
void draw() {
    background(#EAB502);
    for (int  x=50; x<=450; x+=50) {
      line(x, 50, x, 250);
      line(x, 300, x, 500);
 }
  //10條
  for (int  y=50; y<=500; y+=50 ) {
    line(50, y, 450, y);
  }
  for (int i=0; i<10; i++) {
    for (int j=0; j<9; j++) {
      int id = board[i][j];//1開始
      if (id==0) continue;//陣列請回去(繼續)
      if (id>0) {
        fill(255);
        ellipse( 50+j*50, 50+i*50, 40, 40);
        fill(0);
        text(name[id-1], 50+j*50, 50+i*50-3);
      } else if (id<0) {
        fill(255);
        ellipse( 50+j*50, 50+i*50, 40, 40);
        fill(255, 0, 0);
        text(name2[-id-1], 50+j*50, 50+i*50-3);
      }
    }
  }
  if(handChess!=0) ellipse(mouseX,mouseY,40,40);
}
int handChess=0;
void mousePressed() {
  for (int i=0; i<10; i++) {
    for (int j=0; j<9; j++) {
      if (dist(mouseX, mouseY, 50+j*50, 50+i*50)<20) {
        handChess = board[i][j];
        board[i][j] = 0;//棋盤的棋子不見了
      }//把那個棋子,拿在手上
    }
  }
}
void mouseReleased(){       
  int i = (mouseY+25-50)/50;
  int j = (mouseX+25-50)/50;
  board[i][j] = handChess;
  handChess = 0;
}

暗棋
step2-1
這邊是暗棋喔

//暗棋
int [][]board={
  {1,2,2,3,3,4,4,5},
  {5,6,6,7,7,7,7,7},
  {-1,-2,-2,-3,-3,-4,-4,-5},
  {-5,-6,-6,-7,-7,-7,-7,-7}
}; //暗棋的格子少 4x8=32個
void setup() {
  size(500, 400);
  PFont font = createFont("標楷體", 30);
  textFont(font);
  textAlign(CENTER, CENTER);
}
void draw() {
    background(#EAB502);
    for (int  x=50; x<=450; x+=50) {
      line(x, 50, x, 250);
 }
  //10條
  for (int  y=50; y<=250; y+=50 ) {
    line(50, y, 450, y);
  }
  for (int i=0; i<4; i++) {
    for (int j=0; j<8; j++) {
      int id = board[i][j];//1開始
      drawChess(50+25+j*50, 50+25+i*50, id);
    }
  }
}
String[] name = {"將", "士", "象", "車", "馬", "包", "卒"};
String[] name2 = {"帥", "仕", "相", "俥", "傌", "炮", "兵"};
void drawChess(int x,int y,int id){
  fill(255);
  ellipse( x, y, 40, 40);
  if(id>0){
    fill(0);
    text(name2[id-1], x, y-3);
  }else{
    fill(255,0,0);
    text(name2[-id-1], x, y-3);
  }
}


step2-2
這邊怪怪的???

//暗棋
int [][]board={
  {1,2,2,3,3,4,4,5},
  {5,6,6,7,7,7,7,7},
  {-1,-2,-2,-3,-3,-4,-4,-5},
  {-5,-6,-6,-7,-7,-7,-7,-7}
}; //暗棋的格子少 4x8=32個
void setup() {
  size(500, 400);
  PFont font = createFont("標楷體", 30);
  textFont(font);
  textAlign(CENTER, CENTER);
}
void draw() {
    background(#EAB502);
    for (int  x=50; x<=450; x+=50) {
      line(x, 50, x, 250);
 }
  //10條
  for (int  y=50; y<=250; y+=50 ) {
    line(50, y, 450, y);
  }
  for (int i=0; i<4; i++) {
    for (int j=0; j<8; j++) {
      int id = board[i][j];//1開始
      drawChess(50+25+j*50, 50+25+i*50, id);
      if (id==0) continue;//陣列請回去(繼續)
      if (id>0) {
        fill(255);
        ellipse( 50+j*50, 50+i*50, 40, 40);
        fill(0);
        text(name[id-1], 50+j*50, 50+i*50-3);
      } else if (id<0) {
        fill(255);
        ellipse( 50+j*50, 50+i*50, 40, 40);
        fill(255, 0, 0);
        text(name2[-id-1], 50+j*50, 50+i*50-3);
      }
    }
  }
  if(handChess!=0) ellipse(mouseX,mouseY,40,40);
}
int handChess=0;
void mousePressed() {
  for (int i=0; i<10; i++) {
    for (int j=0; j<9; j++) {
      if (dist(mouseX, mouseY, 50+j*50, 50+i*50)<20) {
        handChess = board[i][j];
        board[i][j] = 0;//棋盤的棋子不見了
      }//把那個棋子,拿在手上
    }
  }
}
void mouseReleased(){       
  int i = (mouseY+25-50)/50;
  int j = (mouseX+25-50)/50;
  board[i][j] = handChess;
  handChess = 0;
}

沒有留言:

張貼留言