Preskoči na glavno vsebino
Učilnica FRI 25/26
  • Domov
  • Koledar
  • Več
Slovenščina ‎(sl)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Trenutno uporabljate gostujoči dostop
Prijavite se
Učilnica FRI 25/26
Domov Koledar
Razširi vse Skrči vse
  1. Nadzorna plošča
  2. p1
  3. Objektno programiranje
  4. Turbo kolesar

Turbo kolesar

Zahteve zaključka
Rok za oddajo: ponedeljek, 12. januar 2026, 14.15

1. Premik in lokacija

Napišite razred Kolesar. Ta naj ima

  • konstruktor (__init__(self)), ki naredi, kar je potrebno, da bo razred deloval;
  • metodo premik(self, smer), ki prejme niz smer, ki je lahko "<", ">", "^" ali "v" in premakne kolesarja za eno polje levo, desno, gor ali dol in
  • metodo lokacija(self), ki vrne trenutne koordinate (x, y) kolesarja.

Kolesar je v začetku na lokaciji (0, 0). Koordinatni sistem je obrnjen tako, da premik gor (^) zmanjša y.

ana = Kolesar()
ana.premik(">")
print(ana.lokacija())
ana.premik("^")
print(ana.lokacija())

izpiše

(1, 0)
(1, 1)

2. Prevozi

Kolesarju dodajte metodo prevozi(pot), ki prejme pot oblike, na primer, 5<3^2^8>2<2v. Pot, torej je sestavljena iz zaporedja števk (enomestnih številk) in znakov, ki kažejo smer. Dobivši niz iz primera mora kolesar petkrat levo, trikrat gor, dvakrat gor, osemkrat desno, dvakrat levo in dvakrat gor.

Nasvet: metoda prevozi naj kliče metodo premik.

ana = Kolesar()
ana.premik(">")
ana.prevozi("7^4<")
ana.premik(">")
print(ana.lokacija())

izpiše (2, -7).

3. Razdalja

Kolesarju dodajte metodo razdalja(), ki vrne prevoženo razdaljo.

ana = Kolesar()
ana.premik("<")
ana.premik("<")
ana.prevozi("2>")
print(ana.razdalja())

izpiše 4 (čeprav je Ana po vsem tem dejansko na (0, 0)).

4. Turbo

Kolesarju dodajte metodi vkljuci_turbo() in izkljuci_turbo(). Ko je "turbo" vključen, so vsi premiki (prek metode premik in prevozi) podvojeni: ko ga premaknemo za eno polje, se premakne za dve. Ker turbo.

Će pokličemo vkljuci_turbo takrat, ko je ta že prižgan, se ne zgodi nič.

ana = Kolesar()
ana.vkljuci_turbo()
ana.premik(">")  # po tem je na (2, 0)
ana.premik("v")  # po tem je na (2, 2)
ana.premik("v")  # po tem je na (2, 4)
ana.izkljuci_turbo()
ana.premik("^")  # po tem je na (2, 3)
print(ana.lokacija())

izpiše (2, 3).

Turbo velja tudi za prevozi:

ana = Kolesar()
ana.vkljuci_turbo()
ana.prevozi("1v3>")
print(ana.lokacija())

izpiše (2, 6), saj vsak premik dol in desno šteje dvojno.

5. Varni turbo

Zaradi evropskih predpisov se mora turbo samodejno izključiti po petih premikih. Naredite, da bo tudi vaš razred Kolesar skladen z evropsko zakonodajo.

ana = Kolesar()
ana.vkljuci_turbo()  # turbo bo prižgan 5 premikov
ana.premik(">")  # po tem je na (2, 0); turbo bo še 4 premike
ana.prevozi("2v")  # po tem je na (2, 4); turbo bo še 2(!) premika
ana.prevozi("3v2<")   # pot tem je na (0, 9).
                     # Turbo je veljal samo za prva dva premika dol
                     # tretji dol in in oba levo sta bila brez turba

Še vedno velja: če pokličemo vkljuci_turbo takrat, ko je ta že prižgan, se ne zgodi nič! Števec se ne resetira na 5 premikov, temveč teče naprej. Če bi v gornjem primeru pred zadnji prevozi dodali ponoven vkljuci_turbo, se ne bi nič spremenilo, turbo bi bilo še vedno vključen samo za naslednja dva premika.

Testi

  • testi.py testi.py
    5. januar 2026, 20:14
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo
Stran poganja Moodle
Obvestilo o avtorskih pravicah