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.
110 lines
3.9 KiB
110 lines
3.9 KiB
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: ")))
|