Razred BlackJack

Dopolnimo metodo igraj, ki bo za vsakega igralca (in delivca na koncu) vlekla dodatne karte, dokler bo vsota vrednosti kart manjša ali enaka 16. Pri delivcu bo metoda nastavila tudi, da druga karta ne bo več skrita. Nato bo metoda, s klicem metode izpisi_igralce, izpisala stanje kart v rokah igralcev in delivca ob koncu igre. Nazadnje bo metoda, s klicem metode izpisi_rezultate, izpisala še rezultate igre:

class BlackJack(Komplet):
  # ...
 
  def igraj(self, imena):
    # ...

    # Igralci in delivec vlečejo karte,
    # dokler je vsota manjša ali enaka 16
    stev_igralcev = len(self._igralci)
    for i in range(stev_igralcev):
      igralec = self._igralci[i]
      while igralec.vrednost_kart() <= 16:
        # Igralec lahko ima največ 5 kart
        if igralec.stevilo_kart() == 5:
          break
        karta = self._karte.pop()
        igralec.dodaj(karta)
      # Če je zadnji igralec, obrni skrito karto
      if i == stev_igralcev-1:
        self._igralci[i]._skrito = False
    print("---------- Igralci igrajo proti delivcu")
    self.izpisi_igralce()

    # Izpis rezultatov (kdo zmaga in kdo izgubi)
    print("---------- Konec igre, izpis rezultatov")
    self.izpisi_rezultate()

Dodajmo metodo izpisi_rezultate, ki bo za vsakega igralca izpisala njegov rezultat igre – ali je proti delivcu zmagal ali izgubil:


class BlackJack(Komplet):
  # ...

  def izpisi_rezultate(self):
    delivec = self._igralci[-1] # zadnji igralec
    rezultat_delivca = delivec.vrednost_kart()
    stev_igralcev = len(self._igralci)
    for i in range(stev_igralcev):
      print(self._igralci[i].rezultat(rezultat_delivca))

Izvedi Počisti