Kaland a vörös bolygón

Kategória: python - közép (előfizetőknek)

Feladat leírása

Kaland a vörös bolygón illusztráció

Egy automata marsjárót irányítasz a Marson. A küldetésed, hogy a bázisról (a [0, 0] koordinátáról) elindulva egy megadott parancssorozattal eljuss egy különleges kőzetmintához, majd a mintával együtt sikeresen visszatérj a bázisra. A marsjárónak korlátozott az energiája, és a raktere is csak egy bizonyos súlyt bír el. Útközben értékes ásványokat is gyűjthetsz, ha szerencséd van.

Készíts programot az alábbi leírás szerint, amely modellezi a marsjáró útját! A program forráskódját mentsd marsjaro néven!

Ha egy feladatot nem tudsz megoldani, akkor haladj tovább, és foglalkozz a többi feladattal.

Minta a szöveges kimenet kialakításához:

Add meg a parancsokat (E, D, K, N): EKKDD
A marsjáró útvonala:
(0, 0) -> (1, 0)
(1, 0) -> (1, 1)
(1, 1) -> (1, 2)
Sikeresen találtál egy 5 kg-os ásványt! Begyűjtve.
Jelenlegi rakomány: [5]
(1, 2) -> (0, 2)
(0, 2) -> (-1, 2)
A küldetés véget ért.
Összesen begyűjtött ásványok súlya: 5 kg.
A küldetés sikertelen, nem értél vissza a bázisra.
Értékelés: Felfedező


Részfeladatok

  1. 1.

    Definiálj egy listát rakomany néven az útközben gyűjtött ásványok súlyának tárolására!

  2. 2.

    Hozz létre változókat a marsjáró pozíciójának tárolására (x és y), és állítsd őket 0-ra! Szükséged lesz egy elozo_lepes változóra is, ennek kezdőértéke legyen egy üres szöveg.

  3. 3.

    Kérd be a felhasználótól a marsjáró irányítási parancsait egyetlen szövegként (pl. "EKKNND")! A parancsok a négy égtájat jelentik: E (észak), D (dél), K (kelet), N (nyugat).

  4. 4.

    A programod egy while ciklus segítségével fusson, amíg a felhasználó a "vege" szót nem írja be. Ha a felhasználó parancsokat ad meg, hajtsd végre a mozgást, ha a "vege" szót, akkor a program lépjen ki a ciklusból és értékelje a küldetést.

  5. 5.

    A bekért parancssorozat minden egyes karakterén haladj végig egy for ciklussal!

  6. 6.

    A karakternek megfelelően módosítsd a marsjáró x és y koordinátáit!

    • a)

      E: y koordináta növelése 1-gyel.

    • b)

      D: y koordináta csökkentése 1-gyel.

    • c)

      K: x koordináta növelése 1-gyel.

    • d)

      N: x koordináta csökkentése 1-gyel.

  7. 7.

    Szabály: A marsjáró nem léphet azonnal az ellentétes irányba (pl. E után D, vagy K után N), mert az felesleges manőver. Mielőtt léptetnéd a járművet, ellenőrizd, hogy az aktuális parancs nem az előző ellentettje-e! Ha igen, írj ki egy üzenetet, és az a lépés ne történjen meg! Az elozo_lepes változóban mindig tárold el az utolsó sikeres lépés irányát!

  8. 8.

    Minden sikeres lépés után van egy kis esély, hogy a marsjáró ásványt talál. Generálj egy véletlenszámot 1 és 10 között! Ha a szám 7, akkor a marsjáró talált egy ásványt.

  9. 9.

    A talált ásvány súlya legyen egy 2 és 8 kg közötti véletlenszerű egész szám.

  10. 10.

    A marsjáró rakterének maximum kapacitása 30 kg. Mielőtt egy új ásványt a rakományhoz adnál, ellenőrizd, hogy a rakomany listában lévő súlyok összege és az új ásvány súlya nem haladja-e meg a 30 kg-ot!

  11. 11.

    Ha elfér, add hozzá az új ásvány súlyát a listához, és írd ki, hogy a begyűjtés sikeres volt! Ha nem fér el, hagyd ott az ásványt, és erről is tájékoztasd a felhasználót!

  12. 12.

    Miután a felhasználó a "vege" paranccsal leállította a programot, a program értékelje a küldetést.

  13. 13.

    Számold össze, hogy a rakomany listában lévő ásványoknak mennyi az összsúlya!

  14. 14.

    Ellenőrizd a marsjáró végső pozícióját! Ha az x és y koordináta is 0, akkor a küldetés sikeres, mert a jármű visszatért a bázisra.

  15. 15.

    Írd ki az összegyűjtött súlyt és a küldetés sikerességét!

  16. 16.

    Adj egy szöveges értékelést a játékosnak a begyűjtött ásványok száma alapján:

    • a)

      Ha legalább 5 ásványt gyűjtött: "Szint: Mesterkutató"

    • b)

      Ha 2-4 ásványt gyűjtött: "Szint: Felfedező"

    • c)

      Különben: "Szint: Gyakornok"