from karte import *
class CrniPeterIgralec(Igralec):
def odstrani_pare(self):
""" Odstrani pare iz igralčevih kart """
stevec = 0
originalne_karte = self._karte[:]
for karta in originalne_karte:
par = Karta(3 - karta._barva, karta._vrednost)
if par in self._karte:
self._karte.remove(karta)
self._karte.remove(par)
print("Igralec " + self._ime + ": " +
str(karta) + " se ujema s " + str(par))
stevec += 1
return stevec
class CrniPeter(Komplet):
def igraj(self, imena):
""" Igra igro s kartami: Črni Peter """
# Odstrani križevega fanta - t.j. Črnega Petra
self.odstrani(Karta(0,11))
# Dodaj igralce
self._igralci = []
for ime in imena:
self._igralci.append(CrniPeterIgralec(ime))
# Premešaj karte
self.premesaj()
# Razdeli karte
self.deli(self._igralci)
print("---------- Karte so razdeljene")
self.izpisi_igralce()
# Odstrani začetne pare
pari = self.odstrani_vse_pare()
print("---------- Pari odstranjeni, igra se začenja")
self.izpisi_igralce()
# Igraj, dokler ne najdeš pare za vseh 50 kart
obrat = 0
stev_igralcev = len(self._igralci)
while pari < 25:
pari += self.igraj_en_obrat(obrat)
obrat = (obrat + 1) % stev_igralcev
print("---------- Konec igre")
self.izpisi_igralce()
def odstrani_vse_pare(self):
""" Odstrani vse pare iz kart vseh igralcev """
stevec = 0
for igralec in self._igralci:
stevec += igralec.odstrani_pare()
return stevec
def igraj_en_obrat(self, i):
""" Odigra en krog igre """
if self._igralci[i].je_prazen():
return 0
sosed = self.najdi_soseda(i)
izbrana_karta = self._igralci[sosed]._karte.pop()
self._igralci[i].dodaj(izbrana_karta)
print("Igralec", self._igralci[i]._ime, "je izbral", izbrana_karta)
stevec = self._igralci[i].odstrani_pare()
self._igralci[i].premesaj()
return stevec
def najdi_soseda(self, i):
""" Najde soseda trenutnega igralca """
stev_igralcev = len(self._igralci)
for naslednji in range(1, stev_igralcev):
sosed = (i + naslednji) % stev_igralcev
if not self._igralci[sosed].je_prazen():
return sosed
def izpisi_igralce(self):
""" Izpiše igralce, ki igrajo igro """
stev_igralcev = len(self._igralci)
for i in range(stev_igralcev):
print(self._igralci[i])
igra = CrniPeter()
igra.igraj(["Janez", "Karel", "Lojze"])