Tracks
Turtle graphics เป็นหนึ่งในแนวทางที่สนุกที่สุดในการเรียนรู้ Python เป็นสคริปต์ Python แบบง่าย ๆ ที่ให้สร้างภาพกราฟิกและแอนิเมชันเชิงศิลป์ได้ด้วยการ “สั่ง” เต่าให้เคลื่อนที่ไปมาบนหน้าจอ Turtle graphics ซึ่งเดิมตั้งใจออกแบบมาเพื่อสอนการเขียนโปรแกรมให้กับผู้เรียนที่อายุน้อยกว่า ได้รับความนิยมมากขึ้นในฐานะวิธีที่ช่วยให้ผู้เริ่มต้นได้ลงมือปฏิบัติจริงกับแนวคิดการเขียนโค้ด
Turtle ช่วยให้สร้างได้ตั้งแต่รูปทรงง่าย ๆ ไปจนถึงลวดลายเรขาคณิตที่ซับซ้อน พร้อม ๆ กับการเรียนรู้พื้นฐาน Python เช่น ลูป ฟังก์ชัน และเงื่อนไข ไม่ว่าจะเพิ่งเริ่มต้นเขียนโปรแกรมหรืออยากใช้ทักษะไปทำสิ่งสร้างสรรค์ Turtle graphics ก็พร้อมตอบโจทย์
ในบทความนี้ เราจะปูพื้นฐานของ turtle graphics และพาไปสร้างโปรเจกต์น่าตื่นเต้นบางอย่าง โดยวางรากฐานเพื่อสำรวจงานออกแบบที่ซับซ้อนยิ่งขึ้น ตั้งแต่สี่เหลี่ยมง่าย ๆ ไปจนถึงก้นหอยที่วิจิตร นอกจากการลองเล่นกับ turtle graphics แล้ว คอร์ส Introduction to Python ของเรายังเป็นคอร์สเสริมที่ดีเพื่อช่วยพัฒนาทักษะต่อเนื่องอีกด้วย
Turtle Graphics ใน Python คืออะไร?
Turtle Graphics คือโมดูล Python ที่ให้วาดและทำแอนิเมชันได้ด้วยการควบคุม “เต่า” เสมือนบนหน้าจอ เป็นวิธีที่เข้าใจง่ายและสนุกในการโต้ตอบกับโค้ด โดยสั่งเต่าให้ “เดินหน้า” “เลี้ยวซ้าย” หรือ “วาดวงกลม” แล้วเห็นผลลัพธ์แบบเรียลไทม์ โมดูล turtle มาพร้อมกับ Python 3 เวอร์ชันปัจจุบันทั้งหมด (จนถึง Python 3.14)
“เต่า” ใน Turtle Graphics คือเคอร์เซอร์หรือปากกาที่เคลื่อนที่ไปบนหน้าจอตามคำสั่งของคุณ ขณะเคลื่อนที่สามารถทิ้งรอยเส้น สร้างเส้น รูปร่าง หรือภาพวาดที่ซับซ้อนขึ้นได้ตามคำสั่ง แนวคิดคือการป้อนกลับแบบภาพช่วยให้เรียนรู้หลักการเขียนโปรแกรมพื้นฐานที่สำคัญได้ง่ายขึ้น โดยเฉพาะอย่างยิ่งสามารถเรียนรู้เรื่องลูป (สำหรับทำซ้ำรูปทรง) ฟังก์ชัน (เพื่อสร้างโค้ดที่นำกลับมาใช้ใหม่ได้) และเงื่อนไข (เพื่อตัดสินใจว่าเต่าควรทำอะไรต่อ) ตัวอย่างเช่น หากต้องการวาดดาว เราสามารถใช้ลูปเพื่อทำซ้ำการเดินหน้าและการเลี้ยวของเต่า 4 ครั้ง ทั้งนี้เนื่องจาก turtle graphics เป็นส่วนหนึ่งของไลบรารีมาตรฐานของ Python จึงไม่ต้องติดตั้งอะไรเพิ่มเติม
import turtle
star = turtle.Turtle()
star.right(75)
star.forward(100)
for i in range(4):
star.right(144)
star.forward(100)
turtle.done()

วาดรูปดาวด้วย turtle graphics ภาพโดยผู้เขียน
การใช้งานทั่วไปของ Turtle Graphics
การวาดรูปทรงและลวดลายด้วย turtle graphics นั้นสนุกไม่น้อย และยังมีการใช้งานจริงมากมาย โดยเฉพาะด้านการสอน ต่อไปนี้คือตัวอย่างการใช้งานทั่วไป:
สอนแนวคิดการเขียนโปรแกรมเบื้องต้น
Turtle graphics เป็นเครื่องมือยอดนิยมสำหรับสอนแนวคิดพื้นฐานด้านการเขียนโปรแกรมทั้งในบทเรียนและห้องเรียน วิธีการที่เรียบง่ายและมองเห็นได้จริงช่วยให้ผู้เริ่มต้นรู้สึกไม่หวาดกลัวกับการเรียนรู้การเขียนโปรแกรม เราจะดูตัวอย่างที่ละเอียดขึ้นด้านล่าง
สร้างภาพวาดและแอนิเมชัน
ด้วย turtle graphics สามารถสร้างลวดลายและแอนิเมชันที่ซับซ้อนได้ หรือจะทำรูปทรงง่าย ๆ อย่างสี่เหลี่ยมหรือวงกลมก็ได้ เริ่มจากแบบพื้นฐานแล้วค่อยไล่ระดับไปยังแบบที่ซับซ้อนยิ่งขึ้น ทั้งยังปรับแต่งการเคลื่อนที่ ทิศทาง ความหนาเส้น และสีของเต่าได้อีกด้วย
ออกแบบเกมหรือโปรเจกต์เชิงโต้ตอบ
Turtle graphics ใช้สร้างโปรเจกต์เชิงโต้ตอบหรือเกมง่าย ๆ ได้ โดยผสานคำสั่งของเต่าเข้ากับอินพุตจากผู้ใช้ (เช่น การคลิกเมาส์หรือกดแป้นพิมพ์) เพื่อทำเกมอย่างตัวแก้เขาวงกตหรือเกม Pong พื้นฐาน
ทำภาพช่วยมองเห็นอัลกอริทึม
ฟังดูน่าแปลกใจ แต่ turtle graphics เหมาะกับการทำ visualization ของอัลกอริทึม สามารถใช้สาธิตอัลกอริทึมการจัดเรียง เฟร็กทัล หรือแพทเทิร์นเชิงเวียนเกิดได้
คำสั่งพื้นฐานของ Turtle Graphics ใน Python
มาทำความคุ้นเคยกับคำสั่งพื้นฐานของ turtle graphics กัน เพื่อช่วยให้สร้างงานออกแบบชิ้นแรกได้ เราจะเริ่มจากปฏิบัติการง่ายที่สุดในการควบคุมการเคลื่อนที่และการวาดของเต่า
1. import turtle
ก่อนเริ่มวาด ต้อง import โมดูล turtle graphics ด้วยคำสั่งนี้ เพื่อให้เข้าถึงฟังก์ชันทั้งหมดของ turtle ได้
import turtle
2. turtle.forward()
คำสั่งนี้จะพาเต่าเดินหน้าไปตามจำนวนหน่วยที่ระบุ ที่นี่คือ 100 หน่วย โดยเต่าจะวาดเส้นขณะเคลื่อนที่
turtle.forward(100)
3. turtle.right()
เต่าจะหมุนขวา 90 องศา ณ ตำแหน่งเดิม (เปลี่ยนทิศที่หันโดยไม่เดินหน้า) ใช้เพื่อเตรียมการเคลื่อนที่ไปข้างหน้าครั้งถัดไป
turtle.right(90)
4. turtle.circle()
คำสั่งนี้จะวาดวงกลมรัศมี 50 หน่วย สามารถปรับรัศมีเพื่อวาดวงกลมที่ใหญ่ขึ้นหรือลดลงได้
turtle.circle(50)
5. turtle.penup()
ยกปากกาขึ้น หมายความว่าเต่าจะเคลื่อนที่โดยไม่วาดสิ่งใด ใช้เมื่อต้องการย้ายตำแหน่งเต่าโดยไม่ทิ้งรอย
turtle.penup()
6. turtle.pendown()
ลดปากกาลง ทำให้เต้ากลับมาวาดได้อีกครั้งหลังคำสั่ง penup()
turtle.pendown()
ตัวอย่างโปรเจกต์ Turtle Graphics ใน Python
ไปดูตัวอย่างจริงของ Python turtle graphics ที่ลองทำเองได้เลย เพียงคัดลอกและวางโค้ดที่ให้ไว้เพื่อเริ่มต้น แล้วปรับแต่งให้เข้ากับสไตล์ของตนเอง
รูปทรงง่าย ๆ
แนะนำให้เริ่มจากรูปทรงง่าย ๆ อย่างสี่เหลี่ยมและสามเหลี่ยม รูปทรงเหล่านี้ใช้การให้เต่าเดินหน้าและเลี้ยวที่มุมเฉพาะ
import turtle
t = turtle.Turtle()
for _ in range(4):
t.forward(100)
t.right(90)
turtle.done()

วาดสี่เหลี่ยมด้วย turtle graphics ภาพโดยผู้เขียน
ลวดลายเรขาคณิต
สามารถสร้างลวดลายเรขาคณิตได้ด้วยการทำซ้ำรูปทรงง่าย ๆ ผ่านลูป ใช้ลูปและฟังก์ชันเพื่อสร้างลวดลายอย่างก้นหอยหรือรูปดาว แพทเทิร์นเหล่านี้แสดงให้เห็นว่าความซ้ำและสมมาตรสร้างความซับซ้อนจากความเรียบง่ายได้อย่างไร
import turtle
t = turtle.Turtle()
for _ in range(36):
for _ in range(5):
t.forward(100)
t.right(144)
t.right(10)
turtle.done()

วาดลวดลายดาวแบบก้นหอยด้วย turtle graphics ภาพโดยผู้เขียน
กุญแจคือการลองปรับจำนวนรอบลูปและมุม เพื่อดูการพัฒนาของลวดลาย ด้วยการปรับพารามิเตอร์ คุณจะสร้างรูปแบบได้ไม่รู้จบ
เฟร็กทัลและงานออกแบบแบบเวียนเกิด
เฟร็กทัลคือลวดลายเวียนเกิดที่ซ้ำตัวเองในหลายสเกล เป็นรูปทรง self-similar ซึ่งหมายความว่ามองเหมือนเดิมในทุกสเกล และอาจมีเส้นรอบรูปเป็นอนันต์ในพื้นที่จำกัด เฟร็กทัลเหมาะสำหรับเรียนรู้แนวคิดเรื่อง recursion เฟร็กทัลชื่อดังใน turtle graphics คือ สามเหลี่ยมเซียร์พินสกี (Sierpiński triangle) ซึ่งเป็นชุดของสามเหลี่ยมเล็ก ๆ ที่ประกอบกันเป็นสามเหลี่ยมใหญ่
import turtle
def sierpinski(t, order, size):
if order == 0:
for _ in range(3):
t.forward(size)
t.left(120)
else:
sierpinski(t, order-1, size/2)
t.forward(size/2)
sierpinski(t, order-1, size/2)
t.backward(size/2)
t.left(60)
t.forward(size/2)
t.right(60)
sierpinski(t, order-1, size/2)
t.left(60)
t.backward(size/2)
t.right(60)
t = turtle.Turtle()
sierpinski(t, 3, 200)
turtle.done()

วาดสามเหลี่ยมเซียร์พินสกีด้วย turtle graphics ภาพโดยผู้เขียน
ภาพวาดเชิงโต้ตอบ
ยังสามารถควบคุมการเคลื่อนไหวของเต่าด้วยคีย์บอร์ดหรือเมาส์ เพื่อประสบการณ์ที่ไดนามิกยิ่งขึ้น ทำโปรเจกต์อย่าง Etch-A-Sketch ดิจิทัล ที่ควบคุมเต่าด้วยปุ่มลูกศรเพื่อวาดบนหน้าจอได้ และยังต่อยอดโค้ดข้างล่างนี้โดยเพิ่มตัวเลือกเปลี่ยนสีหรือเคลียร์หน้าจอได้ด้วย
import turtle
t = turtle.Turtle()
def move_up():
t.setheading(90)
t.forward(10)
def move_down():
t.setheading(270)
t.forward(10)
def move_left():
t.setheading(180)
t.forward(10)
def move_right():
t.setheading(0)
t.forward(10)
screen = turtle.Screen()
screen.listen()
screen.onkey(move_up, "Up")
screen.onkey(move_down, "Down")
screen.onkey(move_left, "Left")
screen.onkey(move_right, "Right")
screen.mainloop()
งานออกแบบเชิงสร้างสรรค์
Turtle graphics ไม่ได้จำกัดอยู่แค่รูปทรงและลวดลายเท่านั้น การผสานลูป recursion และเงื่อนไขเข้าด้วยกันสามารถสร้างงานออกแบบที่สวยงามและเป็นเอกลักษณ์ได้ ผลงานเชิงศิลป์อย่างมณฑลหรือรูปทรงนามธรรมก็ทำได้ด้วยการฝึกฝนเล็กน้อย ตัวอย่างนี้ เต่าจะวาดแพทเทิร์นมณฑลสีสันโดยเปลี่ยนทิศและสีอย่างต่อเนื่อง
import turtle
t = turtle.Turtle()
t.speed(0)
colors = ['red', 'purple', 'blue', 'green', 'orange', 'yellow']
for x in range(360):
t.pencolor(colors[x % 6])
t.width(x // 100 + 1)
t.forward(x)
t.left(59)
turtle.done()

วาดมณฑลด้วย turtle graphics ภาพโดยผู้เขียน
เคล็ดลับเริ่มต้นใช้งาน Turtle Graphics
ต่อไปนี้คือเคล็ดลับที่จะช่วยให้ใช้ Python turtle graphics ได้อย่างมีประสิทธิภาพ:
- เริ่มจากรูปทรงง่าย ๆ: วาดรูปทรงพื้นฐานอย่างสี่เหลี่ยมและวงกลม จะช่วยให้เข้าใจการเคลื่อนที่ของเต่า และวางพื้นฐานที่มั่นคงสำหรับงานออกแบบที่ซับซ้อนขึ้น
-
ทดลองสีและขนาดปากกา: Turtle graphics ให้เปลี่ยนขนาดปากกา ความเร็ว และสีของเต่าได้ ใช้
turtle.pensize(),turtle.speed()และturtle.color()เพื่อทำให้ภาพวาดน่าสนใจยิ่งขึ้น
- ใช้ลูปและฟังก์ชัน: ลูปใช้สร้างลวดลายซ้ำ ๆ ได้อย่างมีประสิทธิภาพ แทนที่จะเขียนโค้ดวาดรูปเดิมซ้ำหลายครั้ง ให้ใช้ลูปและฟังก์ชันเพื่อทำงานซ้ำอัตโนมัติ และสร้างงานออกแบบที่ซับซ้อนด้วยบรรทัดโค้ดที่น้อยลง
- สำรวจเอกสารประกอบ: โมดูล turtle มีคำสั่งมากมายเกินกว่าการเคลื่อนที่พื้นฐาน ลองอ่านเอกสารประกอบเพื่อค้นพบฟีเจอร์อย่างรูปทรง แสตมป์ และเทคนิคการวาดขั้นสูงอื่น ๆ คุณอาจประหลาดใจกับสิ่งที่สร้างได้!
สรุป
นอกเหนือจากรูปทรงที่เราสร้างในบทความนี้—อย่างสี่เหลี่ยม ดาว ก้นหอย และสามเหลี่ยมเซียร์พินสกี—turtle graphics ยังชวนให้ทดลองอย่างอื่นได้อีก เช่น เพนตากอนหรือแพทเทิร์นดอกไม้ที่ซับซ้อน เมื่อมีความมั่นใจมากขึ้น turtle graphics ก็เติบโตไปกับคุณ เปิดทางให้ทำโปรเจกต์ที่ท้าทายยิ่งขึ้นเรื่อย ๆ ลองทดลองและคิดไอเดียใหม่ ๆ อย่างต่อเนื่อง และอย่าลืมก้าวต่อไปด้วยการลองคอร์ส Python เบื้องต้น ของเราเพื่อพัฒนาทักษะอย่างต่อเนื่อง!
คำถามที่พบบ่อยเกี่ยวกับ Python Turtle Graphics
Turtle graphics ใน Python คืออะไร?
Turtle Graphics คือโมดูล Python ที่ให้สร้างกราฟิกและแอนิเมชันได้ด้วยการควบคุม “เต่า” เสมือนบนหน้าจอ เป็นวิธีเรียนรู้การเขียนโปรแกรมที่น่าสนใจผ่านการวาดรูปทรงและลวดลาย
จะเริ่มต้นกับ turtle graphics ใน Python ได้อย่างไร?
เริ่มต้นได้ด้วยการ import โมดูล turtle ใน Python ด้วย import turtle จากนั้นใช้คำสั่งอย่าง turtle.forward(), turtle.right() และ turtle.circle() เพื่อควบคุมการเคลื่อนไหวของเต่าและสร้างภาพวาด
สามารถสร้างโปรเจกต์ Python แบบใดได้บ้างด้วย turtle graphics?
สามารถสร้างโปรเจกต์ได้หลากหลาย ตั้งแต่รูปทรงง่าย ๆ อย่างสี่เหลี่ยมและวงกลม ไปจนถึงลวดลายเรขาคณิตที่ซับซ้อน แอนิเมชัน เฟร็กทัล และแม้แต่เกมหรือภาพวาดเชิงโต้ตอบ
สามารถสร้างโปรเจกต์ Python เชิงโต้ตอบด้วย turtle graphics ได้ไหม?
ได้ Turtle Graphics ใช้สร้างโปรเจกต์เชิงโต้ตอบได้ เช่น ใช้คีย์บอร์ดควบคุมการเคลื่อนไหวของเต่าและวาดแบบไดนามิก คล้าย Etch-A-Sketch ดิจิทัล
จะพัฒนางานโปรเจกต์ turtle graphics ใน Python ได้อย่างไร?
เริ่มจากรูปทรงง่าย ๆ แล้วค่อยสำรวจงานออกแบบที่ซับซ้อนขึ้น ใช้ลูปและฟังก์ชันเพื่อสร้างลวดลายซ้ำ ทดลองขนาดปากกาและสี และอ้างอิงเอกสารโมดูล turtle เพื่อค้นพบคำสั่งและเทคนิคขั้นสูง