آموزش turtle در پایتون | پروژه نهایی

طراحی یک نقاشی پیچیده

در این بخش، قصد داریم تا با استفاده از تمام مفاهیمی که در فصل‌های قبل یاد گرفتید، یک نقاشی پیچیده و جذاب طراحی کنیم. این نقاشی ترکیبی از اشکال هندسی، الگوهای تکراری، رنگ‌ها و حرکات پیشرفته لاکپشت خواهد بود. تمرکز ما بر این است که با شکستن یک طرح بزرگ به بخش‌های کوچک، بتوانید آن را گام‌به‌گام پیاده‌سازی کنید.

مرحله اول: انتخاب طرح و شکستن آن به اجزاء

برای طراحی یک نقاشی پیچیده، ابتدا باید یک طرح ساده در ذهن خود داشته باشید یا روی کاغذ بکشید. به عنوان مثال، فرض کنید می‌خواهیم یک گل آفتابگردان بکشیم. این گل را می‌توان به اجزای زیر تقسیم کرد:

  • یک دایره بزرگ برای مرکز گل (رنگ قهوه‌ای تیره)
  • گلبرگ‌های زرد که به صورت دایره‌وار دور مرکز چیده شده‌اند
  • یک ساقه سبز (یک خط ضخیم)
  • دو برگ سبز در دو طرف ساقه (بیضی‌های کوچک)

مرحله دوم: استفاده از توابع برای هر جزء

برای جلوگیری از شلوغی کد و افزایش خوانایی، برای هر جزء از گل یک تابع مجزا می‌نویسیم. مثلاً:

  • یک تابع برای رسم دایره مرکز با turtle.circle()
  • یک تابع برای رسم یک گلبرگ (که خود یک بیضی یا دایره کوچک است)
  • یک تابع برای رسم ساقه با استفاده از turtle.forward() و turtle.right()
  • یک تابع برای رسم برگ

مرحله سوم: تنظیم موقعیت و جهت لاکپشت

قبل از شروع هر جزء، باید لاکپشت را در موقعیت و جهت مناسب قرار دهید. از دستوراتی مانند turtle.penup() و turtle.goto(x, y) و turtle.setheading(angle) استفاده کنید تا مکان دقیق هر بخش را تعیین کنید.

مثال: برای شروع مرکز گل در موقعیت (0, 0) با جهت به سمت بالا:

turtle.penup()
turtle.goto(0, -30)  # کمی پایین‌تر از مرکز تا دایره دقیقاً در مرکز رسم شود
turtle.pendown()
turtle.circle(30)  # رسم دایره مرکز

مرحله چهارم: استفاده از حلقه‌ها برای تکرار

برای گلبرگ‌ها از یک حلقه for استفاده می‌کنیم. هر گلبرگ را در یک زاویه ثابت (مثلاً 30 درجه) رسم کرده و سپس جهت لاکپشت را تغییر می‌دهیم تا گلبرگ بعدی رسم شود. کد به صورت زیر خواهد بود:

for i in range(12):  # 12 گلبرگ
    turtle.color("yellow")
    turtle.begin_fill()
    # رسم یک گلبرگ (مثلاً یک دایره کوچک)
    turtle.circle(20)
    turtle.end_fill()
    turtle.penup()
    turtle.forward(50)  # فاصله از مرکز
    turtle.pendown()
    turtle.right(30)  # چرخش برای گلبرگ بعدی

مرحله پنجم: ترکیب رنگ‌ها و پر کردن

از turtle.color() برای تغییر رنگ قلم و پر کردن استفاده کنید. مطمئن شوید که پیش از رسم هر شکل، turtle.begin_fill() و پس از آن turtle.end_fill() را فراخوانی کنید.

مرحله ششم: تنظیم سرعت و مخفی کردن لاکپشت

برای دیدن روند نقاشی، سرعت را با turtle.speed(10) یا turtle.speed(0) (سریع‌ترین حالت) تنظیم کنید. همچنین می‌توانید لاکپشت را با turtle.hideturtle() مخفی کنید تا فقط نقاشی دیده شود.

کد کامل نمونه (برای درک بهتر):

import turtle

def draw_center():
    turtle.penup()
    turtle.goto(0, -30)
    turtle.pendown()
    turtle.color("brown")
    turtle.begin_fill()
    turtle.circle(30)
    turtle.end_fill()

def draw_petal():
    turtle.color("yellow")
    turtle.begin_fill()
    turtle.circle(20)
    turtle.end_fill()

def draw_flower():
    turtle.speed(0)
    turtle.hideturtle()
    draw_center()
    for _ in range(12):
        draw_petal()
        turtle.penup()
        turtle.forward(50)
        turtle.pendown()
        turtle.right(30)

draw_flower()
turtle.done()

نکات مهم:

  • در حین طراحی، خطاها را با turtle.exitonclick() مدیریت نکنید (چون بخش بعدی است).
  • همیشه پیش از اجرای کد، با استفاده از turtle.clearscreen() یا turtle.reset() صفحه را پاک کنید تا از تداخل با نقاشی‌های قبلی جلوگیری شود.
  • اگر نقاشی خیلی بزرگ شد، می‌توانید از turtle.pensize() برای کاهش ضخامت خطوط استفاده کنید.

با شکستن یک نقاشی پیچیده به بخش‌های کوچک و استفاده از توابع و حلقه‌ها، می‌توانید هر طرحی را با turtle پیاده‌سازی کنید. این روش باعث می‌شود کد شما تمیز، قابل فهم و قابل توسعه باقی بماند.

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3