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
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())
|
|
|