diff --git a/main.py b/main.py index 6dd014b..fb780d9 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ from bataille import * from lib.Pile import Pile_lst def bataille(): - tour = 1 + '''Fonction permettant de lancer le jeu''' jeux = Jeux() carte_j1, carte_j2 = jeux.depiler() nom = str(input("Entrez votre nom")) @@ -10,9 +10,29 @@ def bataille(): j2 = Joueur(carte_j2, "Bot") p_j1 = Pile_lst() p_j2 = Pile_lst() - while not j1.paquet_j.est_vide() and not j2.paquet_j.est_vide(): - valeur_carte_j1 = j1.tire_carte() - valeur_carte_j2 = j2.tire_carte() - p_j1.empile(valeur_carte_j1) - p_j2.empile(valeur_carte_j2) - p_j1.sommet().compare(p_j2.sommet) + while not j1.paquet_j.est_vide() and not j2.paquet_j.est_vide():#tant que les joueurs ont des cartes on continue. + p_j1.empile(j1.tire_carte()) + p_j2.empile(j2.tire_carte()) + gagne = p_j1.sommet().compare(p_j2.sommet()) + #comparaison du gagnant du duels de cartes: + if gagne == 1: + #si la valeur de self est supérieure à la valeur de other. + j1.paquet_j.append(p_j2.depiler()) + + elif gagne == 2: + #si la valeur de other est supérieure à la valeur de self. + j2.paquet_j.append(p_j1.depiler()) + + else: + #si les deux valeurs sont les mêmes, bataille ! + for loop in range(2): + p_j1.empile(j1.tire_carte()) + p_j2.empile(j2.tire_carte()) + + if j1.paquet_j.est_vide() and j2.paquet_j.est_vide(): + print("parti nul") + elif j1.paquet_j.est_vide(): + print("Le perdant est le joueur 1") + else: + print("Le perdant est le joueur 2") + diff --git a/util/.window.py.swp b/util/.window.py.swp new file mode 100644 index 0000000..96dcd04 Binary files /dev/null and b/util/.window.py.swp differ diff --git a/util/File.py b/util/File.py deleted file mode 100644 index 64919e6..0000000 --- a/util/File.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -class File_lst: - """Implémentation d'une file par une liste.""" - def __init__(self): - """Crée une file vide.""" - self.__file = [] - - def est_vide(self): - """Indique si la file est vide.""" - return self.__file == [] - - def enfiler(self, valeur): - """Enfile l'élément valeur.""" - self.__file.append(valeur) - - def defiler(self): - """Défile la tête de la file et la renvoie.""" - return self.__file.pop(0) - - def taille(self): - """Renvoie la taille de la file.""" - return len(self.__file) - - def tete(self): - """Renvoie la tête de la file (sans la défiler).""" - return self.__file[0] - - def __str__(self): - s = "tete->" - for val in self.__file: - s += str(val) + "->" - return s + "queue" - - -class Maillon: - """Un maillon d'une liste doublement chaînée.""" - def __init__(self, precedent, valeur, suivant): - self.valeur = valeur - self.precedent = precedent - self.suivant = suivant - - def __str__(self): - return str(self.valeur) - - -class File_chaine: - """Implémentation d'une file par une liste doublement chaînée.""" - def __init__(self): - """Crée une file vide.""" - self.__debut = self.__fin = None - self.__taille = 0 - - def est_vide(self): - """Indique si la file est vide.""" - return self.__taille == 0 - - def enfiler(self, valeur): - """Enfile l'élément valeur.""" - maillon = Maillon(self.__fin, valeur, None) - if self.est_vide(): - self.__debut = self.__fin = maillon - else: - self.__fin.suivant = maillon - self.__fin = maillon - self.__taille += 1 - - def defiler(self): - """Défile la tête de la file et la renvoie.""" - if self.est_vide(): - raise IndexError("Impossible de défiler une file vide.") - valeur = self.__debut.valeur - self.__taille -= 1 - if self.est_vide(): - self.__debut = self.__fin = None - else: - self.__debut = self.__debut.suivant - self.__debut.precedent = None - return valeur - - def taille(self): - """Renvoie la taille de la file.""" - return self.__taille - - def tete(self): - """Renvoie la tête de la file (sans la défiler).""" - if self.est_vide(): - raise IndexError("Une file vide n'a pas de tête.") - return self.__debut.valeur - - def __str__(self): - s = "tete->" - maillon = self.__debut - while maillon is not None: - s += str(maillon) + "->" - maillon = maillon.suivant - return s + "queue" - - -if __name__ == "__main__": - f = File_lst() - print(f.est_vide()) - f.enfiler('A') - f.enfiler('B') - f.enfiler('C') - print(f.est_vide()) - print(f.tete()) - print(f) - print(f.taille()) - print(f.defiler()) - print(f.defiler()) - print(f.defiler()) - print(f.est_vide()) diff --git a/util/bataille.py b/util/bataille.py index 5a86dfe..34a81e0 100644 --- a/util/bataille.py +++ b/util/bataille.py @@ -1,7 +1,14 @@ from random import * -from File import File_lst as File +from lib.File import File_lst as File class Carte: + """ + Classe représentant une carte + + Arguments: + valeur: int -- Valeur allant de 1 à 13 + couleur: int -- Allant de 0 à 3 (Carreau, Coeur, Pique, Trefle) + """ def __init__(self, valeur, couleur): self.valeur = valeur self.couleur = couleur @@ -18,23 +25,20 @@ class Carte: class Jeux: def __init__(self, nbcartes): self.paquet = File() + self.couleur = File() + #Cartes 1 à 10 et 11 pour Valet, 12 pour Dame et 13 pour Roi if nbcartes == 32: - pq = File() - crt = [1, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi'] - couleur = ['Coeur', 'Pique', 'Carreaux', 'Trefle'] - for i in range(len(crt)): - pq.enfiler(crt) - for i in range(3): - x = Carte(pq.defiler(),couleur[i]) - print(pq) - #x.empiler(pq.defiler()) + for i in range(4): + crt = [1, 7, 8, 9, 10, 11, 12, 13] + couleur = [0, 1, 2, 3] + for val in range(len(crt)): + rd = randint(0, len(crt)-1) + self.paquet.enfiler(crt[rd]) + self.couleur.enfiler(couleur[i]) + crt.pop(rd) else: - pq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi'] + pq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] - for i in range(len(pq)): - rd = randint(0, len(pq)-1) - self.paquet.enfiler(pq[rd]) - pq.pop(rd) def distribue(self): cp = self.paquet diff --git a/util/window.py b/util/window.py index bc68f6d..116c247 100644 --- a/util/window.py +++ b/util/window.py @@ -1,4 +1,5 @@ from tkinter import Tk, Label, Button +from PIL import Image, ImageTk class Window(Tk): @@ -32,8 +33,13 @@ class Window(Tk): self.c1.grid(row=2, column=0) self.c2.grid(row=2, column=2) +def card_to_image(card): + r = range(56-card.valeur*4, 52-card.valeur*4 , -1) + for i in r: + print(i) if __name__ == "__main__": - app = Window(None, None) - app.show_cards() - app.mainloop() + card_to_image(Carte(2, 4)) + #app = Window(None, None) + #app.show_cards() + #app.mainloop()