วันพฤหัสบดีที่ 11 กรกฎาคม พ.ศ. 2556

ART:SUNRISE2





CODE
int count=1;          //Global variable

void setup() {
   size(200, 200);
}

void draw() {
   background(0,count+100,count+100);          //สีพื้นหลังเปลี่ยนสีไปตามค่าตัวแปร
   drawSun(count);          //User defined function รูปแบบ function with parameter  //ตัวแปร count ของฟังก์ชันdrawSun()
   count = count + 1;
}

void drawSun(int y){         //ตัวแปร y ของฟังก์ชันdrawSun()
 
    // cloud
  fill(40+y,40+y,40+y);  //ค่าตัวแปร y ทำให้ก้อนเมฆเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(157, 4, 87, 18);
  fill(70+y,70+y,70+y);  //ค่าตัวแปร y ทำให้ก้อนเมฆเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(173, 24, 45, 20);
 
    // sun
  fill(y+200,y,y);  //ค่าตัวแปร y ทำให้ดวงอาทิตย์เปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(y,150-y,30,30);  //ค่าตัวแปร y ทำให้ดวงอาทิตย์เคลื่อนที่ไปตามการเพิ่มขึ้นของตัวแปร y ตามพิกัด(y,150-y)
 
    // house
  noStroke();
  fill(100+y,100+y,100+y);  //ค่าตัวแปร y ทำให้บ้านเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  rect(70,100,60,57);

    //door
  fill(50+y,100-y,100-y);  //ค่าตัวแปร y ทำให้ประตูเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  rect(90,123,20,27,8);
 
     // treebrown
  noStroke();
  rect(25,60,10,105);  //ค่าตัวแปร y ทำให้ต้นไม้เปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
 
    // roof
  stroke(50+y,80-y,85-y);  //ค่าตัวแปร y ทำให้หลังคาเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  triangle(70,100,100,65,129,100);
 
    // earth
  fill(y,100+y,10-y);  //ค่าตัวแปร y ทำให้พื้นโลกเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  noStroke();
  ellipse(100, 230, 250, 170);

    // bush
  fill(y,100+y,y);  //ค่าตัวแปร y ทำให้หญ้าเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(176, 145, 31, 30);
  fill(y,60+y,y);  //ค่าตัวแปร y ทำให้หญ้าเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(157, 145, 18, 18);

    // tree
  noStroke();
  fill(y,y+20,10-y);  //ค่าตัวแปร y ทำให้ใบไม้เปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(37, 99, 55, 38);
  fill(y,y+50,10-y);  //ค่าตัวแปร y ทำให้ใบไม้เปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(31, 81, 50, 56);
  fill(y,y+90,10-y);  //ค่าตัวแปร y ทำให้ใบไม้เปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(26, 100, 46, 41);

    //cloud อยู่ข้างล่างเพื่อให้สามารถบังดวงอาทิตย์ได้
  fill(100+y,100+y,100+y);  //ค่าตัวแปร y ทำให้ก้อนเมฆเปลี่ยนสีไปตามการเพิ่มขึ้นของตัวแปร y
  ellipse(153, 36, 50, 27);
}

จากโค้ด  Global variable คือ ตัวแปร count ซึ่งสามารถเรียกนำไปใช้ได้ทุกฟังก์ชัน
(จาก count = count + 1; จะทำให้ภาพมีการเปลี่ยนตำแหน่ง ซึ่งเป็นพื้นฐานของการทำAnimation)
             User defined function คือ drawSun() ซึ่งเป็นฟังก์ชันที่สร้างขึ้นมาเอง
             ตัว แปร y จะมีค่าเท่ากับตัวแปร count เนื่องจาก drawSun(count) เป็นฟังก์ชันที่สร้างขึ้น และ drawSun(int y) เป็นการเรียกใช้ฟังก์ชันที่สร้างขึ้น ทำให้ค่าตัวแปรใน() มีค่าเท่ากัน
             ถ้า background() อยู่ในฟังก์ชัน setup() จะทำให้ดวงอาทิตย์ซ้อนกัน ดังรูป


             และถ้า background() อยู่ในฟังก์ชัน draw() แต่อยู่ล่างโค้ด count = count + 1; จะทำให้เห็นแต่สีพื้นหลัง ดังรูป


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

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