วันศุกร์ที่ 26 กรกฎาคม พ.ศ. 2556

BINARY DISPLAY >>> Supernova



void setup() {  //ประกาศสิ่งที่ต้องการให้คงที่ไม่มีการทำซ้ำ มีได้เพียง 1 ชุดในงานชิ้นหนึ่งเท่านั้น
  size(340, 100);  //กำหนดขนาดของภาพ หรือ Output ดูได้จาก size(width, height)
  background(#000000);  //ใช้ใส่สีให้กับพื้นหลังของภาพ ใส่นี่คือ สีฟ้าอมเขียวอ่อน
  boolean [] M = {false, true, true, false,false, false};  /*เทียบเหมือนกับ BINARY 011000*/
  boolean [] S = {true,  false, true, true, false, false};  /*เทียบเหมือนกับ BINARY 1011100*/
  boolean [] result = new boolean [M.length];  /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า result ไว้เก็บค่า M^S*/
  boolean [] translate = new boolean [M.length];  /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า translate ไว้เก็บค่าตัวที่พิจารณา*/
  boolean [] MS = new boolean [M.length];  /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า MS ไว้เก็บค่าคำตอบ*/
  int i;  /*ประกาศตัวแปร i ขึ้นมาเป็นจำนวนเต็ม ซึ่งเป็นตัวแปรแบบ local variable*/
  boolean z = false;  /*สร้างตัวแปรชนิด boolean ที่ชื่อว่า z ให้มีค่าเป็นเท็จ*/
  int d = 46;  /*เส้นผ่านศูนย์กลางของวงกลมแต่ละอัน*/
  int x = d; /*ประกาศตัวแปร x  ขึ้นมาเป็นจำนวนเต็ม ให้มีค่าเท่ากับ d ( local variable)*/
  int y = 50;  /*ประกาศตัวแปร y ขึ้นมาเป็นจำนวนเต็ม ให้มีค่าเท่ากับ  50  ( local variable)*/

for(i = M.length-1; i >= 0; i--) {  /*ให้ค่าเริ่มต้นของ i = M.length-1 ตรวจสอบเงื่อนไขว่า i >= 0 หรือไม่ ทุกครั้งก่อนออกจาก loop i นำค่าที่เข้ามาลบไปทีละ 1*/
  result[i] = M[i]^S[i];  /*นำค่า M[i]^S[i] มาใส่ในตัวแปร result[i]*/
  if(M[i]&S[i] == true) {  /*M[i]&S[i] เป็น true หรือไม่*/
    if(i-1 >= 0) {  /*i-1 มากกว่าหรือเท่ากับ 0 หรือไม่*/
    translate[i-1] = false;  /*กำหนดให้ translate ตัวที่ i-1 มีค่าเป้น false*/
    } else z = true;  /*ให้ z = true*/
  }
}

if(z == true) {  /*หาก F=true เติมสีเขียวม่วง*/
  fill(#6600FF );
  ellipse(x, y, d, d);  /*วาดวงกลมที่มีจุดกึ่งกลางที่ (x, y) และมีเส้นผ่านศูนย์กลางเป็น d เพื่อกำหนดขนาดวงกลม*/  
}

for(i = 0; M.length>i; i++) {  /*ให้ค่าเริ่มต้นของ i=0 ตรวจสอบเงื่อนไขว่า i น้อยกว่าความยาวของ T หรือไม่ ทุกครั้งก่อนออกจาก loop i บวกเพิ่มไปทีละ 1*/
  MS[i] = result[i]^translate[i];  /*กำหนดให้ result[i]^translate[i] มีค่าเป็น MS[i]*/
  if(MS[i] == true) {  /*หาก MS[i] = true ให้เติมสีเขียวอ่อน*/
  fill(#6600FF);
  } else{  /*หากไม่ใช่ ให้เติมสีน้ำเงินเข้ม*/
  fill(#000033);
}
  x+=d;  /* บวกค่า x เพิ่มทีละ d*/
  ellipse(x, y, d, d);  //วาดวงกลมที่มีจุดกึ่งกลางที่ (x, y) และมีเส้นผ่านศูนย์กลางเป็น d เพื่อกำหนดขนาดวงกลม
  }
}

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

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