موضوع قبلی

15. slices...

موضوع بعدی

Introduction to OOP in Python with Reeborg

16. چالش‌های بیشتر در فصل برداشت

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

در دست انجام

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

objects = object_here()
selection = objects[0]

# در ادامه

selection = object_here()[0]

ریبرگ از تابع ()object_here استفاده می‌کند که یک لیست برمی‌گرداند. این لیست شامل اشیائی است که در یک جا می‌توان پیدا کرد. برای سری محیط‌های فصل برداشت ۴ اشیاء این لیست بسته جایش ممکن است "سیب", "موز", "پرتقال" و یا "توت‌فرنگی" باشند.

هشدار

دو مورد جدید در کد زیر است که وقتی برای بار اوّل می‌خوانید فهم آن را کمی مشکل می‌کند. یکی این که ما یک تابع جدید تعریف می‌کنیم که یک نشانوند می‌گیرد که در این مورد fruit (میوه) است. مورد دوم این که ما با دو تا علامت مساوی پشت هر هم؛ یعنی ==، بررسی می‌کنیم ببینیم آیا دو تا مقدار با هم برابر هستند یا نه.

think(0)  # اختیاری، برای این که زیاد طول نکشد

def harvest_one_row (fruit):
    while front_is_clear():
        if object_here() == fruit:
            take(fruit)
        move()

def go_back_to_beginning_of_row():
    ...

def move_to_next_row():
    ...

def go_to_first_row():
    ...

def complete_one_row():
    harvest_one_row(selection)
    go_back_to_beginning_of_row()
    move_to_next_row()

move()
selection = object_here()[0]   # انتخاب نام شیئ از لیست
take(selection)
go_to_first_row()
for i in range(6):
    complete_one_row()

امتحانش کنید!

برنامهٔ بالا را طوری کامل کنید که برای هر چهار تا محیط «برداشت۴آ»، «برداشت۴ب»، «برداشت۴پ» و «برداشت۴ت» کار کند.