12. If Eğer Reeborg kendi kendine karar verebilseydi...

if, if ...

Bir dakika! Reeborg bazı kararlar alabilir. Bunu size söylememiş miydim?


İlk kararlar

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:

move_pick_start

ve tamamladığında pozisyonunun aşağıdaki gibi olmasını istediğimizi varsayalım.

move_pick_start

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!


Hasat zamanı Tekrar!

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.]

harvest start

Yeni yazdığınız program harvest1.wld dosyası ile de çalışmalıdır, deneyin.

previous  Tekrardan kaçının, tekrar! - home - Beni dinle yoksa  ... or else ....next