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.
140 lines
4.4 KiB
140 lines
4.4 KiB
from File import File_chaine as File
|
|
import random
|
|
from time import sleep
|
|
|
|
class Carte:
|
|
"carte"
|
|
def __init__(self, valeur, couleur):
|
|
self.valeur = valeur
|
|
self.couleur = couleur
|
|
def compare(self, other):
|
|
if self.valeur > other.valeur :
|
|
return 1
|
|
elif self.valeur < other.valeur :
|
|
return -1
|
|
elif self.valeur == other.valeur :
|
|
return 0
|
|
def __repr__(self):
|
|
return str(self.valeur)
|
|
def __str__(self):
|
|
if self.valeur == 11:
|
|
return "V" + self.couleur
|
|
elif self.valeur == 12:
|
|
return "D" + self.couleur
|
|
elif self.valeur == 13:
|
|
return "R" + self.couleur
|
|
return str(self.valeur) + self.couleur
|
|
|
|
|
|
class Jeux:
|
|
def __init__(self, nbmax):
|
|
i = 0
|
|
valeurs = [1, 7, 8, 9, 10, 11, 12, 13, 2, 3, 4, 5, 6]
|
|
couleurs = ["♥", "♠", "♦", "♣"]
|
|
jeu = []
|
|
for val in valeurs:
|
|
if i >= nbmax:
|
|
break
|
|
for coul in couleurs:
|
|
jeu.append(Carte(val, coul))
|
|
i += 1
|
|
|
|
|
|
random.shuffle(jeu)
|
|
self.paquet = jeu
|
|
def distribue(self):
|
|
jeu1, jeu2 = File(), File()
|
|
i = 0
|
|
for carte in self.paquet:
|
|
if i%2 == 0:
|
|
jeu1.enfiler(carte)
|
|
else:
|
|
jeu2.enfiler(carte)
|
|
i += 1
|
|
return jeu1, jeu2
|
|
|
|
class Partie_TeSt:
|
|
def __init__(self, nb_carte = 52):
|
|
jeux = Jeux(nb_carte)
|
|
self.j1, self.j2 = jeux.distribue()
|
|
self.Round = 1
|
|
self.Gain = File()
|
|
self.Winner = None
|
|
|
|
def play_round(self):
|
|
"Joue un round et change les valeur de facon pertinente, ne renvoie RIEN"
|
|
self.Round += 1
|
|
|
|
c1, c2 = self.j1.defiler(), self.j2.defiler()
|
|
self.Gain.enfiler(c1)
|
|
self.Gain.enfiler(c2)
|
|
|
|
resultat = c1.compare(c2)
|
|
|
|
while resultat == 0 and self.j1.taille() >= 2 and self.j2.taille() >= 2:
|
|
|
|
gaintable = []
|
|
|
|
self.Gain.enfiler(self.j1.defiler())
|
|
self.Gain.enfiler(self.j2.defiler())
|
|
|
|
c1, c2 = self.j1.defiler(), self.j2.defiler()
|
|
self.Gain.enfiler(c1)
|
|
self.Gain.enfiler(c2)
|
|
|
|
while not self.Gain.est_vide():
|
|
gaintable.append(self.Gain.defiler())
|
|
|
|
random.shuffle(gaintable)
|
|
|
|
for elem in gaintable:
|
|
self.Gain.enfiler(elem)
|
|
|
|
resultat = c1.compare(c2)
|
|
if resultat == 1:
|
|
while not self.Gain.est_vide():
|
|
self.j1.enfiler(self.Gain.defiler())
|
|
if self.j2.est_vide():
|
|
self.Winner = "le Joueur"
|
|
elif resultat == -1:
|
|
while not self.Gain.est_vide():
|
|
self.j2.enfiler(self.Gain.defiler())
|
|
if self.j1.est_vide():
|
|
self.Winner = "l'Ordinateur"
|
|
else:
|
|
if self.j1.taille() < 2 and not self.j2.taille() < 2:
|
|
self.Winner = "l'Ordinateur"
|
|
elif not self.j1.taille() < 2 and self.j2.taille() < 2:
|
|
self.Winner = "le Joueur"
|
|
else:
|
|
self.Winner = "Egalité"
|
|
|
|
def get_winner(self):
|
|
"Renvoie le gagnant de la partie, 'Partie en cours...' si aucun gagnant n'est choisi et 'Egalité' si il y a- bah une égalité quoi"
|
|
if self.Winner is None:
|
|
return "Partie en cours..."
|
|
return self.Winner
|
|
|
|
def get_cards(self):
|
|
"Renvoie la valeur des cartes du jeu 1 et du jeu 2, renvoie none si ils sont vide"
|
|
j1_tete, j2_tete = None, None
|
|
if not self.j1.est_vide():
|
|
j1_tete = self.j1.tete()
|
|
if not self.j2.est_vide():
|
|
j2_tete = self.j2.tete()
|
|
return j1_tete, j2_tete
|
|
|
|
def get_size(self):
|
|
"Renvoie la taille du jeu 1 et du jeu 2"
|
|
return self.j1.taille(), self.j2.taille()
|
|
|
|
if __name__ == "__main__":
|
|
print("Bastien is retarded for not commenting his damn code :skull:")
|
|
partie = Partie_TeSt(16)
|
|
while partie.get_winner() == "Partie en cours...":
|
|
partie.play_round()
|
|
print(partie.get_winner())
|
|
print(partie.get_cards())
|
|
print(partie.get_size())
|
|
sleep(1)
|
|
print(partie.get_winner())
|
|
|