Bicikljanje
Pododdelek za spodbujanje kolesarjenja pri Oddelku za motorni promet in gospodarske dejavnosti Mestne občine Ljubljana je zavihal rokave: sestavili so namizno igro za spodbujanje kolesarjenja.
Igralna plošča je sestavljena iz 35 polj.
- Ob nekaterih poljih so narisani simboli, ki predstavljajo različne veščine, ki jih poznamo iz preteklih nalog. Igralec, ki pride na to polje, poslej obvlada to veščino (oziroma, dve, kjer sta narisani dve). V dokaz dobi kartico s simbolom te veščine. Na določenih poljih dobi več veščin ali celo večkrat isto (glej polji 5 in 9).
- Na nekaterih poljih so narisani simboli veščin. Igralec, ki pride na to polje, izgubi eno kartico s to veščino. Če je nima, se mora vrniti na začetno polje. (Če bi neko polje zahtevalo veščino, ki jo igralec dobi prav na tem polju, je vse OK.)
- Iz nekaterih poljih vodijo puščice. Igralec, ki pride na to polje, se pomakne na polje, na katero kaže puščice (če ni polje zahtevalo kake veščine, ki je nima; v tem primeru gre seveda na začetek). Če polje, na katerega ga je pripeljala puščica, vsebuje kake veščine, zahteva kake veščine ali pa ima puščico, se vsa ta zgodba ponovi tudi na tem polju (in naslednjih, če tako nanese).
Pogoji se preverjajo v tem vrstnem redu (igralec dobi veščine, nato se morda premakne na začetno polje, sicer pa, kamor vodi puščica).
Igralci začnejo na prvem polju in si prizadevajo priti na zadnje. Tidve polji nimata veščin ali puščic. (Kot je rekel Sigmund Freud, včasih je grb samo grb.)
Še nekaj: če je igralec, recimo, 2 polji pred koncem in vrže številko 3, se ne premakne. Ko je igralec na zadnjem polju, se seveda ne premika več.
Igralna plošča je v priponki. Kako jo predstavite v programu je vaša stvar. Resno predlagam, da si izmislite primerno podatkovno strukturo, ne milijon if-ov.
Pri ocenjevanju bom upošteval tudi eleganco rešitve, zato so naloge tokrat za oceno 6-7 in tako naprej.
Predlagam, da v rešitvah za ocene od 7 naprej ne uporabljate funkcij, ki ste jih napisali za oceno 6, temveč raje "prepakirate" to kodo v ustrezne metode.
Za določeno oceno je potrebno rešiti tudi naloge za nižje ocene.
Ocena 6 - 7
Napiši funkciji
zacetne_vescine(), ki vrne podatkovno strukturo, ki predstavlja začetne veščine, ki jih ima igralec. Kakšna bo ta struktura (seznam kartic, slovar, množica ... datoteka?!), je tvoja stvar.korak(polje, met, vescine), ki prejme trenutno polje, met (število pik na kocki) in vescine, torej kartice, ki jih ima trenutno igralec. Funkcija mora vrniti polje, na katerem je igralec po tem metu, in veščine, ki jih ima po tem, pri čemer mora upoštevati vse, kar je napisano zgoraj.Prvo polje ima številko 0.
Ocena 7 - 8
Napiši razred Igralec z metodami
- konstruktor ne prejme ničesar (razen
self) in naredi, kar mora korak(self, met)prejme število pik na kocki in počne vse, kar počnekorakiz naloge za oceno 6-7, le da je večina argumentov zdaj shranjena v objektu.polje(self)vrne polje, na katerem se nahaja igralec.
Ocena 8 - 9
Napiši razred Igra.
- konstruktor prejme število igralcev.
korak(self, met)prejme število pik na kocki. Premik opravi tisti igralec, ki je pač na vrsti.polja(self)vrne seznam polj, na katerih so igralci.
Ocena 9 - 10
Odsimuliraj 1000 iger z enim samim igralcem, pri čemer simuliraš kocko z random.randint(1, 6). Koliko metov, v poprečju traja igra?
Testov ni. Rezultat mora biti okrog 530 (lahko pa tudi 20 več ali manj).
Ocena 12
Napiši program, ki poišče najkrajše zaporedje metov, ki pripelje do cilja.
Testov ni, ker nočem izdati rešitve. Kdor bo rešil, naj mi piše, če želi izvedeti, ali je rešitev pravilna.
Testi
- 13 maj 2024, 17:51
- 13 maj 2024, 17:51