2 changed files with 207 additions and 39 deletions
@ -0,0 +1,110 @@ |
|||||
|
from File import File_chaine as File |
||||
|
from random import shuffle |
||||
|
|
||||
|
class Carte: |
||||
|
def __init__(self, valeur, couleur): |
||||
|
self.valeur = valeur |
||||
|
self.couleur = couleur |
||||
|
|
||||
|
def compare(self, autre): |
||||
|
if self.valeur > autre.valeur: |
||||
|
return 1 |
||||
|
elif self.valeur < autre.valeur: |
||||
|
return -1 |
||||
|
else: |
||||
|
return 0 |
||||
|
|
||||
|
def __str__(self): |
||||
|
return str(self.valeur) + " " + self.couleur |
||||
|
|
||||
|
|
||||
|
class Jeu: |
||||
|
def __init__(self, nom1="joueur1", nom2="joueur 2"): |
||||
|
self.paquet = [] |
||||
|
self.f1 = None |
||||
|
self.f2 = None |
||||
|
self.nom1 = nom1 |
||||
|
self.nom2 = nom2 |
||||
|
|
||||
|
def distribue(self, nb_total_cartes): |
||||
|
self.paquet = [] |
||||
|
self.f1 = File() |
||||
|
self.f2 = File() |
||||
|
|
||||
|
couleurs = ["pique", "carreau", "coeur", "trèfle"] |
||||
|
|
||||
|
nombre = nb_total_cartes // 4 |
||||
|
|
||||
|
for valeur in range(nombre): |
||||
|
for couleur in couleurs: |
||||
|
self.paquet.append(Carte(valeur, couleur)) |
||||
|
|
||||
|
shuffle(self.paquet) |
||||
|
|
||||
|
for i in range(nombre * 2): |
||||
|
self.f1.enfiler(self.paquet[i]) |
||||
|
|
||||
|
for i in range(nombre * 2, nombre * 4): |
||||
|
self.f2.enfiler(self.paquet[i]) |
||||
|
|
||||
|
return self.f1, self.f2 |
||||
|
|
||||
|
def partie(self): |
||||
|
while not self.f1.est_vide() and not self.f2.est_vide(): |
||||
|
c1 = self.f1.defiler() |
||||
|
c2 = self.f2.defiler() |
||||
|
print(c1, c2, "\n") |
||||
|
|
||||
|
if c1.compare(c2) == 1: |
||||
|
self.f1.enfiler(c1) |
||||
|
self.f1.enfiler(c2) |
||||
|
|
||||
|
elif c1.compare(c2) == -1: |
||||
|
self.f2.enfiler(c1) |
||||
|
self.f2.enfiler(c2) |
||||
|
|
||||
|
else: |
||||
|
while True: |
||||
|
pot = [c1, c2] |
||||
|
|
||||
|
if self.f1.taille() < 2: |
||||
|
return "{} gagne ({} n'a pas assez de carte)".format(self.nom2, self.nom1) |
||||
|
if self.f2.taille() < 2: |
||||
|
return "{} gagne ({} n'a pas assez de carte)".format(self.nom1, self.nom2) |
||||
|
|
||||
|
pot.append(self.f1.defiler()) |
||||
|
pot.append(self.f2.defiler()) |
||||
|
|
||||
|
c1 = self.f1.defiler() |
||||
|
c2 = self.f2.defiler() |
||||
|
print(c1, c2) |
||||
|
|
||||
|
pot.extend([c1, c2]) |
||||
|
|
||||
|
if c1.compare(c2) == 1: |
||||
|
for c in pot: |
||||
|
self.f1.enfiler(c) |
||||
|
break |
||||
|
|
||||
|
elif c1.compare(c2) == -1: |
||||
|
for c in pot: |
||||
|
self.f2.enfiler(c) |
||||
|
break |
||||
|
|
||||
|
print(self.f1, "\n\n", self.f2, "\n") |
||||
|
|
||||
|
if self.f1.est_vide(): |
||||
|
return "{} gagne".format(self.nom2) |
||||
|
else: |
||||
|
return "{} gagne".format(self.nom1) |
||||
|
|
||||
|
|
||||
|
nom1 = input("Nom du joueur 1 : ") |
||||
|
nom2 = input("Nom du joueur 2 : ") |
||||
|
nb_total_cartes = int(input("Nombre total de cartes dans le paquet : ")) |
||||
|
|
||||
|
jeu = Jeu(nom1, nom2) |
||||
|
f1, f2 = jeu.distribue(nb_total_cartes) |
||||
|
print(f"{nom1} :", f1) |
||||
|
print(f"{nom2} :", f2) |
||||
|
print(jeu.partie()) |
||||
Loading…
Reference in new issue