|
|
@ -5,15 +5,12 @@ from File import File_chaine as File |
|
|
|
from Pile import Pile_chaine as Pile |
|
|
|
|
|
|
|
|
|
|
|
#______________________________________ |
|
|
|
class Carte: |
|
|
|
"""classe d'une carte de valeur 'valeur' et de couleur 'couleur'""" |
|
|
|
def __init__(self, valeur, couleur): |
|
|
|
"""création de la carte""" |
|
|
|
self.valeur = valeur |
|
|
|
self.couleur = couleur |
|
|
|
|
|
|
|
#________ |
|
|
|
self.couleur = couleur |
|
|
|
|
|
|
|
def compare(self, other): |
|
|
|
"""comparaison entre deux cartes""" |
|
|
@ -31,7 +28,7 @@ class Carte: |
|
|
|
tmp = ["Valet","Dame","Roi"][self.valeur-11] |
|
|
|
|
|
|
|
return tmp + " de " + self.couleur |
|
|
|
#__________ |
|
|
|
|
|
|
|
class Jeux: |
|
|
|
"""classe d'un jeu""" |
|
|
|
def __init__(self, nb_cartes): |
|
|
@ -41,35 +38,33 @@ class Jeux: |
|
|
|
couleurs = ["Coeur", "Carreaux", "Trèfle", "Pique"] |
|
|
|
if self.nb_cartes == 32: |
|
|
|
valeurs = [1, 7, 8, 9, 10, 11, 12, 13] |
|
|
|
elif self.nb_cartes == 52: |
|
|
|
valeurs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] |
|
|
|
else: |
|
|
|
valeurs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] |
|
|
|
|
|
|
|
if self.nb_cartes > 52: |
|
|
|
raise ValueError("Nombre de cartes invalide") |
|
|
|
|
|
|
|
|
|
|
|
for couleur in couleurs: |
|
|
|
for valeur in valeurs: |
|
|
|
self.paquet.append(Carte(valeur, couleur)) |
|
|
|
shuffle(self.paquet) |
|
|
|
|
|
|
|
if self.nb_cartes != 32 and self.nb_cartes != 52: |
|
|
|
for i in range(52 - self.nb_cartes): |
|
|
|
self.paquet.pop() |
|
|
|
|
|
|
|
print(self.paquet) |
|
|
|
print(len(self.paquet)) |
|
|
|
|
|
|
|
def distribue(self): |
|
|
|
"""distribution des cartes""" |
|
|
|
f1 = File() |
|
|
|
f2 = File() |
|
|
|
if self.nb_cartes == 52: |
|
|
|
for i in range(26): |
|
|
|
f1.enfiler(self.paquet.pop()) |
|
|
|
f2.enfiler(self.paquet.pop()) |
|
|
|
else: |
|
|
|
for i in range(16): |
|
|
|
f1.enfiler(self.paquet.pop()) |
|
|
|
f2.enfiler(self.paquet.pop()) |
|
|
|
for i in range(self.nb_cartes//2): |
|
|
|
f1.enfiler(self.paquet.pop()) |
|
|
|
f2.enfiler(self.paquet.pop()) |
|
|
|
return f1, f2 |
|
|
|
|
|
|
|
#______________________________________ |
|
|
|
nb_cartes = 42 #52 |
|
|
|
partie = Jeux(32) |
|
|
|
|
|
|
|
#une fonction utile |
|
|
|
def vider_dans(mise_1, mise_2,paquet_joueur): |
|
|
|
"""ajoute les cartes des mises dans le paquet du joueur (et supprime les mises)""" |
|
|
|
while not mise_1.est_vide(): |
|
|
@ -80,50 +75,47 @@ def vider_dans(mise_1, mise_2,paquet_joueur): |
|
|
|
|
|
|
|
def main(): |
|
|
|
"""fonction principale""" |
|
|
|
jeu = Jeux(32) |
|
|
|
jeu = Jeux(2) |
|
|
|
(paquet_joueur1, paquet_joueur2) = jeu.distribue() |
|
|
|
mise_joueur1 = Pile() |
|
|
|
mise_joueur2 = Pile() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
compteur_tours = 0 |
|
|
|
while not paquet_joueur1.est_vide() and not paquet_joueur2.est_vide(): |
|
|
|
print("joueur1",paquet_joueur1) |
|
|
|
print("joueur2",paquet_joueur2) |
|
|
|
if mise_joueur1.est_vide() or mise_joueur1.est_vide(): |
|
|
|
mise_joueur1.empiler(paquet_joueur1.defiler()) |
|
|
|
mise_joueur2.empiler(paquet_joueur2.defiler()) |
|
|
|
|
|
|
|
if mise_joueur1.sommet().compare(mise_joueur1.sommet()) == 1: |
|
|
|
if mise_joueur1.sommet().compare(mise_joueur2.sommet()) == 1: |
|
|
|
vider_dans(mise_joueur1, mise_joueur2, paquet_joueur1) |
|
|
|
if paquet_joueur1.tete().compare(paquet_joueur2.tete()) == -1: |
|
|
|
elif mise_joueur1.sommet().compare(mise_joueur2.sommet()) == -1: |
|
|
|
vider_dans(mise_joueur1, mise_joueur2, paquet_joueur2) |
|
|
|
else: |
|
|
|
print("est vide ? (1)",paquet_joueur1.est_vide()) |
|
|
|
print("est vide ? (2)",paquet_joueur2.est_vide()) |
|
|
|
|
|
|
|
if paquet_joueur1.est_vide(): |
|
|
|
print("joueur1 est nul.") |
|
|
|
return |
|
|
|
else: |
|
|
|
print("joueur2 est nul.") |
|
|
|
return |
|
|
|
|
|
|
|
for i in range(2): |
|
|
|
mise_joueur1.empiler(paquet_joueur1.defiler()) |
|
|
|
mise_joueur2.empiler(paquet_joueur2.defiler()) |
|
|
|
print("joueur1",paquet_joueur1) |
|
|
|
print("joueur2",paquet_joueur2) |
|
|
|
|
|
|
|
compteur_tours += 1 |
|
|
|
if compteur_tours == 200: |
|
|
|
print("aaaaaaaaaa c'est long") |
|
|
|
return |
|
|
|
|
|
|
|
if paquet_joueur1.est_vide(): |
|
|
|
print("joueur1 est nul.") |
|
|
|
else: |
|
|
|
print("joueur2 est nul.") |
|
|
|
if __name__ == "__main__": |
|
|
|
main() |
|
|
|
#result = compare() |
|
|
|
#if result == -1: |
|
|
|
|
|
|
|
#if result == 1: |
|
|
|
|
|
|
|
|
|
|
|
#if result == 0: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#______________________________________ |
|
|
|
|
|
|
|
#if f1.est_vide: |
|
|
|
#print(f"victoire du joueur 1") |
|
|
|
|
|
|
|
#elif f2.est_vide: |
|
|
|
#print(f"victoire du joueur 2") |
|
|
|
|
|
|
|
main() |