if, if ...
Bir dakika! Reeborg bazı kararlar alabilir. Bunu size söylememiş miydim?
Doğruyu söylemek gerekirse Reeborg'un karar vermek için biraz yardıma ihtiyacı var: neye karar vereceğini belirlemek için ona seçenekler sunmalısınız. Örneğin, Reeborg bir bip'in yanında olduğunda bip'i almasını aşağıdaki kodla sağlayabilirsiniz:
if next_to_a_beeper():
pick_beeper()
Yukarıdaki kodun ne anlama geldiğini açıklayalım:
Bu açıklamayı okuduğunuzda biraz karışık gibi gözükebilir, ancak if yapısını kullanmak oldukça kolaydır. Basit bir örnekle açıklamaya çalışalım. Reeborg'a 9 adım attırmak istediğimizi ve adımlarını atarken yolunun üstündeki bipleride toplamasını istediğimizi düşünelim. (Bir pozisyonda en çok bir bip olduğunu varsayıyoruz) Mesela başlangıç pozisyonu aşağıdaki gibi olsun:
ve tamamladığında pozisyonunun aşağıdaki gibi olmasını istediğimizi varsayalım.
Yani Reeborgtan şunu yapmasını istiyoruz:
bunu 9 kere tekrarla. Eğer Reeborg'a bip bulunmayan bir yerdeyken bip'i almasını isterseniz bir hata ile karşılaştığınızı unutmayın! Bunu şu şekilde yaptırabiliriz:
def move_and_pick(): move() if next_to_a_beeper(): pick_beeper() repeat(move_and_pick, 9) turn_off()
Bunu deneyin!
Yine hasat zamanı. Ama bu defa bazı havuçlar eksik. Reeborg'un bahçesindeki tüm havuçları toplamasını sağlayın. Dünya dosyası harvest3.wld. Bundan iki önce yaptığınız hasat zamanı alıştırmasına bakın. Değiştirmeniz gereken tek şey harvest_one_row() tanımlamasını yukarıdaki move_and_pick() tanımlamasına benzetmek olacaktır. Ancak, başka değişikliğede ihtiyacınız olabilir. [Örneğin benim hasat zamanı problemi çözümümde, pick_and_move()tanımlaması yaptım ve bir kaç küçük değişiklik gerekli oldu.]
Yeni yazdığınız program harvest1.wld dosyası ile de çalışmalıdır, deneyin.