စာအုပ်တစ်အုပ်လုံး number တွေ၊ text တွေနဲ့ အလုပ်လုပ်လာခဲ့ပြီ။ ဒီ appendix ကတော့ အနားယူပြီး ပျော်စရာ တစ်ခုပါ — Python နဲ့ ပုံဆွဲခြင်း အကြောင်း။
ဒီအခန်းပြီးရင်...
turtlemodule ကို import လုပ်ပြီး virtual turtle တစ်ကောင် ဖန်တီးနိုင်မယ်forward,backward,right,left,circle,homeတို့နဲ့ turtle ကို ရွေ့ခိုင်းနိုင်မယ်- Square, triangle, circle, pentagon, star စတဲ့ ပုံတွေ ဆွဲနိုင်မယ်
color,fillcolor,pensize,speedတို့နဲ့ pen ကို စိတ်ကြိုက် ပြင်နိုင်မယ်begin_fill()/end_fill()နဲ့ ပုံထဲ အရောင်ဖြည့်နိုင်မယ်- တစ်ပြိုင်နက် turtle နှစ်ကောင် ဆွဲခိုင်းနိုင်မယ်
turtle ဆိုတာ ဘာလဲ
turtle ဆိုတာ Python မှာ built-in ပါလာတဲ့ module တစ်ခု။ စိတ်ကူးထဲမှာ canvas (ပန်းချီစာရွက်ကြီး) တစ်ခုပေါ်မှာ virtual turtle (လိပ်ကလေး) တစ်ကောင် လမ်းလျှောက်နေတယ်လို့ တွေးကြည့်ပါ။
လိပ်ကလေးရဲ့ အမြီးမှာ pen တစ်ချောင်း ချည်ထားတယ်။ လိပ်ကလေး ရွေ့သွားတဲ့ နေရာတိုင်းမှာ pen က မျဉ်းကြောင်း ဆွဲသွားတယ်။ သင်က လိပ်ကလေးကို "ရှေ့ကို 100 သွား", "ညာဘက် 90 ဒီဂရီ လှည့်" လို့ ညွှန်ကြားတယ် — လိပ်ကလေးက နာခံပြီး ပုံတွေ ထွက်လာတယ်။
ဒါကြောင့် turtle ဟာ programming ကို စလေ့လာသူတွေအတွက် အကောင်းဆုံး ကစားစရာ တစ်ခုပါ — loop တွေ၊ function တွေ သင်ထားသမျှကို မျက်စိနဲ့ မြင်ရတဲ့ ပုံတွေအဖြစ် ပြောင်းပြနိုင်တယ်။
စတင်ခြင်း
ပထမဆုံး module ကို import လုပ်ပြီး turtle တစ်ကောင် ဖန်တီးပါ။ Program ဆုံးရင် window ကို ဆက်ဖွင့်ထားဖို့ turtle.done() ကို ခေါ်ပါ။
import turtle
t = turtle.Turtle()
turtle.done()
ဒီ code ကို run ရင် window အလွတ်တစ်ခု ပွင့်လာမယ် — အလယ်မှာ မြားလေးတစ်ခု (ဒါပဲ လိပ်ကလေး) ရှိနေမယ်။
သတိပြုရန်: turtle က window ဖွင့်ဖို့ လိုတယ်။ ကိုယ့် computer မှာ Python run ရင် အဆင်ပြေတယ်။ ဒါပေမဲ့ server ပေါ်မှာ (သို့မဟုတ် screen မရှိတဲ့ environment မှာ) run ရင် window ပွင့်လာမှာ မဟုတ်ဘူး။ ဒီအခန်းရဲ့ code တွေကို ကိုယ့် laptop/desktop မှာ စမ်းကြည့်ပါ။
Basic Turtle Commands
လိပ်ကလေးကို ရွေ့ခိုင်းတဲ့ အခြေခံ command တွေ:
| Command | ဖော်ပြချက် |
|---|---|
t.forward(100) |
ရှေ့ကို 100 pixels ရွေ့မယ် (မျဉ်းဆွဲသွားမယ်) |
t.backward(100) |
နောက်ကို 100 pixels ရွေ့မယ် |
t.right(90) |
ညာဘက်ကို 90 degrees လှည့်မယ် |
t.left(90) |
ဘယ်ဘက်ကို 90 degrees လှည့်မယ် |
t.circle(50) |
radius 50 pixels ရှိတဲ့ စက်ဝိုင်း ဆွဲမယ် |
t.home() |
အစမှတ် (0, 0) ကို ပြန်သွားပြီး အစက မျက်နှာမူတဲ့ ဘက်ကို ပြန်လှည့်မယ် |
တစ်ဆင့်ချင်း စမ်းကြည့်ရအောင်:
import turtle
t = turtle.Turtle()
t.forward(100) # ရှေ့ကို သွား
t.right(90) # ညာဘက် လှည့်
t.forward(100) # ထပ်သွား
t.left(45) # ဘယ်ဘက် 45 ဒီဂရီ လှည့်
t.backward(50) # နောက်ပြန် သွား
t.home() # အစမှတ် ပြန်
turtle.done()
ပုံတွေ ဆွဲခြင်း
Square (စတုရန်း)
Square ဆွဲဖို့ လိုတာက — ရှေ့သွား 100၊ ညာလှည့် 90 — ဒါကို 4 ကြိမ် ထပ်လုပ်ရုံပဲ။ Loop နဲ့ ရေးရင် ရှင်းရှင်းလေး:
import turtle
t = turtle.Turtle()
for i in range(4):
t.forward(100)
t.right(90)
turtle.done()
Triangle (တြိဂံ)
Triangle အတွက်က 3 ကြိမ်၊ လှည့်ရမယ့် ထောင့်က 120 degrees:
import turtle
t = turtle.Turtle()
for i in range(3):
t.forward(120)
t.left(120)
turtle.done()
မှတ်ချက်: ပုံမှန် polygon တစ်ခု ဆွဲဖို့ formula ရှိတယ် — အခြမ်းအရေအတွက် × (360 ÷ အခြမ်းအရေအတွက်) degrees လှည့်။ Square = 4 × 90°, triangle = 3 × 120°, hexagon ဆို 6 × 60° ပေါ့။
Pentagon (ပဉ္စဂံ — အခြမ်း 5 ခု)
import turtle
t = turtle.Turtle()
t.shape("turtle")
for i in range(5):
t.forward(100)
t.right(360 / 5)
turtle.done()
360 / 5 = 72 degrees လှည့်ပြီး 5 ကြိမ် ထပ်လုပ်ရင် pentagon ရတယ်။
Circle (စက်ဝိုင်း)
စက်ဝိုင်းကတော့ အလွယ်ဆုံး — command တစ်ခုတည်းပဲ:
import turtle
t = turtle.Turtle()
t.circle(80)
turtle.done()
အရောင် နှင့် Pen Attributes
အရောင်ပြောင်းခြင်း
t.color() က pen ရဲ့ အရောင် (outline color) ကို ပြောင်းတယ်။ t.fillcolor() က ပုံထဲ ဖြည့်မယ့် အရောင်ကို သတ်မှတ်တယ်။
import turtle
t = turtle.Turtle()
t.color("blue") # pen အရောင် အပြာ
t.fillcolor("yellow") # ဖြည့်မယ့် အရောင် အဝါ
t.begin_fill() # အရောင်ဖြည့်တာ စ
for i in range(4): # square ဆွဲ
t.forward(100)
t.right(90)
t.end_fill() # အရောင်ဖြည့်တာ ဆုံး
turtle.done()
အဝါရောင် ဖြည့်ထားတဲ့ အပြာ square တစ်ခု ရမယ်။ begin_fill() နဲ့ end_fill() ကြားမှာ ဆွဲသမျှ ပုံကို fillcolor နဲ့ ဖြည့်ပေးတယ်။
စက်ဝိုင်းကို ဖြည့်တာလဲ အတူတူပဲ:
import turtle
t = turtle.Turtle()
t.color("green")
t.fillcolor("lightgreen")
t.begin_fill()
t.circle(60)
t.end_fill()
turtle.done()
Pen Size နှင့် Speed
import turtle
t = turtle.Turtle()
t.pensize(5) # pen ကို ထူထူ ဆွဲခိုင်း
t.color("red")
t.forward(150)
t.pensize(1) # pen ပြန်ပါး
t.color("blue")
t.forward(150)
turtle.done()
t.speed() က လိပ်ကလေး ရွေ့တဲ့ အမြန်နှုန်းကို သတ်မှတ်တယ် — 1 (အနှေး) ကနေ 10 (အမြန်) အထိ။ 0 ဆိုတာ အမြန်ဆုံး (animation မပြဘဲ ချက်ချင်း ဆွဲပြီးသား ဖြစ်သွားတယ်):
import turtle
t = turtle.Turtle()
t.speed(1) # နှေးနှေး — လှုပ်ရှားမှု မြင်ရမယ်
t.forward(100)
t.speed(0) # အမြန်ဆုံး — ချက်ချင်း ပြီးသွားမယ်
t.circle(50)
turtle.done()
Turtle ကို အလှဆင်ခြင်း
လိပ်ကလေးရဲ့ ပုံသဏ္ဍာန်ကိုယ်တိုင်ကို ပြောင်းနိုင်တယ်။ မြားအစား လိပ်ပုံလေး ဖြစ်စေချင်ရင်:
import turtle
t = turtle.Turtle()
t.shape("turtle") # "arrow", "circle", "square", "turtle"...
turtle.bgcolor("lightblue") # canvas နောက်ခံ အရောင်
t.pensize(2)
t.color("green")
for i in range(4):
t.forward(100)
t.right(90)
turtle.done()
shape() မှာ ရွေးစရာတွေ: "arrow" (default), "turtle", "circle", "square", "triangle", "classic"။
ကြယ် (Star) ဆွဲခြင်း
5-pointed star ဆွဲဖို့ လျှို့ဝှက်ချက်က ထောင့်ပါ — အခြမ်းတိုင်းမှာ 144 degrees လှည့်ရတယ်:
import turtle
t = turtle.Turtle()
for i in range(5):
t.forward(100)
t.right(144)
turtle.done()
144 ဆိုတာ ဘယ်ကလာသလဲ? Star ရဲ့ ထောင့်ချွန်တစ်ခုက 36 degrees ရှိတယ်။ အပြင်ဘက် လှည့်ရမယ့် ထောင့်က 180 − 36 = 144 degrees ဖြစ်တယ်။ (ဒါမှမဟုတ် 360 / 5 * 2 = 144 လို့ မှတ်လဲ ရတယ်။)
အရောင်ဖြည့်ထားတဲ့ ကြယ်:
import turtle
t = turtle.Turtle()
t.color("red", "yellow") # outline အနီ, fill အဝါ
t.shape("turtle")
t.begin_fill()
for i in range(5):
t.forward(120)
t.right(360 / 5 * 2)
t.end_fill()
turtle.done()
t.color("red", "yellow") — argument နှစ်ခု ပေးရင် ပထမတစ်ခုက pen color၊ ဒုတိယတစ်ခုက fill color ဖြစ်တယ်။
နောက်ထပ် star ပုံစံတစ်မျိုး — ထောင့် 170 degrees နဲ့ 36 ကြိမ် လှည့်ရင် ပိုရှုပ်ထွေးလှပတဲ့ ကြယ်ပွင့် ရတယ်:
import turtle
t = turtle.Turtle()
t.color("red", "yellow")
t.speed(0)
t.begin_fill()
for i in range(36):
t.forward(200)
t.left(170)
t.end_fill()
turtle.done()
သတိပြုရန်: ဒီ star ကို while True: နဲ့ ရေးရင် program က ဘယ်တော့မှ ရပ်မှာ မဟုတ်ဘူး — infinite loop ဖြစ်သွားမယ်။ Loop အကြိမ် အရေအတွက် သိရင် for loop ကို သုံးပါ။ 36 ကြိမ်က 170 × 36 = 6120 degrees = အပတ်ရေ 17 ပတ် တိတိ ဖြစ်လို့ ပုံပြီးဆုံးတယ်။
Function နဲ့ ပုံဆွဲခြင်း
Chapter 14 မှာ function တွေ သင်ခဲ့ပြီးပြီ — turtle နဲ့ တွဲသုံးကြည့်ရအောင်။ Polygon ဆွဲတဲ့ formula က အတူတူပဲ ဖြစ်တော့ function တစ်ခုထဲ ထုပ်ထားရင် ပုံအမျိုးမျိုး ပြန်သုံးနိုင်တယ်:
import turtle
t = turtle.Turtle()
t.speed(0)
def polygon(sides, length):
angle = 360 / sides
for i in range(sides):
t.forward(length)
t.right(angle)
t.color("blue")
polygon(6, 80) # hexagon
t.color("red")
polygon(8, 60) # octagon
turtle.done()
ဒီလိုမျိုး code ကို တစ်ခါ ရေးထားပြီး ပုံအမျိုးမျိုး ဆွဲခိုင်းနိုင်တာ function ရဲ့ အစွမ်းပဲ။
Spiral (လိမ်ပုံစံ) ဆွဲခြင်း
Loop နဲ့ အရောင်တွေကို တွဲသုံးရင် spiral လို လှပတဲ့ ပုံတွေ ရတယ်:
import turtle
t = turtle.Turtle()
t.speed(0)
colors = ["red", "purple", "blue", "green", "yellow", "orange"]
for x in range(100):
t.pencolor(colors[x % 6])
t.forward(x)
t.left(59)
turtle.done()
ဒီမှာ ဘာဖြစ်နေသလဲ? x က တစ်ကြိမ်ပြီးတစ်ကြိမ် ကြီးလာတော့ မျဉ်းက တဖြည်းဖြည်း ရှည်လာတယ်။ 59 degrees လှည့်တာက 60 နဲ့ နည်းနည်းလွဲတာမို့ ပုံက တစ်ပတ်ပြီးတစ်ပတ် လှည့်ပတ်ရင်း အပြင်ကို ပွင့်ထွက်သွားတယ်။ x % 6 က အရောင် 6 ရောင်ကို အလှည့်ကျ သုံးပေးတယ် — Chapter 8 (list) နဲ့ Chapter 1 (% operator) ကို ပြန်သတိရကြည့်ပါ။
ရှင်းလင်းခြင်း နှင့် ဖျောက်ခြင်း
ပုံဆွဲပြီးရင် ပြန်စဖို့ command တွေ:
| Command | ဖော်ပြချက် |
|---|---|
t.reset() |
ပုံရော turtle ရဲ့ အခြေအနေရော အကုန် reset လုပ်မယ် |
t.clear() |
ဆွဲထားတဲ့ ပုံပဲ ဖျက်မယ် (turtle က နေရာမရွေ့ဘူး) |
t.hideturtle() |
turtle icon ကို ဖျောက်မယ် (ပုံကျန်တယ်) |
t.showturtle() |
turtle icon ကို ပြန်ပြမယ် |
ဥပမာ — ပုံဆွဲပြီး icon ဖျောက်ထားချင်ရင်:
import turtle
t = turtle.Turtle()
t.circle(80)
t.hideturtle() # လိပ်ကလေး ပျောက်သွား၊ စက်ဝိုင်းပဲ ကျန်
turtle.done()
Turtle နှစ်ကောင် တစ်ပြိုင်နက်
Turtle တစ်ကောင်ထဲ မဟုတ်ဘူး — နှစ်ကောင်၊ သုံးကောင် ဖန်တီးပြီး တစ်ပြိုင်နက် ဆွဲခိုင်းနိုင်တယ်:
import turtle
t1 = turtle.Turtle()
t1.color("red")
for i in range(5):
t1.forward(100)
t1.right(360 / 5 * 2)
t2 = turtle.Turtle()
t2.shape("turtle")
t2.color("blue")
t2.right(180)
for i in range(5):
t2.forward(100)
t2.right(360 / 5 * 2)
turtle.done()
t1 က အနီကြယ် တစ်ခု ဆွဲတယ်။ t2 က 180 degrees လှည့်ပြီး (မျက်နှာမူရာ ပြောင်းပြီး) အပြာကြယ် တစ်ခု ဆွဲတယ်။ Object တစ်ခုချင်းစီက သီးခြား state (အရောင်၊ နေရာ၊ မျက်နှာမူရာ) ရှိတယ် — Chapter 15/16 က object အကြောင်း ပြန်သတိရကြည့်ပါ။
Program ပိတ်ခြင်း
Window ကို program ကနေ ပိတ်ချင်ရင် turtle.bye() ကို သုံးတယ်:
import turtle
t = turtle.Turtle()
t.forward(100)
turtle.bye() # turtle window ကို ပိတ်မယ်
မှတ်ချက်: turtle.done() က window ကို ဖွင့်ထားပေးပြီး user ပိတ်တဲ့အထိ စောင့်တယ်။ turtle.bye() က window ကို ချက်ချင်း ပိတ်ပစ်တယ်။ ပုံဆွဲပြီးသား မြင်ချင်ရင် done() ကို သုံးပါ။
လေ့ကျင့်ခန်းများ
1. Hexagon ဆွဲပါ။ အခြမ်း 6 ခု၊ တစ်ခြမ်း 80 pixels ရှိတဲ့ ပုံမှန် hexagon တစ်ခု ဆွဲပါ။ လှည့်ရမယ့် ထောင့်ကို 360 / 6 နဲ့ တွက်ပါ။
2. အရောင်ဖြည့်ထားတဲ့ တြိဂံ။ အစိမ်းရောင် outline၊ အဝါရောင် fill နဲ့ triangle တစ်ခု ဆွဲပါ။ begin_fill()/end_fill() ကို သုံးပါ။
3. အိမ်ပုံလေး ဆွဲပါ။ Square (ကိုယ်) + triangle (ခေါင်မိုး) ကို တွဲပြီး အိမ်ပုံလေး ဆွဲပါ။ Square ဆွဲပြီးရင် turtle က ဘယ်နေရာမှာ ရှိနေမလဲ စဉ်းစားပြီး ခေါင်မိုးကို ဆက်ဆွဲပါ။ Hint: square ရဲ့ အပေါ်ဘက်အခြမ်းကနေ triangle စဆွဲပါ။
4. ကိုယ်ပိုင် spiral။ ဒီအခန်းရဲ့ spiral example ကို ယူပြီး ပြောင်းကြည့်ပါ — ထောင့်ကို 59 အစား 91 ထားကြည့်၊ ဒါမှမဟုတ် အရောင် list ကို ကိုယ်ကြိုက်တဲ့ အရောင် 3 ရောင်ပဲ ထားကြည့်။ ဘာထွက်လာသလဲ?
5. Turtle ပြိုင်ပွဲ။ Turtle နှစ်ကောင် ဖန်တီးပါ — တစ်ကောင်က အနီရောင် စက်ဝိုင်း ဆွဲပြီး၊ နောက်တစ်ကောင်က အပြာရောင် square ဆွဲပါစေ။ speed(0) နဲ့ နှစ်ကောင်လုံး အမြန်ဆွဲခိုင်းပြီး ဘယ်ပုံက ပိုလှသလဲ ကြည့်ပါ။