Oglejmo si rokovalnike vseh treh gumbov, ki jih bomo uporabljali v igri. Rokovalniki bodo metode razreda BlackJack
, ki bo predstavljal igro Black Jack. Rokovalnik gumba »Deli« mora končati igro, če uporabnik gumb klikne, ko igra še poteka.
class BlackJack(): # ... def deli(self): # Ustvari nov komplet kart in ga premešaj self._komplet = Komplet() self._komplet.premesaj() # Dodaj igralca in delivca ter začni igro self._igralec._karte = [] self._delivec._karte = [] self._igra_poteka = True self._delivec.skrij_karto() # Izmenično razdeli dve karti igralcu in delivcu self._igralec.dodaj_karto(self._komplet.deli_karto()) self._delivec.dodaj_karto(self._komplet.deli_karto()) self._igralec.dodaj_karto(self._komplet.deli_karto()) self._delivec.dodaj_karto(self._komplet.deli_karto())
Rokovalnik gumba »Vleci« igralcu doda novo karto. Nato preveri, ali skupna vrednost kart igralca presega 21 in v tem primeru konča igro.
class BlackJack(): # ... def vleci(self): if self._igra_poteka: self._igralec.dodaj_karto(self._komplet.deli_karto()) # Če igralec preseže 21, priredi sporočilo spremeljivki _izid # ter posodobi vrednosti spremeljivk _igra_poteka in _REZULTAT if self._igralec.vrednost_kart() > 21: self._izid = "Imaš več kot 21. Jack je zmagal. Nova igra?" self._igra_poteka = False self._REZULTAT["SKUPAJ"] += 1 # Končaj igro self._igra_poteka = False self._delivec.razkrij_karto()
Ne pozabimo, da mora inicializator razreda BlackJack
najprej ustvariti GUI – površino, gumbe itd. Nato mora ustvariti igralca in delivca ter poklicati metodo deli
, ki začne igro.
Pri tem metoda deli
ustvari nov komplet igralnih kart in ga premeša. Nato igralcu in delivcu izmenično razdeli dve karti. Nazadnje mora nastaviti še spremenljivko, ki beleži stanje igre – ali igra poteka, ali ne ter skriti prvo karto delivca.
Rokovalnik gumba »Obdrži« začne delivcu dodajati nove karte, dokler je njihova skupna vrednost manjša od 17. Nato preveri, ali skupna vrednost kart delivca presega 21 – v tem primeru je igralec zmagovalec igre. V nasprotnem primeru pa preveri, kdo ima višjo skupno vrednost kart ter tako določi zmagovalca.
class BlackJack(): # ... def obdrzi(self): # Če igra poteka, potem delivec vleče karte, dokler ni njihova # skupna vrednost 17 ali več while self._delivec.vrednost_kart() < 17: self._delivec.dodaj_karto(self._komplet.deli_karto()) # Končaj igro self._igra_poteka = False self._delivec.razkrij_karto() # Priredi sporočilo spremeljivki _izid ter posodobi vrednosti # spremeljivk _igra_poteka in _REZULTAT if self._delivec.vrednost_kart() > 21: self._izid = "Jack ima več kot 21. Zmagal si! Nova igra?" self._REZULTAT["SKUPAJ"] += 1 self._REZULTAT["ZMAGE"] += 1 else: # Določi zmagovalca self._REZULTAT["SKUPAJ"] += 1 if self._igralec.vrednost_kart() > self._delivec.vrednost_kart(): self._izid = "Zmagal si! Nova igra?" self._REZULTAT["ZMAGE"] += 1 else: self._izid = "Jack je zmagal. Nova igra?"
Rokovalnika gumbov »Vleci« in »Obdrži« morata nastaviti ustrezni izid in povečati skupno število odigranih iger.