BlackJackIgralec
Dokončana splošna koda za igre s kartami, ki vsebuje razrede Karta
, Komplet
in Igralec
je shranjena v datoteki karte.py.
V nove programe jo bomo vključevali z ukazom from karte import *
Napišimo nov razred z imenom BlackJackIgralec
, ki bo predstavljal igralca igre Black Jack. Nov, razširjeni razred bomo potrebovali, saj nas bo zanimalo koliko kart ima igralec (pri igri Black Jack jih ima lahko največ 5), kolikšna je vrednost kart in ali ima igralec kombinacijo, imenovano Black Jack. Pri tej kombinaciji ima igralec dve karti, ki sta skupaj vredni 21 in od katerih je ena karta as, druga pa karta z vrednostjo 10 – desetka, fant, dama ali kralj. Razred BlackJackIgralec
nima metod __init__
in __str__
kot bi morda pričakovali, saj ju podeduje iz (splošnejšega) starševskega razreda Igralec
.
Najprej napišimo metodo vrednost_kart
, ki izračuna vsoto vrednosti kart, ki jih ima igralec v roki. Pri tem je vrednost figur (fant, dama, kralj) in desetk enaka 10, vrednost asa je enaka 1 ali 11 (kar bolj odgovarja igralcu), vrednost preostalih kart pa je enaka vrednosti, ki je zapisana na kartah:
class BlackJackIgralec(Igralec): def vrednost_kart(self): vsota = 0 for karta in self._karte: if karta._vrednost >= 10: # figura ali 10 vsota += 10 elif karta._vrednost > 1: # karta od 2 do 9 vsota += karta._vrednost else: # as, prištej 1 ali 11 if vsota + 11 <= 21: vsota += 11 else: vsota += 1 return vsota
Napišimo metodo stevilo_kart
, ki vrne število kart, ki jih ima igralec v roki:
class BlackJackIgralec(Igralec): # ... def stevilo_kart(self): return len(self._karte)