วันอังคารที่ 24 กันยายน พ.ศ. 2556

CHESS



 int x = 0;  //กำหนดตัวแปรชนิด Global Variable เพื่อให้แทนค่าได้ทุกฟังก์ชั่น ตัวนี้เป็นค่าในแกน X นอกจากนี้ตัวแปรทุกตัวถูกกำหนดให้เป็นจำนวนเต็มด้วยฟังก์ชั่นที่นำหน้า int
int y = 0;  //กำหนดค่าในแกน Y
int blackwhite = 0;  //ค่ากำหนดสีของตารางหมากรุก
int [][] chess= {  //ตัวกำหนดว่า จะวาดอะไรบนกระดาน
  {
    1, 2, 3, 4, 5, 3, 2, 1
  }  //กำหนดตำแหน่งของเรือ ม้า บิชอป ควีน ขุน บิชอป ม้า และเรือ ตามลำดับ ทั้งหมด 8 ตัว ฝ่ายสีดำ
  , {
    6, 6, 6, 6, 6, 6, 6, 6
  }  //กำหนดตำแหน่งของเบี้ยทั้ง 8 ตัวตามลำดับบนแถวเดียวกัน ฝ่ายสีดำ
  , {
    0, 0, 0, 0, 0, 0, 0, 0
  }  //พื้นที่ว่างที่มีลายแถบสี
  , {
    0, 0, 0, 0, 0, 0, 0, 0
  }  //พื้นที่ว่างที่มีลายแถบสี
  , {
    0, 0, 0, 0, 0, 0, 0, 0
  }  //พื้นที่ว่างที่มีลายแถบสี
  , {
    0, 0, 0, 0, 0, 0, 0, 0
  }  //พื้นที่ว่างที่มีลายแถบสี
  , {
    6, 6, 6, 6, 6, 6, 6, 6
  }  //กำหนดตำแหน่งของเบี้ยทั้ง 8 ตัวตามลำดับบนแถวเดียวกัน ฝ่ายสีขาว
  , {
    1, 2, 3, 4, 5, 3, 2, 1
  }  //กำหนดตำแหน่งของเรือ ม้า บิชอป ควีน ขุน บิชอป ม้า และเรือ ตามลำดับ ทั้งหมด 8 ตัว ฝ่ายสีขาว
};
int i = 0;  //ตัวนับ Array
int j = 0;  //ตัวนับ Array
void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดเรียกใช้งานฟังก์ชั่นต่างๆ
  size(400, 400);  //กำหนด canvas 400x400
  noStroke();  //ฟังก์ชั่นหลักที่ใช้ในการระบุว่า ไม่มีขอบ
  //การวาดตาราง
  while (y <= 400) {  //กำหนดเงื่อนไขเป็นลูป ถ้าเงื่อนไขภายในเป็นจริง จึงจะเกิดลูป
    while (x <= 400) {
      if (blackwhite == 0) {  //กำหนดเงื่อนไขภายในวงเล็บ ถ้าเป็นจริง จะเกิดผล
        fill(#808080);  //เติมสีเทา
        blackwhite = 1;
      }
      else if (blackwhite == 1) {  //กำหนดเงื่อนไขอีกกรณีหนึ่ง
        fill(#DCDCDC);  //เติมสีเทาอ่อน
        blackwhite = 0;
      }
      rect(x, y, 50, 50);  //ฟังก์ชั่นที่ใช้ในการวาดรูปสี่เหลี่ยม หรือ rect(x, y, width, height)
      x = x+50;  //ค่า x มีค่าเพิ่มขึ้นทีละ 50
    }
    x = 0;
    y = y+50;
  }
  x = 25;  //ค่าในแกน X ของตัวหมาก
  y = 25;  //ค่าในแกน Y ของตัวหมาก
  //การสร้างตัวหมากรุก
  while(i < chess.length) {  //กรณีที่ i มีค่าน้อยกว่าความยาวของ Array ชื่อ chess
   while(j < chess[i].length) {  //การกำหนดตัวหมาก
     if(chess[i][j] == 1) {
     //วาดเรือ
     rook(x, y);
     } else if(chess[i][j] == 2) {
     //วาดม้า
     knight(x, y);
     } else if(chess[i][j] == 3) {
     //วามบิชอป
     bishop(x, y);
     } else if(chess[i][j] == 4) {
     //วาดควีน
     queen(x, y);
     } else if(chess[i][j] == 5) {
     //วาดขุน
     king(x, y);
     } else if(chess[i][j] == 6) {
     //วาดเบี้ย
     pawn(x, y);
    }
    x = x+50;  //เลื่อนตำแหน่งตัวหมาก
    j = j+1;
   }
   j = 0;
   x = 25;
   y = y+50;
   i = i+1;
  }
}
void rook(int x, int y) {  //ฟังก์ชั่นที่ใช้ในการสร้างเรือ
  noStroke();
  if(y < 300) {
   fill(#000000);  //เติมสีดำ
  } else if(y > 300) {
   fill(#FFFFFF);   //เติมสีขาว
  }
 int h = x-15;
 int k = y-20;
 rect(h, k+5, 6, 10);
 rect(h+12, k+5, 6, 10);
 rect(h+24, k+5, 6, 10);
 rect(h, k+10, 30, 5);
 rect(h+7, k+10, 16, 30);
 rect(h, k+35, 30, 5);
}
void knight(int x, int y){  //ฟังก์ชั่นที่ใช้ในการวาดม้า
  noStroke();
  if(y < 300){
   fill(#000000);
  } else if(y > 300){
   fill(#FFFFFF);
  }
  int h = x-13;
  int k = y-8;
  rect(h, k, 18, 10);
  triangle(h, k, h+20, k, h+15, k-10);  //ฟังก์ชั่นที่ใช้ในการวาดรูปสามเหลี่ยม หรือ triangle(x1, y1, x2, y2, x3, y3)
  triangle(h+20, k-10, h+5, k+25, h+25, k+25);
  triangle(h+15, k-10, h+15, k, h+25, k-10);
  if(y < 200) {
   fill(#FFFFFF);
  } else if(y > 200){
   fill(#000000);
  }
  ellipse(h+13, k, 3, 3);
}
void bishop(int x, int y) {  //ฟังก์ชั่นที่ใช้ในการวาดบิชอป
  noStroke();
  if(y < 300) {
   fill(#000000);
  } else if(y > 300){
   fill(#FFFFFF);
  }
  int h = x;
  int k = y-15;
  triangle(h, k, h+15, k+13, h-15, k+13);
  ellipse(h, k+15, 30, 15);  //ฟังก์ชั่นที่ใช้ในการวาดวงรี หรือ ellipse(x, y, width, height)
  ellipse(h, k, 5, 5);
  triangle(h, k, h-10, k+30, h+10, k+30);
  stroke(#FFFFFF);  //ฟังก์ชั่นที่ใช้ในการเติมสีในเส้น ใช้แบบเดียวกับฟังก์ชั่น fill() สีที่ใส่นี้คือ สีขาว
  if(y < 200) {
   stroke(#FFFFFF);
  } else if(y > 300) {
   stroke(#000000);
  }
  strokeWeight(3);  //ฟังก์ชั่นที่ใช้ในการเพิ่มความหนาของเส้นของสิ่งต่างๆ
  line(h, k+8, h, k+16);  //ฟังก์ชั่นที่ใช้ในการวาดเส้น หรือ line(x1, y1, x2, y2)
  line(h-4, k+12, h+4, k+12);
}
void queen(int x, int y) {  //ฟังก์ชั่นที่ใช้ในการวาดควีน
  noStroke();
  if(y < 300){
   fill(#CC00FF);
  } else if(y > 300){
   fill(#FFFFFF);
  }
  int h = x-13;
  int k = y+5;
  rect(h, k, 26, 10);
  triangle(h, k+10, h+5, k, h-3, k-13);
  triangle(h+5, k, h+13, k, h+8, k-15);
  triangle(h+13, k, h+21, k, h+19, k-15);
  triangle(h+26, k+10, h+21, k, h+29, k-13);
  ellipse(h-3, k-13, 5, 5);
  ellipse(h+8, k-15, 5, 5);
  ellipse(h+19, k-15, 5, 5);
  ellipse(h+29, k-13, 5, 5);
}
void king(int x, int y) {  //ฟังก์ชั่นที่ใช้ในการวาดขุน
  noStroke();
  if(y < 300){
   fill(#000000);
  } else if(y > 300){
   fill(#FFFFFF);
  }
  int h = x-14;
  int k=y;
  rect(h, k, 27, 13);
  triangle(h, k, h, k-13, h+9, k);
  triangle(h+9, k, h+14, k-13, h+18, k);
  triangle(h+18, k, h+27, k, h+27, k-13);
  if(y < 300) {
   fill(#FFFFFF);
  } else if(y > 300) {
   fill(#000000);
  }
  ellipse(h+5, k+5, 4, 4);
  ellipse(h+14, k+5, 4, 4);
  ellipse(h+22, k+5, 4, 4);
  strokeWeight(4);
  if(y < 300) {
   stroke(#000000);
  } else if(y > 300) {
   stroke(#FFFFFF);
  }
  line(h+14, k-10, h+14, k-18);
  line(h+11, k-14, h+16, k-14);
}
void pawn(int x, int y) {  //ฟังก์ชั่นที่ใช้ในการวาดเบี้ย
  noStroke();
  if(y < 300) {
   fill(#000000);
  } else if(y > 300) {
   fill(#FFFFFF);
  }
  int h = x;
  int k = y-8;
  ellipse(h, k+8, 35, 35);
  fill(#000000);
  ellipse(h, k+8, 25, 25);
  fill(#FFFFFF);
  ellipse(h, k+8, 15, 15);
  //triangle(h, k, h-20, k+50, h+20, k+50);
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น