วาดรูปด้วยภาษาโลโก้ : ตอนที่ 17 – จักรยาน
สวัสดีครับ วันนี้เราจะมาวาดรูปจักรยาน ด้วยภาษาโลโก้กันครับ โดยในตอนนี้เราจะดูแบบที่ต้องการวาดก่อน แล้วค่อยๆ วาดรูปไปพร้อมๆ กันครับ โดยเราจะวาดรูปไปทีละองค์ประกอบ (component) จนสำเร็จเป็นรูปที่เราต้องการครับ
คำสั่งที่น้องๆ จะเจอในบทนี้
คำสั่ง | ความสามารถ | ตัวอย่าง |
fd ระยะทาง bk ระยะทาง |
forward = เดินหน้า backward = ถอยหลัง |
fd 100 = เดินหน้า 100 pixel bk 50 = ถอยหลัง 50 pixel |
rt องศา lt องศา |
right turn = หมุนขวา left turn = หมุนซ้าย |
rt 90 = หมุนไปทางขวา 90 องศา lt 45 = หมุนไปทางซ้าย 45 องศา |
repeat จำนวนครั้ง [ คำสั่ง ] | repeat = ทำคำสั่งต่อไปนี้ ซ้ำ n ครั้ง | repeat 3 [ fd 100 rt 120 ] repeat 4 [ fd 100 rt 90 ] repeat 6 [ fd 100 rt 60 ] |
TO ชื่อฟังก์ชัน :ตัวแปร คำสั่ง END |
function = สร้างชุดคำสั่ง | TO square :size repeat 4 [ fd :size rt 90 ] END |
cs clean |
clear screen = ล้างหน้าจอ clean = ล้างหน้าจอ |
|
pu pd |
pen up = ยกปากกา pen down = วางปากกา |
|
ht st |
hide turtle = ซ่อนเต่าโลโก้ show turtle = แสดงเต่าโลโก้ |
|
setxy พิกัดx พิกัดy | set (x,y) = กำหนดตำแหน่งเต่าโลโก้ | setxy 200 100 |
setpensize ขนาด setpencolor รหัสสี fill setscreencolor รหัสสี |
set pen size = กำหนดขนาดปากกา set pen color = กำหนดสีปากกา fill = ระบายสี set screen color = กำหนดสีพื้นหลัง |
setpensize 5 setpencolor 10 fill setscreencolor 10 |
เราจะมาดูรูปต้นแบบที่เราจะวาดกันก่อนครับ ซึ่งก็คือจักรยานสี่น้ำเงินยี่ห้อหนึ่ง จะสังเกตได้ว่าจักรยานมีรายละเอียดเยอะพอสมควร แต่เราจะวาดเฉพาะส่วนที่สำคัญ ที่เมื่อใครๆ มาเห็นรูปของเราก็ต้องดูออกว่าเป็นจักรยานครับ
รูปภาพจาก – https://www.mec.ca
เรามาเริ่มเขียนโปรแกรมกันเลยครับ โดยตั้งค่าขนาดปากกา และกำหนดสีที่จะใช้กันก่อน
TO comment :message END cs |
(ฟังก์ชัน comment ไม่ได้ใช้วาดรูปอะไร แต่เป็น dummy function เพื่อให้เราสามารถเพิ่มคำอธิบายเข้าไปในโค้ดได้ครับ)
วาดโครงจักรยาน (1)
comment “body_1 rt 30 fd 100 rt 60 fd 100 rt 120 fd 100 rt 60 fd 100 |
วาดโครงจักรยาน (2)
comment “body_2 bk 100 rt 60 fd 125 lt 60 fd 25 rt 90 fd 15 rt 90 fd 50 rt 90 fd 15 rt 90 fd 25 |
วาดโครงจักรยาน (3)
comment “body_3 rt 60 bk 125 pu lt 60 bk 100 pd rt 60 fd 145 arc 360 10 |
วาดล้อ (1)
comment “wheel_1 bk 145 setpencolor “#424242 arc 360 50 |
วาดล้อ (2)
comment “wheel_2 pu lt 60 fd 200 pd arc 360 50 |
วาดเกียร์
comment “wheel_3 bk 100 arc 360 25 |
เสร็จแล้วครับ รูปจักรยาน ถ้าเราลองลดความซับซ้อนของรูปภาพ แล้ววาดแค่ส่วนสำคัญของภาพ เราก็จะได้รูปภาพที่เราต้องการเร็วขึ้นครับ (render เร็วขึ้น)
Code ทั้งหมด สามารถเข้าไปดูได้ที่นี่ครับ https://github.com/doctorkarn/logo-lang/blob/master/EP17.txt
สามารถติดตาม “วาดรูปด้วยภาษาโลโก้” ตอนอื่นๆ ได้ที่นี่ครับ https://karnlab.com/tag/ภาษาโลโก้