from File import File_chaine import tkinter as tk from PIL import Image, ImageTk import sqlite3 import random class Carte: def __init__(self, couleur, valeur): self.valeur = valeur self.couleur = couleur def compare(self, other): if self.valeur > other.valeur: return 1 elif self.valeur < other.valeur: return -1 return 0 def __str__(self) -> str: if self.valeur > 10: return str(['Valet', 'Dame', 'Roi', 'As'][self.valeur-10]) + ' de ' + self.couleur return str(self.valeur) + ' de ' + self.couleur class Jeux: def __init__(self, nb) -> None: self.paquet = [] self.nombre_carte = nb if self.nombre_carte != 32 and self.nombre_carte != 52: raise ValueError("Saissisez 32 ou 52 cartes") # Création du paquet de carte en fonction du nombre de carte conn = sqlite3.connect('bdd.db') c = conn.cursor() if self.nombre_carte == 32: c.execute('SELECT * FROM Cartes WHERE belote=True') else: c.execute('SELECT * FROM Carte') data = c.fetchall() for i, carte in enumerate(data): self.paquet.append(Carte(data[i][0], data[i][1])) self.jeu() def distribute(self) -> File_chaine: joueur = [File_chaine(), File_chaine()] while len(self.paquet) > 0: for i in range(2): random_number = random.randint(0, len(self.paquet)-1) joueur[i].enfiler(self.paquet.pop(random_number)) return joueur def jeu(self): self.j1, self.j2 = self.distribute() while not (self.j1.est_vide() or self.j2.est_vide()): self.bataille() if self.j1.est_vide(): # self.j1 a perdu donc self.j2 gagne toutes les cartes print("Désolée l'ordinateur à gagné") else: print("Bravo vous avez gagné") def bataille(self, buffer_draw=[File_chaine(), File_chaine()]): print('Vous: {} Il vous reste {} cartes'.format(self.j1.tete(), self.j1.taille()), "L'ordinateur: {} Il reste {} cartes à l'ordinateur".format(self.j2.tete(), self.j2.taille()), sep='\n') input() j1_active_carte, j2_active_carte = self.j1.tete(), self.j2.tete() if j1_active_carte.compare(j2_active_carte) == 0 : try: print() print("Egalitée !!") print() # envers buffer_draw[0].enfiler(self.j1.defiler()) # carte du dessus buffer_draw[0].enfiler(self.j1.defiler()) # carte a l'envers buffer_draw[1].enfiler(self.j2.defiler()) # carte du dessus buffer_draw[1].enfiler(self.j2.defiler()) # carte a l'envers # print('next_buff' ,buffer_draw[0], buffer_draw[1]) self.bataille(buffer_draw) except IndexError: pass elif j1_active_carte.compare(j2_active_carte) == 1 : print() print("Vous gagnez la carte") print() while not buffer_draw[0].est_vide(): self.j1.enfiler(buffer_draw[0].defiler()) self.j1.enfiler(buffer_draw[1].defiler()) self.j1.enfiler(self.j2.defiler()) self.j1.enfiler(self.j1.defiler()) elif j1_active_carte.compare(j2_active_carte) == -1 :#self.j1.tete().compare(self.j2.tete()) == -1 : print() print("Lordinateur gagne la carte") print() while not buffer_draw[0].est_vide(): self.j2.enfiler(buffer_draw[0].defiler()) self.j2.enfiler(buffer_draw[1].defiler()) self.j2.enfiler(self.j1.defiler()) self.j2.enfiler(self.j2.defiler()) jeu = Jeux(int(input("Choississez 32 ou 52 cartes: ")))