سطح مقدماتی (Beginner Level)
کتابخانه Turtle یکی از جذابترین ابزارهای استاندارد پایتون برای آموزش برنامهنویسی، درک الگوریتمها و خلق گرافیکهای دو بعدی است. تصور کنید یک لاکپشت کوچک در صفحه دارید که با دستورات شما حرکت میکند و رد پایی (خط) از خود به جا میگذارد.
۱. راهاندازی و مفاهیم پایه (Setup & Basics)
برای استفاده از Turtle، نیاز به نصب پکیج اضافی نیست زیرا در کتابخانه استاندارد پایتون وجود دارد. تنها کافیست آن را import کنید.
مهمترین بخش، ساختن یک نمونه (Instance) از کلاس Turtle و یک صفحه نمایش Screen است.
مثال ۱: راهاندازی ساده
در این مثال صرفاً محیط را آماده میکنیم و لاکپشت را میسازیم.
مثال ۲: حرکت خطی ساده
بیایید لاکپشت را ۱۰۰ واحد به جلو ببریم.
۲. حرکت و چرخش (Movement & Rotation)
لاکپشت با دستورات forward (یا fd)، backward (یا bk) حرکت میکند و با right (یا rt) و left (یا lt) میچرخد.
مثال ۱: رسم یک زاویه قائم
حرکت به جلو و چرخش ۹۰ درجه.
مثال ۲: رسم پلهای
ترکیب چندین حرکت و چرخش برای ایجاد یک مسیر پلهای.
۳. رسم اشکال هندسی پایه (Basic Shapes)
با تکرار دستورات حرکت و چرخش میتوانیم اشکال بسته مثل مربع و مثلث بسازیم.
مثال ۱: رسم مربع (بدون حلقه)
نوشتن دستورات به صورت پشت سر هم (روش غیر بهینه اما آموزشی).
مثال ۲: رسم مثلث متساویالاضلاع
برای مثلث باید زاویه خارجی (۱۲۰ درجه) را محاسبه کنیم.
۴. کنترل قلم (Pen Control)
شما میتوانید رنگ قلم، ضخامت خط و وضعیت قلم (بالا یا پایین بودن) را تغییر دهید.
penup(): برداشتن قلم (حرکت بدون رسم خط).pendown(): گذاشتن قلم (شروع رسم خط).pensize(): ضخامت خط.
مثال ۱: خطچینو (Dashed Line)
ترکیبی از برداشتن و گذاشتن قلم.
مثال ۲: تغییر رنگ پویا
# Static code snippet showing color change logic
def change_color(t_obj, color_name):
t_obj.color(color_name)
t_obj.forward(50)
سطح پیشرفته (Professional Level)
در سطح حرفهای، از Turtle برای درک مفاهیم عمیقتر مثل Recursion (بازگشتی)، Event Handling و بهینهسازیهای گرافیکی استفاده میکنیم. کدها باید تمیز (Clean Code) و ماژولار باشند.
۱. بهینهسازی با حلقهها (Loops & Patterns)
به جای تکرار دستی کد، از حلقههای for برای رسم چندضلعیهای منتظم استفاده میکنیم.
مثال ۱: تابع رسم چندضلعی داینامیک
تابعی که تعداد اضلاع و طول هر ضلع را میگیرد و شکل را رسم میکند.
مثال ۲: رسم الگوی اسپیرال (Spiral)
استفاده از حلقه برای تغییر تدریجی زاویه یا طول ضلع.
۲. رنگآمیزی و پر کردن اشکال (Filling Shapes)
برای رنگ کردن داخل اشکال از متدهای begin_fill() و end_fill() استفاده میشود.
مثال ۱: دایره توپر
مثال ۲: ستاره توپر
رسم ستاره پنجپر با رنگآمیزی. دقت کنید که نقاط تقاطع چگونه پر میشوند.
۳. فراکتالها و توابع بازگشتی (Recursion)
یکی از زیباترین کاربردهای Turtle، رسم درختهای فراکتالی است که با توابع بازگشتی پیادهسازی میشوند.
مثال ۱: درخت دودویی (Binary Tree)
این کد با فراخوانی خود تابع، شاخههای کوچکتر را رسم میکند.
# Static snippet: Logic for fractal tree
def build_tree(t, branch_len):
if branch_len > 5:
t.forward(branch_len)
t.right(20)
build_tree(t, branch_len - 15) # بازگشت برای شاخه راست
t.left(40)
build_tree(t, branch_len - 15) # بازگشت برای شاخه چپ
t.right(20)
t.backward(branch_len) # بازگشت به گره قبل
مثال ۲: اجرای کامل درخت فراکتالی
۴. مدیریت سرعت و انیمیشن (Performance & Tracer)
وقتی ترسیمات پیچیده میشوند، مشاهده حرکت لاکپشت زمانبر است. با استفاده از turtle.tracer() و turtle.update() میتوانیم رندرینگ را کنترل کنیم تا نقاشی آنی انجام شود.
مثال ۱: مقایسه سرعت (بدون Tracer)
در حالت عادی لاکپشت تک تک خطوط را میکشد.
# Static snippet
t.speed("fastest")
for i in range(100):
t.circle(i)
t.right(10)
مثال ۲: سرعت فوقالعاده با Tracer
در این حالت، انیمیشن خاموش شده و کل شکل یکباره نمایش داده میشود.
