Autorské riešenie
[stiahni]

Táto úloha môže byť vyriešená viacerými spôsobmi. Treba dodržať niekoľko podmienok zo zadania. Na začiatku nasmerovať Mórica správnym smerom pomocou súradníc cielX a cielY. Počas behu programu je nutné vykonávať štyri činnosti kontrolovať, kde sa nachádzam, kontrolovať množstvo zvyšných zásob a počas pohybu znižovať stav zásob podľa aktuálneho terénu.

moric

Ako sme už hore spomenuli hlavne funkcie, ktoré by mal program vykonávať, môže ich vidieť v procedúre dobrodruzstvo. Na začiatku si môžete všimnúť, že si uchovávame začiatočné súradnice a tiež tvorbu premenných navrat a hladSmad, ktoré budeme používať neskôr na zistenie toho, či mi došli zásoby alebo som narazil na vodnú prekážku a vykonávam návrat na začiatočnú pozíciu. Hlavnou časťou je cyklus, ktorý vykonávam pokiaľ nie som v cieli alebo kým nie som hladný alebo smädný. Vnútro cyklu pozostáva zo zistenia dostatku zásob pomocou procedúry suroviny, pohybu a následne podľa toho o aký terén ide zníženie počtu zásob. Na konci využívame spomenuté premenne na zistenie toho k akému ukončeniu cesty došlo, či už k úspešnému alebo neúspešnému s prežitím alebo tragickým koncom.

viem dobrodruzstvo :cielX :cielY :voda :jedlo
  ph
  urobTu "zacX xSur 
  urobTu "zacY ySur
  urobTu "navrat 0
  urobTu "hladSmad 0
  nechsmer smerk zoznam :cielX :cielY
  kym [zaroven vzdialenost :cielX :cielY >= 1 :hladSmad = 0][
    ak2 (suroviny :voda :jedlo < 1)[
      urobTu "hladSmad 1
    ][
      do 1
      ak farbaBodu = "olivova [
        urobTu "jedlo :jedlo - 1
        urobTu "voda :voda - 1
      ]
      ak farbaBodu = "zelena [
        urobTu "jedlo :jedlo - 1
        urobTu "voda :voda - 1
      ]
      ak farbaBodu = "hneda [
        urobTu "jedlo :jedlo - 2
        urobTu "voda :voda - 1
      ]
      ak farbaBodu = "zlta [
        urobTu "jedlo :jedlo - 1
        urobTu "voda :voda - 3
      ]
      ak farbaBodu = "modra [
        urobTu "navrat 1
        vp 180
        urobTu "cielX :zacX
        urobTu "cielY :zacY
      ]
    ]
  ]
  ak2 (:hladSmad = 1) [
    pis [cesta je neuspesna s tragickym koncom]
  ][
    ak (zaroven :navrat = 0 vzdialenost :cielX :cielY < 1)[
      pis [cesta je uspesna]
    ]
    ak (zaroven :navrat = 1 vzdialenost :cielX :cielY < 1)[
      pis [cesta je neuspesna s prezitim]
    ]
  ]
koniec 
 

Procedúra suroviny slúži na zistenie dostatku surovín, ak dôjde aspoň jedna zo surovín výsledok vracia 0 inač 1.

viem suroviny :jedlo :voda
  ak :jedlo < 1 [vysledok 0]
  ak :voda < 1 [vysledok 0]
  vysledok 1
koniec

Vaše zaujímavé riešenia a najčastejšie chyby

Viaceré tými sa rozhodli pozmeniť zadanie a odstrániť z neho vstupne premenne cielXcielY teda na vstupe očakávali iba množstvo jedla a vody. Ďalšími menej početnými chybami boli zlý výpis výsledku prípadne sa jeden z výsledkov nevypisoval alebo kontrola poctu jedla a vody, kde mohla nastať situácia kedy ich počet nebol rovný nule ale bol záporný.