BlackJackIgralecDokonč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)