Vaje: Spletna storitev

Piškotki

Uporabnikom nočemo dati možnosti, da dostopajo do neke igre tako, da spremenijo številko v URL naslovu. Zato bomo id_igre posredovali preko piškotkov.

  1. Dodajte naslov '/nova_igra/' z metodo POST, ki ustvari novo igro in z metodo bottle.response.set_cookie shrani id_igre v piškotek in preusmeri na naslov '/igra/'.
    Opomba: V piškotku podajte spremenljivko path='/', saj s tem poskrbite, da bo vaš piškotek ostal tudi po preusmeritvi.

  2. Na naslovu '/igra/' sedaj preberite id_igre iz piškotka z bottle.request.get_cookie in prikažite primerno igro.

  3. Počistite spletne naslove, ki jih ne uporabljate več, npr. '/igra/<id_igre:int>/'. Ne pozabite spremeniti predlog, da bodo gumbi uporabljali pravilne naslove.

  4. Ker želimo pred uporabnikom skriti id_igre, v piškotku dodatno uporabimo spremenljivko secret, ki jo nastavimo na nek ključ. Ključ je lahko kar konstanta vašega programa.

Uporaba datotek

Vsakič, ko na novo poženemo strežnik, izgubimo vse podatke o igrah. Da bi to preprečili lahko uporabimo datoteke, v katere shranjujemo stanje.

  1. Razredu Vislice dodajte atribut datoteka_s_stanjem in metodi nalozi_igre_iz_datoteke in zapisi_igre_v_datoteko. Pri tem uporabljajte knjižnico json in funkciji json.dump in json.load. Ker knjižnica json ne zna delati z objekti razreda Igra, v datoteke shranite podatke, s katerimi lahko stanje rekonstruirate.
    Opomba: Funkciji za shranjevanje in nalaganje vam bosta ključe vedno prevedli v nize, tako da jih ne pozabite pretvoriti nazaj, če je to potrebno.

  2. Ustvarite datoteko stanje.json v katero shranite besedilo '{}' (torej prazno stanje). Ime datoteke dodajte v aplikacijo kot konstanto, in posodobite klic za izgradnjo objekta Vislice.

  3. Posodobite vse funkcije, ki spreminjajo stanje iger (npr. nova_igra in ugibaj) tako, da bodo na začetku prebrale stanje iz datoteke in na koncu shranile posodobljeno stanje v datoteko.

  4. Razredu Vislice lahko kot atribut dodamo tudi datoteko z besedami in v metodi nova_igra ustvarimo bazen možnosti iz besed v datoteki.

Dodatni izzivi

  1. Dodajte 'tipkovnico', tako da bo lahko igralec kliknil na želeno črko, namesto da jo mora vnesti in potrditi.

  2. Dodajte možnost ogleda statistik preteklih iger.

Zadnja sprememba: ponedeljek, 23 maj 2022, 13:43 PM