Skip to main content
Učilnica FRI 25/26
  • Home
  • Calendar
  • More
English ‎(en)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
You are currently using guest access
Log in
Učilnica FRI 25/26
Home Calendar
Expand all Collapse all
  1. Dashboard
  2. p1
  3. Objektno programiranje
  4. Turbo kolesar

Turbo kolesar

Completion requirements
Due: Monday, 12 January 2026, 2:15 PM

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 January 2026, 8:14 PM
You are currently using guest access (Log in)
Get the mobile app
Powered by Moodle
Obvestilo o avtorskih pravicah