BINARY DISPLAY ONE PLUS ONE
สำหรับรูปนี้ เป็นการคำนวณค่าของ Binary ที่ค่อยๆ เพิ่่มขึ้น ทั้งหมดนี้อยู่ในฟังก์ชั่นหลักรวมกันเพียง 1 ชุด ตอนแรกในการทำ นับว่ายากมาก เพราะว่า ผมยังไม่ค่อยรู้จักตัวแปรชนิดนี้ ตอนแรกผมก็ลองกำหนดฟังก์ชั่นหลักมาก่อนเพียงหนึ่งฟังก์ชั่น แล้วใช้ฟังก์ชั่นย่อยลงไปเรื่อยๆ แต่ก่อนนั้น ผมกำหนดตัวแปร และ Array ที่รวมกลุ่มของค่า Binary ไว้ เมื่อเปรียบเทียบกันแล้ว จะได้ true = 1 และ false = 0 ผลลัพธ์ที่ออกมาจึงแสดงสองคำนี้สลับกันไปตามที่จัดไว้ในตัวแปร Array ชนิด boolean หลังจากนั้นจึงประกาศตัวแปรที่เราต้องหา หรือนำไปใช้ในวงเล็บของ boolean ชนิดนี้ หลังจากนั้นจึงประกาศตัวแปรสำหรับวงกลม หลังจากนั้นจึงกำหนดเงื่อนไขในการวน loop และเงื่อนไขธรรมดา แต่ละเงื่อนไขนั้นแตกต่างกันออกไป สุดท้ายผมได้เขียนผลลัพธ์ไว้ด้านล่างเหมือนกับบวกตัวเลขในแนวตั้ง ซึ่งเป็นผลลัพธ์ที่เปรียบเทียบกันกับตัวเลข สำหรับผมแล้ว ในเรื่องนี้ ผมยังคงศึกษาอยู่ คงอธิบายได้เท่านี้ ขอเชิญทำกันได้Processing Code
void setup() { //ประกาศสิ่งที่ต้องการให้คงที่ไม่มีการทำซ้ำ มีได้เพียง 1 ชุดในงานชิ้นหนึ่งเท่านั้นsize(340, 100); //กำหนดขนาดของภาพ หรือ Output ดูได้จาก size(width, height)
background(116, 196, 255); //ใช้ใส่สีให้กับพื้นหลังของภาพ โดยใช้ค่าตามแม่สี หรือเครื่องหมาย # สีที่ใส่นี่คือ สีฟ้าอมเขียวอ่อน
boolean [] T = {true, true, false, false, false, false}; /*เทียบเหมือนกับ BINARY 110000*/
boolean [] K = {true, false, false, true, false, true}; /*เทียบเหมือนกับ BINARY 100101*/
boolean [] result = new boolean [T.length]; /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า result ไว้เก็บค่า T^K*/
boolean [] translate = new boolean [T.length]; /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า translate ไว้เก็บค่าตัวที่ทด*/
boolean [] TK = new boolean [T.length]; /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า TK ไว้เก็บค่าคำตอบ*/
int i; /*ประกาศตัวแปร i ขึ้นมาเป็นจำนวนเต็ม ซึ่งเป็นตัวแปรแบบ local variable*/
boolean z = false; /*สร้างตัวแปรชนิด boolean ขึ้นมาชื่อว่า z = false*/
int d = 42; /*เส้นผ่านศูนย์กลางของวงกลม*/
int x = d, y = 50; /*ประกาศตัวแปร x และ y ขึ้นมาเป็นจำนวนเต็ม โดยให้มีค่าเท่ากับ d และ 50 ตามลำดับ ซึ่งเป็นตัวแปรแบบ local variable*/
for(i = T.length-1; i >= 0; i--) { /*ให้ค่าเริ่มต้นของ i = T.length-1 ตรวจสอบเงื่อนไขว่า i >= 0 หรือไม่ ทุกครั้งก่อนออกจาก loop i ลบไปทีละ 1*/
result[i] = T[i]^K[i]; /*นำค่า T[i]^K[i] มาใส่ในตัวแปร result[i]*/
if(T[i]&K[i] == true) { /*T[i]&K[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(#2BF511);
ellipse(x, y, d, d); /*วาดวงกลมที่มีจุดกึ่งกลางที่ (x, y) และมีเส้นผ่านศูนย์กลางเป็น d หน่วย*/
}
for(i = 0; T.length>i; i++) { /*ให้ค่าเริ่มต้นของ i=0 ตรวจสอบเงื่อนไขว่า i น้อยกว่าความยาวของ T หรือไม่ ทุกครั้งก่อนออกจาก loop i บวกเพิ่มไปทีละ 1*/
TK[i] = result[i]^translate[i]; /*กำหนดให้ result[i]^translate[i] มีค่าเป็น TK[i]*/
if(TK[i] == true) { /*หาก TK[i] = true ให้เติมสีเขียวอ่อน*/
fill(#2BF511);
} else{ /*หากไม่ใช่ ให้เติมสีแดง*/
fill(#FF030B);
}
x+=d; /* ทำการบวกค่า x เพิ่มทีละ d*/
ellipse(x, y, d, d); //วาดวงกลมที่มีจุดกึ่งกลางที่ (x, y) และมีเส้นผ่านศูนย์กลางเป็น d หน่วย
}
}
Canvas
110000
100101
1010101
ไม่มีความคิดเห็น:
แสดงความคิดเห็น