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: " ) ) )