Hazırlayan: Eric Roberts'ın ders notlarından esinlenilmiştir
Çevirenler: Serhat Arslan, Ceren Kocaoğullar
Handouts: Karel Reference
File: un_karel.py
Karel evlerin inşa edilmesinde yardımcı olması için BM (Birleşmiş Milletler) tarafından işe alınmıştır. Bir kurtarıcıya ihtiyaç vardır ve Karel da şüphesiz bu görev için en iyi robottur. Hedefiniz Karel'ın en alt sıra boyunca yürümesi ve aşağıdaki gibi bir ev inşa etmesi:
Karel bir beeper bulduğu her zaman. Aşağıdaki resimler iki örnek dünya için Karel'ın yapması gerekeni gösteriyor. Hiçbir evin çakışmayacağını ve tüm evlerin dünyanın içine sığacağını varsayabilirsiniz. Dünyanın büyüklüğüne veya evlerin sayısına dair varsayımda bulunamazsınız!
from karel.stanfordkarel import * """ File: un_karel.py ------------------------ This program makes Karel builds houses, as work for the UN. Karel will build a house on each spot marked by a beeper in the bottom row of the world. """ def main(): while front_is_clear(): move() if beepers_present(): build_house() def build_house(): """ Constructs a single house centered around Karel's current position. Assumes that there is a beeper present at that location. At the end of the function, Karel will be facing east on the bottom- right corner of the house, one square to the east of Karel's original position. """ # Build the left column of the house first pick_beeper() turn_around() move() turn_right() place_three() # Build the middle column of the house second turn_right() move() turn_right() place_three() # Build the right column of the house last turn_left() move() turn_left() place_three() turn_around() move_to_wall() turn_left() def move_to_wall(): """ Move forward until Karel hits a wall. """ while front_is_clear(): move() def place_three(): """ Places three beepers in a row and moves three times! Assumes that there is enough space in front of Karel to move 3 times. After this function executes, Karel will be 3 spaces further in the direction it is facing, immediately after the last square where it put down a beeper. """ for i in range(3): put_beeper() move() def turn_around(): """ Karel turns 180 degrees - e.g. if Karel is facing east, now Karel will face west. If Karel is facing north, Karel will now face south. """ turn_left() turn_left() def turn_right(): """ Karel turns right - e.g. if Karel is facing east, now Karel will face south. If Karel is facing north, Karel will now face east. """ for i in range(3): turn_left() # There is no need to edit code beyond this point if __name__ == "__main__": run_karel_program()