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

SongKran Festival (Thai culture)




//Gobal variable  //เป็นการประกาศตัวแปรที่อยู่นอกฟังก์ชั่น เพื่อให้ครอบคลุมทุกฟังก์ชัน เป็นส่วนหนึ่งที่ทำให้ภาพเกิดการเคลื่อนไหว โดยประกาศ และกำหนดตัวแปรอยู่นอกฟังก์ชัน แล้วไปเรียกใช้ในฟังก์ชันแทน
int count = 100; //เป็นบรรทัดที่ประกาศ และกำหนดตัวแปร โดย int คือค่าของตัวแปรที่เป็นจำนวนเต็ม หลักการคือนำค่าทางด้านขวาของเครื่องหมาย = ไปใส่ให้ทางด้านซ้ายเรียกว่า Assingment Operator ในที่นี้หมายถึง นำ 100 ซึ่งเป็นทศนิยม ทางด้านขวาของเครื่องหมาย = ไปใส่ค่าให้กับตัวแปรทางด้านซ้าย คือตัวแปร count นั่นเอง
int w = 200; //ความหมายคือ นำ 200 ซึ่งเป็นจำนวนเต็ม ทางด้านขวาของเครื่องหมาย = ไปใส่ค่าให้กับตัวแปรทางด้านซ้าย คือตัวแปร w นั่นเอง
int x1 = 100;
int x2 = 400;

void setup() { //เป็นการประกาศฟังก์ชั่น setup ซึ่ง void ที่อยู่ข้างหน้าคือ การกำหนดว่าจะไม่มีการเรียกค่าเดิมมาใช้อีก
  size (500, 500); //เป็นการกำหนดขนาดของcanvas โดย size (ขนาดของแกนx, ขนาดของแกนy);
}
void draw() { //เป็นการประกาศฟังก์ชั่น draw ซึ่ง void ที่อยู่ข้างหน้าคือ การกำหนดว่าจะไม่มีการเรียกค่าเดิมมาใช้อีก
  background (102, 255, 000); //เป็นการเพิ่มสีให้กับพื้นหลัง โดย background(สีแดง, สีเขียว, สีน้ำเงิน); ค่าของสีแต่ละตัวมีได้สูงสุดไม่เกิน 255 และต่ำสุดที่ 000
 
  //Local variable //เป็นการประกาศตัวแปรที่อยู่ในฟังก์ชั่น เพื่อให้ใช้เฉพาะในฟังก์ชัน เป็นส่วนหนึ่งที่ทำให้ภาพเกิดการเคลื่อนไหว โดยประกาศ และกำหนดตัวแปรอยู่นอกฟังก์ชันไว้ แล้วมาเรียกใช้ในฟังก์ชันนี้
  int r = 100; ความหมายคือ นำ 100 ซึ่งเป็นจำนวนเต็ม ทางด้านขวาของเครื่องหมาย = ไปใส่ค่าให้กับตัวแปรทางด้านซ้าย คือตัวแปร r นั่นเอง
  int y = 200;
 
  //draw Human วาดรูปคน
  //draw leg1 วาดรูปขาของคนที่ 1
  stroke (102, 051, 000); //คือคำสั่งเกี่ยวกับการเติมสีเส้น โดย stroke (ค่าของสีแดง, ค่าของสีเขียว, ค่าของสีน้ำเงิน);
  strokeWeight (10); //เป็นการกำหนดความหนาของเส้น โดยstrokeWeight(ค่าความหนาของเส้น);
  fill (255, 153, 051); //เป็นการเติมสีให้กับรูปร่างที่เราสร้าง โดยfill(ค่าของสีแดง, ค่าของสีเขียว, ค่าของสีน้ำเงิน);
  ellipse (x1+15, y+250, r-50, r-80); //คือคำสั่งที่ใช้ในการวาดรูปทรงกลม หรือทรงรีก็ได้ โดย ellipse (ค่าxที่เป็นจุดศูนย์กลางวงกลม, ค่าyที่เป็นจุดศูนย์กลางวงกลม, ขนาดความยาวของวงกลมตามแกนx, ขนาดความยาวของวงกลมตามแกนy); ถ้าขนาดความยาวของวงกลมตามแกนx กับ ขนาดความยาวของวงกลมตามแกนy เท่ากันจะเป็นวงกลม แต่ถ้าไม่จะเป็นวงรี
  ellipse (x1, y+200, r-80, r);

  //draw Arm1 back  วาดแขนหลังคนที่ 1
  ellipse (x1+50, y+100, r, r-90);
 
  //draw Body1  วาดตัวคนที่1
  ellipse (x1, y+100, r-50, r+50);
 
  //draw Head1 วาดหัวคนที่1
  ellipse (x1, y, r, r);
 
  //draw Arm1 Front วาดแขนด้านหน้าคนที่1
  ellipse (x1, y+100, r-90, r);
 
  //draw led2 วาดขาคนที่ 2
  fill (255, 102, 000);
  ellipse (x2-20, y+250, r-50, r-80);
  ellipse (x2, y+200, r-80, r);

  //draw Arm2 back วาดแขนหลังของคนที่2
  ellipse (x2-50, y+100, r, r-90);
 
  //draw Body2 วาดตัวของคนที่ 2
  ellipse (x2, y+100, r-50, r+50);

  //draw Head2 วาดหัวของคนที่ 2
  ellipse (x2, y, r, r);
   
  //draw Arm2 Front วาดแขนด้านหน้าคนที่2
  ellipse (x2, y+100, r-90, r);

  x1 = x1 + 1; //เป็นการกำหนดค่า ให้ตัวแปรที่เป็นGobal เปลี่ยน เพื่อให้เกิดการเคลื่นไหว
  x2 = x2 - 1;

  //draw cup วาดถ้วยใส่น้ำ
  strokeWeight (2);
  fill (051, 051, 051);
  ellipse (x1+100, y+100, r-130, r-130);
  ellipse (x2-100, y+100, r-130, r-130);
  fill (000, 255, 204);
  ellipse (x1+100, y+100, r-120, r-120);
  ellipse (x2-100, y+100, r-120, r-120);
 
  //draw water วาดน้ำสาดใส่กัน
  noStroke (); //คือคำสั่งที่ยกเลิกการวาดเส้น
  fill (000, 255, 204);
  ellipse (count+100, count+200, r-20, r-20);
  ellipse (w+100, w+100, r-20, r-20);

 count = count + 1;  //เป็นการกำหนดค่า ให้ตัวแปรที่เป็นGobal เปลี่ยน เพื่อให้เกิดการเคลื่นไหว
  w = w - 1;
}

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

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