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.

173 lines
5.5 KiB

"""
Commentaires :
==============
Il n'y a pas de fichier README.
Message des commits peu explicites !!
Méthodes peu documentées !
classe Jeux:
Je n'aime pas beaucoup le break dans la boucle for pour la construction du paquet
De plus, quel est l'intérêt d'avoir une variable jeu et un attribue paquet ??
classe Partie_TeSt:
-------------------
Évitez les mélanges majuscules minuscules. Voir définitions de camel case et
snake case.
Gain n'a aucune raison d'être un attribut. Ça devrait être une variable locale
à la méthode play_round (et ne devrait pas avoir de majuscule !)
Vous défilez sans vérifier si la file est vide.
Revoir le cas d'égalité....
Erreur d'indentation dans get_cards
Affichage peu explicite !!!!
tkinter:
--------
Bouton créer et jouer : il faudrait imposer de cliquer d'abord sur créer, puis
l'interdire si on a commencé à jouer.
On ne sait pas trop où on en est, ni à quoi correspondent les cartes affichées,
surtout en cas de "bataille".
Il aurait été bien de prévoir un bouton pour aller jusqu'à la fin de la partie.
Note finale : 17
"""
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 une égalité"
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("Bast is a retard 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())