علاوه بر چرخیدن ریبرگ به سمت راست، شاید بخواهید چند باری بچرخد. منظورم این است که رویش را به طرف سمتی بکند که از آن داشت میآمد. برای این کار میتوانیم یک تابع ()turn_around
(دور زدن) را این طور برایش تعریف کنیم:
def turn_around():
turn_left()
turn_left()
امتحانش کنید!
()turn_right
¶تابع ()turn_right
را یادتان هست؟ این جا دوباره داریمش:
def turn_right():
turn_left()
turn_left()
turn_left()
دقّت کنید که چطور دو تا دستور اوّل با تعریف تابع ()turn_around
یکی هستند. وقتی که چنین اتّفاقی میافتد باید قانون شمارهٔ ۳ را یادمان بیارویم:
مهم
وقتی دارید برنامههای کامپیوتری مینویسید، کارها را تکرار نکنید. تکرار میکنم: تکرار نکنید!
خب، پس ما چند تا دستور تکراری داریم. با این که ()turn_right
هنوز خیلی ساده است، ولی یک تمرین برنامهنویسی خوب، جایگزین کردن قسمتهایی از کد هست که با یک تابع ساده تکرار میشود. بنابراین ما بهتر است ()turn_right
را این طور بازنویسی کنیم:
def turn_right():
turn_around()
turn_left()
فلسفهٔ این کار این است که، هر چقدر تابع کوتاهتر باشد، کمتر احتمال دارد که در آن باگ داشته باشد. علاوه بر این، وقتی که ما یک تابع آزمایششدهٔ خوب و بدون باگ را داشته باشیم، میتوانیم با خیال راحت هر جا که خواستیم تابعهای طولانیتر را بنویسیم، از آن استفاده کنیم. اعتراف میکنم که این مورد تقریباً یک مثال بچگانه بود... ولی در این مرحله برای تشریح این مفهوم مثالهای پیچیدهتری ندارم.
نوبت شما
یک تابع ()step_back
(یه گام به عقب) تعریف کنید که حرکت تابع ()move
را خنثی میکند.
منظورم این است که با استفاده از این تابع شما کد شما باید این طور باشد:
# شروع از یه جایی با موقعیّت x و y
move()
step_back()
# برگشت به همان موقعیّت قبلی،
# رو به همون سمتی که از قبل بود
بادتان باشد تابعی که نوشتید را امتحانش کنید!
از راهنما استفاده نکنید؛ مگر موقعی که کاملاً حس کردید دیگر نمیتوانید کاری از پیش ببرید.
راهنمایی
شاید بخواهید دو بار از تابع ()turn_around
توی تعریف تابع ()step_back
استفاده کنید.