Kaland a vörös bolygón
Kategória: python - közép (előfizetőknek)
Feladat leírása
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.
Definiálj egy listát rakomany néven az útközben gyűjtött ásványok súlyának tárolására!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.
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.
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.
A bekért parancssorozat minden egyes karakterén haladj végig egy for ciklussal!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.
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.
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.
A talált ásvány súlya legyen egy 2 és 8 kg közötti véletlenszerű egész szám.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.
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.
Miután a felhasználó a "vege" paranccsal leállította a programot, a program értékelje a küldetést.13.
Számold össze, hogy a rakomany listában lévő ásványoknak mennyi az összsúlya!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.
Írd ki az összegyűjtött súlyt és a küldetés sikerességét!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"