วันพฤหัสบดีที่ 28 สิงหาคม พ.ศ. 2557

Lab 2 - Star (with Functions)

จากความเดิมตอนที่แล้ว (Lab 1) ยูกิได้ใช้คำสาปดาวหกแฉกผนึก Blue Eye White Dragon ไว้แล้ว

แต่ไคบะไม่ลดละความย่อท้อ โดยการสังเวยมอนสเตอร์อีกหลายๆตัว เพื่อเรียก Blue Eye White Dragon ออกมาอีกให้ครบ 3 ตัว เพื่อที่จะ Fusion กันกลายเป็น Blue Eye Ultimate Dragon !!




"หึ !! ทำอะไรข้าไม่ได้หรอก !! ข้ามีคำสาปดาวหกแฉก 3 ใบ !!" ยูกิได้กล่าวเอาไว้



void setup()
{
  // initialization
  size(300,300);
  background(0);
  strokeWeight(4);
  stroke(255,255,0);
  translate(width/2,height/2);
  DrawStar(50,50);
  DrawStar(0,-50);
  DrawStar(-50,50);
}
void DrawStar(int CenterStarX,int CenterStarY)
{
  // variable
  int WidthStar,HeightStar;
  int d;
  int SpaceBetweenCircle=5;
  float RVertical,RSqrt,RCircle;
  // assign variable
  WidthStar = 40;
  HeightStar = 40;
  d = 20;                                                                   //space between base of both triangle
  SpaceBetweenCircle = 10;                                     //space between inside and outside circle
  RVertical = HeightStar/2;                                        //radius from center of star to top vertex of star
  RSqrt = sqrt((pow((d/2),2))+(pow((WidthStar/2),2))); //radius from center of star to side vertex of star
  if(RVertical > RSqrt)
  {
    RCircle = RVertical;
  }
  else
  {
    RCircle = RSqrt;
  }
  // draw outside circle
  fill(0,120,0);
  ellipse(CenterStarX,CenterStarY,(RCircle*2)+(SpaceBetweenCircle*2),(RCircle*2)+(SpaceBetweenCircle*2));
  // draw inside circle
  fill(0,0,100);
  ellipse(CenterStarX,CenterStarY,(RCircle*2),(RCircle*2));
  // draw top vertex triangle
  noFill();
  triangle(CenterStarX,CenterStarY-(HeightStar/2)+3,CenterStarX-(WidthStar/2)+3,CenterStarY+(d/2),CenterStarX+(WidthStar/2)-3,CenterStarY+(d/2));
  // draw bottom vertex triangle
  noFill();
  triangle(CenterStarX,CenterStarY+(HeightStar/2)-3,CenterStarX-(WidthStar/2)+3,CenterStarY-(d/2),CenterStarX+(WidthStar/2)-3,CenterStarY-(d/2));
}

โดยผมนำโค้ดส่วนที่สร้างรูปดาวไปใส่ในฟังก์ชันชื่อ DrawStar โดยมี Parameter เป็นจุดศูนย์กลางของดาว

เมื่อผมเรียกใช้ฟังก์ชัน DrawStar 3 ครั้ง แต่เปลี่ยนค่า Parameter ไม่ให้เหมือนกัน ผมก็ได้ดาว 3 ดวง !!