วาดรูปด้วยภาษาโลโก้ : ตอนที่ 19 – คิตตี้
สวัสดีครับ วันนี้เราจะมาวาดรูปคิตตี้ (Kitty) ด้วยภาษาโลโก้กันครับ (เย้ๆๆ) โดยในตอนนี้เราจะดูแบบที่ต้องการวาดก่อน แล้วค่อยๆ วาดรูปไปพร้อมๆ กันครับ รูปนี้อาจจะยากสักหน่อย แต่ถ้าเราอดทนและพยายาม ก็ไม่มีอะไรยากเกินความสามารถของเราหรอกครับ >_<
คำสั่งที่น้องๆ จะเจอในบทนี้
คำสั่ง | ความสามารถ | ตัวอย่าง |
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 |
หลายตอนที่ผ่านมาเราวาดรูปทั่วไปกันมาเยอะแล้ว ตอนนี้ขอวาดตัวการ์ตูนตามใจผู้เขียนบ้างนะครับ
ข้างล่างนี้คือรูปต้นแบบที่เราต้องการวาดครับ (แต่จะวาดได้เหมือนแค่ไหนนั้น ต้องคอยติดตามครับ)
รูปภาพจาก – http://hellokitty.wikia.com/wiki/Hello_Kitty
ก่อนอื่นเราจะเตรียมฟังก์ชันเพื่อให้เราวาดรูปได้ง่ายขึ้นกันก่อนครับ ได้แก่
- ฟังก์ชัน setpencolor_default ใช้สำหรับเปลี่ยนสีปากการเป็นสีดำ
- ฟังก์ชัน paint ใช้สำหรับระบายสี
- ฟังก์ชัน comment ใช้สำหรับอธิบายการทำงานของโค้ด
TO comment :message END TO setpencolor_default TO paint :color |
เริ่มต้นด้วยกำหนดขนาดของปากกาและสีที่จะใช้ครับ
cs setpensize 3 setpencolor_default |
จากนั้นวาดส่วนหัวและหูแมวของน้องคิดตี้
comment “head_1 repeat 30 [ fd 1 rt 1 ] repeat 15 [ fd 2 rt 1 ] lt 45 fd 100 rt 135 fd 90 bk 90 lt 135 bk 100 rt 45 pu repeat 15 [ fd 2 rt 1 ] repeat 15 [ fd 3 rt 1 ] pd repeat 15 [ fd 3 rt 1 ] |
ส่วนนี้ถ้าเราวาดด้วยมือ มันง่ายมากเลยครับ แต่พอมาเขียนเป็นโปรแกรมแล้ว มันไม่ง่ายเลย T^T
วาดส่วนหัวและหูแมวที่เหลือของน้องคิดตี้กันต่อครับ
comment “head_2 repeat 15 [ fd 3 rt 1 ] lt 50 fd 100 rt 135 fd 90 bk 90 lt 135 bk 100 rt 50 pu fd 40 lt 70 pd pu rt 70 bk 40 pd pu repeat 15 [ fd 3 rt 1 ] repeat 15 [ fd 2 rt 1 ] pd repeat 15 [ fd 2 rt 1 ] repeat 30 [ fd 1 rt 1 ] |
แต่น้องคิดตี้มีโบว์สีแดงด้วยนี่หน่า!? งั้นเรามาเพิ่มโบว์ให้น้องคิดตี้กันครับ (เพิ่มฟังก์ชัน bow และแก้ไขโค้ดเมื่อกี้เล็กน้อย)
TO bow rt 60 fd 75 rt 120 fd 75 rt 120 fd 150 lt 120 fd 75 lt 120 fd 75 lt 60 paint “#EC193A rt 180 paint “#EC193A pu rt 90 fd 40 pd paint “#EC193A pu bk 40 lt 90 rt 180 pd END comment “head_2 |
วาดใบหน้าส่วนที่เหลือ
comment “head_3 repeat 30 [ fd 1 rt 1 ] repeat 30 [ fd 2 rt 1 ] repeat 30 [ fd 3 rt 1 ] repeat 30 [ fd 3 rt 1 ] repeat 30 [ fd 2 rt 1 ] repeat 30 [ fd 1 rt 1 ] |
เพิ่มหนวดแมวให้น้องคิตตี้
comment “whiskers_1 pu rt 90 fd 150 pd pu fd 100 pd fd 50 bk 50 lt 30 fd 50 bk 50 rt 60 fd 50 bk 50 lt 30 pu bk 100 pd pu bk 150 lt 90 pd comment “whiskers_2 |
สุดท้ายวาดใบหน้าให้น้องคิตตี้ครับ
comment “face pu rt 90 fd 125 pd lt 90 repeat 360 [ fd 0.2 rt 1 ] paint “#FFD601 pu fd 30 lt 90 fd 45 rt 90 pd repeat 360 [ fd 0.2 rt 1 ] paint “#424242 pu rt 90 fd 90 lt 90 pd repeat 360 [ fd 0.2 rt 1 ] paint “#424242 |
เสร็จแล้วครับ สำหรับรูปคิตตี้ คิดว่าเหมือนรูปต้นฉบับไหมครับ?
Code ทั้งหมด สามารถเข้าไปดูได้ที่นี่ครับ https://github.com/doctorkarn/logo-lang/blob/master/EP19.txt
สามารถติดตาม “วาดรูปด้วยภาษาโลโก้” ตอนอื่นๆ ได้ที่นี่ครับ https://karnlab.com/tag/ภาษาโลโก้