You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.5 KiB
84 lines
2.5 KiB
from random import randint
|
|
from lib.File import File_lst as File
|
|
|
|
class Carte:
|
|
"""
|
|
Classe représentant une carte
|
|
|
|
Arguments:
|
|
valeur: int -- Valeur allant de 2 à 14 (Valet=11, Dame=12, Roi=13, As=14)
|
|
couleur: int -- Allant de 0 à 3 (0: Carreau, 1: Coeur, 2: Pique, 3: Trefle)
|
|
"""
|
|
|
|
CARREAU = 0
|
|
COEUR = 1
|
|
PIQUE = 2
|
|
TREFLE = 3
|
|
VALET = 11
|
|
DAME = 12
|
|
ROI = 13
|
|
AS = 14
|
|
|
|
def __init__(self, valeur, couleur):
|
|
self.valeur = valeur
|
|
self.couleur = couleur
|
|
|
|
def compare(self, other):
|
|
"""Fonction permettant la comparaison entre deux cartes."""
|
|
if self.valeur > other.valeur:
|
|
return 1
|
|
elif self.valeur < other.valeur:
|
|
return -1
|
|
else:
|
|
return 0
|
|
|
|
def __str__(self):
|
|
"""Fonction permettant la distinction/séparation entre la valeur et la couleur de la carte."""
|
|
return str(self.valeur) + "/" + str(self.couleur)
|
|
|
|
|
|
class Jeux:
|
|
"""
|
|
Construction de la classe Jeux.
|
|
"""
|
|
def __init__(self, nbcartes):
|
|
self.paquet = File()
|
|
if nbcartes == 32:
|
|
for couleur in [Carte.CARREAU, Carte.COEUR, Carte.PIQUE, Carte.TREFLE]:
|
|
valeurs = [7, 8, 9, 10, Carte.VALET, Carte.DAME, Carte.ROI, Carte.AS]
|
|
for i in range(8):
|
|
rand = randint(0, len(valeurs)-1)
|
|
carte = Carte(valeurs.pop(rand), couleur)
|
|
self.paquet.enfiler(carte)
|
|
else:
|
|
for couleur in [Carte.CARREAU, Carte.COEUR, Carte.PIQUE, Carte.TREFLE]:
|
|
valeurs = [2, 3, 4, 5, 6, 7, 8, 9, 10, Carte.VALET, Carte.DAME, Carte.ROI, Carte.AS]
|
|
for i in range(13):
|
|
rand = randint(0, len(valeurs)-1)
|
|
carte = Carte(valeurs.pop(rand), couleur)
|
|
self.paquet.enfiler(carte)
|
|
|
|
def distribue(self):
|
|
"""Fonction permettant le renvoie de deux files contenant la moitié des cartes du paquet."""
|
|
cp = self.paquet
|
|
f1 = File()
|
|
f2 = File()
|
|
while not cp.est_vide():
|
|
f1.enfiler(cp.defiler())
|
|
f2.enfiler(cp.defiler())
|
|
return f1, f2
|
|
|
|
|
|
class Joueur:
|
|
"""
|
|
Construction de la classe Joueur.
|
|
"""
|
|
def __init__(self, paquet, nom):
|
|
self.paquet = paquet
|
|
self.nom = nom
|
|
self.derniere_carte = None
|
|
|
|
def tire_carte(self):
|
|
"""Fonction qui défile la tête de la file et la renvoie."""
|
|
self.derniere_carte = self.paquet.defiler()
|
|
return self.derniere_carte
|
|
|