Jeu de bataille version 1.1 beta

Prérequis :
- installation de Python 3.X
- dézipage de l’archive disponible en téléchargement dans le bas de l’article
- cliquez droit sur le script « jeu_graphique.py », <Edit with IDLE> puis enfoncez la touche <F5>
carte_a_jouer.py
import random
class Carte (object):
def __init__(self):
"""définition des attributs de classe"""
self.paquet_52=[] # containeur liste vide
self.valeurs=["2","3","4","5","6","7","8","9","10","Valet","Dame","Roi","As"] # valeurs des cartes
self.couleurs=["Coeur","Carreau","Pique","Trefle"] # couleurs des cartes
def paquet (self):
"""méthode créant le paquet de cartes en mode texte dans la liste self.paquet_52"""
for val in self.valeurs :
for coul in self.couleurs :
self.paquet_52.append (str(val) + " de " + str(coul)) # emploi de la méthode de la classe list .append ()
def melanger (self):
""" méthode mélangeant le paquet de 52 cartes """
random.shuffle(self.paquet_52)
def diviser (self):
"""méthode permettant de séparer le paquet en deux paquets distincts de 26 cartes mélangées"""
self.paquet_j1 = [] # containeur liste vide
self.paquet_j2 = [] # containeur liste vide
self.paquet_j1 = self.paquet_52[0:len(self.paquet_52)//2]
# self.paquet_52[0:len(self.paquet_52)//2] ou self.paquet_52[0:26] ou self.paquet_52[:26]
self.paquet_j2 = self.paquet_52[len(self.paquet_52)//2:]
# idem commentaire du dessus
jeu_graphique.py
from carte_a_jouer import Carte
from tkinter import *
import tkinter.messagebox
class graph_jeu (object):
def __init__(self):
# import jeu cartes à jouer en mode texte
self.a = Carte ()
self.a.paquet ()
self.a.melanger ()
self.a.diviser ()
# jeu graphique
self.fenetre = Tk()
self.fenetre.title("Bataille Cardinal Mercier")
self.fenetre.config(bg ='red', padx = 5, pady = 5)
self.dos_carte_joueur = PhotoImage(file = "./cartes/1_dos_carte.gif")
self.dos_carte_ordinateur = PhotoImage(file = "./cartes/1_dos_carte.gif")
self.depart_carte_joueur = PhotoImage(file = "./cartes/1_depart_carte.gif")
self.depart_carte_ordinateur = PhotoImage(file = "./cartes/1_depart_carte.gif")
# jeu jouer
self.a.paquet_j1
self.a.paquet_j2
self.paquet_milieu = []
self.paquet_egalite = []
self.paquet_win_j1 = []
self.paquet_win_j2 = []
self.tour = 1
def jeu_depart (self):
# fenetre dessus
self.fenetre_dessus = Frame(self.fenetre,borderwidth=2,relief=FLAT, bg="white")
self.fenetre_dessus.pack(side=TOP,padx=5,pady=5)
self.paquet_joueur = Label (self.fenetre_dessus,image=self.dos_carte_joueur)
self.paquet_joueur.pack (side=LEFT, padx = 5, pady = 5)
self.carte_joueur = Label (self.fenetre_dessus,image=self.depart_carte_joueur)
self.carte_joueur.pack (side=LEFT, padx = 10, pady = 5)
self.carte_ordinateur = Label (self.fenetre_dessus,image=self.depart_carte_ordinateur)
self.carte_ordinateur.pack (side=LEFT, padx = 10, pady = 5)
self.paquet_ordinateur = Label (self.fenetre_dessus,image=self.dos_carte_ordinateur)
self.paquet_ordinateur.pack (side=LEFT, padx = 5, pady = 5)
# fenetre milieu
self.fenetre_milieu = Frame(self.fenetre,borderwidth=2,relief=GROOVE,bg="black")
self.fenetre_milieu.pack(side=TOP,padx=30,pady=5)
self.fenetre_milieu_gauche = Frame(self.fenetre_milieu,borderwidth=2,relief=GROOVE,bg="white")
self.fenetre_milieu_gauche.pack(side=LEFT,padx=5,pady=5)
self.texte1b = Label(self.fenetre_milieu_gauche, text=str(len (self.a.paquet_j1))+ " cartes à jouer" + "\n" + str(len(self.paquet_win_j1))+ " cartes gagnées",fg = 'red',bg = 'white', font=('times', 15, 'bold'))
self.texte1b.pack (side=LEFT, padx=85, pady=10)
self.fenetre_milieu_milieu = Frame(self.fenetre_milieu,borderwidth=2,relief=GROOVE,bg="white")
self.fenetre_milieu_milieu.pack(side=LEFT,padx=5,pady=5)
self.texte1a = Label(self.fenetre_milieu_milieu, text="POINTS : 000\nTOTAL : 000",fg = 'red',bg = 'white', font=('times', 15, 'bold'))
self.texte1a.pack (side=LEFT, padx=40, pady=10)
self.texte2a = Label(self.fenetre_milieu_milieu, text="POINTS : 000\nTOTAL : 000",fg = 'red',bg = 'white', font=('times', 15, 'bold'))
self.texte2a.pack (side=LEFT, padx=60, pady=10)
self.fenetre_milieu_droite = Frame(self.fenetre_milieu,borderwidth=2,relief=GROOVE,bg="white")
self.fenetre_milieu_droite.pack(side=LEFT,padx=5,pady=5)
self.texte2b = Label(self.fenetre_milieu_droite, text=str(len (self.a.paquet_j2))+ " cartes à jouer" + "\n" + str(len(self.paquet_win_j2))+ " cartes gagnées",fg = 'red',bg = 'white', font=('times', 15, 'bold'))
self.texte2b.pack (side=LEFT, padx=60, pady=10)
# fenetre dessous
self.fenetre_dessous = Frame(self.fenetre,borderwidth=2,relief=GROOVE,bg="white")
self.fenetre_dessous.pack(side=BOTTOM,padx=5,pady=5)
self.texte1 = Label(self.fenetre_dessous, text="JOUEUR ",fg = 'black',bg = 'white', font=('times', 20, 'bold'))
self.texte1.pack (side=LEFT, padx=100, pady=10)
self.bouton_jouer = Button(self.fenetre_dessous,text='jouer',command=self.jeu_jouer)
self.bouton_jouer.pack(side=LEFT,padx=20,pady=10)
self.bouton_rejouer = Button(self.fenetre_dessous,text='rejouer',command=self.rejouer)
self.bouton_rejouer.pack(side=LEFT,padx=20,pady=10)
self.bouton_destroy = Button(self.fenetre_dessous,text='quitter',command=self.fenetre.destroy)
self.bouton_destroy.pack(side=LEFT,padx=20,pady=10)
self.texte2 = Label(self.fenetre_dessous, text=" ORDINATEUR",fg = 'black',bg = 'white', font=('times', 20, 'bold'))
self.texte2.pack (side=RIGHT, padx=60, pady=10)
def jeu_jouer (self):
while len(self.a.paquet_j1)+len(self.a.paquet_j2) != 0 :
self.paquet_milieu.append(self.a.paquet_j1.pop(0))
self.paquet_milieu.append(self.a.paquet_j2.pop(0))
print ("°°°°°°°° ","Tour ", self.tour," °°°°°°°°")
print ("°°°°°°°°°°°°°°°°°°°°°°°°°°°")
print ("j1 :",self.paquet_milieu[0],"et j2 :",self.paquet_milieu[1])
self.points2 ()
print ("Carte joueur : ",self.score_carte_1, " points")
print ("Carte ordinateur : ",self.score_carte_2, " points")
print ("Jeu Carte joueur : ",len (self.a.paquet_j1), " cartes")
print ("Jeu Carte ordinateur : ",len (self.a.paquet_j2), " cartes")
if self.a.valeurs.index(self.paquet_milieu[0].split(" ")[0])>self.a.valeurs.index(self.paquet_milieu[1].split(" ")[0]):
print("---> Le joueur 1 gagne")
self.carte_joueur_jeu = PhotoImage(file ="./Cartes/" + self.paquet_milieu[0].split (" ")[0].lower () + "_" + self.paquet_milieu[0].split (" ")[2].lower () + ".gif")
self.carte_joueur.config (image=self.carte_joueur_jeu)
self.carte_ordinateur_jeu = PhotoImage(file ="./Cartes/" + self.paquet_milieu[1].split (" ")[0].lower () + "_" + self.paquet_milieu[1].split (" ")[2].lower () + ".gif")
self.carte_ordinateur.config (image=self.carte_ordinateur_jeu)
self.paquet_win_j1.extend(self.paquet_milieu)
self.paquet_milieu = []
self.paquet_win_j1.extend(self.paquet_egalite)
self.paquet_egalite = []
self.points ()
print ("Le joueur 1 a ",self.score_joueur_1, "points")
print ("Le joueur 2 a ",self.score_joueur_2, "points")
self.texte1a.config (text="POINTS : " + str(self.score_carte_1) + "\nTOTAL : " + str(self.score_joueur_1))
self.texte2a.config (text="POINTS : " + str(self.score_carte_2) + "\nTOTAL : " + str(self.score_joueur_2))
self.texte1b.config (text=str(len (self.a.paquet_j1))+ " cartes à jouer" + "\n" + str(len(self.paquet_win_j1))+ " cartes gagnées")
self.texte2b.config (text=str(len (self.a.paquet_j2))+ " cartes à jouer" + "\n" + str(len(self.paquet_win_j2))+ " cartes gagnées")
if len(self.a.paquet_j1)+len(self.a.paquet_j2) == 0:
tkinter.messagebox.showinfo("La bataille est terminée","Rejouez ou quittez")
break
elif self.a.valeurs.index(self.paquet_milieu[0].split(" ")[0])<self.a.valeurs.index(self.paquet_milieu[1].split(" ")[0]): print("---> Le joueur 2 gagne")
self.carte_joueur_jeu = PhotoImage(file ="./Cartes/" + self.paquet_milieu[0].split (" ")[0].lower () + "_" + self.paquet_milieu[0].split (" ")[2].lower () + ".gif")
self.carte_joueur.config (image=self.carte_joueur_jeu)
self.carte_ordinateur_jeu = PhotoImage(file ="./Cartes/" + self.paquet_milieu[1].split (" ")[0].lower () + "_" + self.paquet_milieu[1].split (" ")[2].lower () + ".gif")
self.carte_ordinateur.config (image=self.carte_ordinateur_jeu)
self.paquet_win_j2.extend(self.paquet_milieu)
self.paquet_milieu = []
self.paquet_win_j2.extend(self.paquet_egalite)
self.paquet_egalite = []
self.points ()
print ("Le joueur 1 a ",self.score_joueur_1, "points")
print ("Le joueur 2 a ",self.score_joueur_2, "points")
self.texte1a.config (text="POINTS : " + str(self.score_carte_1) + "\nTOTAL : " + str(self.score_joueur_1))
self.texte2a.config (text="POINTS : " + str(self.score_carte_2) + "\nTOTAL : " + str(self.score_joueur_2))
self.texte1b.config (text=str(len (self.a.paquet_j1))+ " cartes à jouer" + "\n" + str(len(self.paquet_win_j1))+ " cartes gagnées")
self.texte2b.config (text=str(len (self.a.paquet_j2))+ " cartes à jouer" + "\n" + str(len(self.paquet_win_j2))+ " cartes gagnées")
if len(self.a.paquet_j1)+len(self.a.paquet_j2) == 0:
tkinter.messagebox.showinfo("La bataille est terminée","Rejouez ou quittez")
break
else:
print("---> Egalité")
self.carte_joueur_jeu = PhotoImage(file ="./Cartes/" + self.paquet_milieu[0].split (" ")[0].lower () + "_" + self.paquet_milieu[0].split (" ")[2].lower () + ".gif")
self.carte_joueur.config (image=self.carte_joueur_jeu)
self.carte_ordinateur_jeu = PhotoImage(file ="./Cartes/" + self.paquet_milieu[1].split (" ")[0].lower () + "_" + self.paquet_milieu[1].split (" ")[2].lower () + ".gif")
self.carte_ordinateur.config (image=self.carte_ordinateur_jeu)
self.paquet_egalite.extend(self.paquet_milieu)
self.paquet_milieu = []
if len(self.a.paquet_j1)+len(self.a.paquet_j2) == 0:
tkinter.messagebox.showinfo("La bataille est terminée","Rejouez ou quittez")
break
self.tour += 1
def points (self):
self.score_joueur_1 = 0
self.score_joueur_2 = 0
for carte in self.paquet_win_j1 :
carte.split(" ")[0]
if carte.split(" ")[0]in self.a.valeurs:
carte.split(" ")[0]= self.a.valeurs.index(carte.split(" ")[0])
self.score_joueur_1 += self.a.valeurs.index(carte.split(" ")[0])+2
for carte in self.paquet_win_j2 :
carte.split(" ")[0]
if carte.split(" ")[0]in self.a.valeurs:
carte.split(" ")[0]= self.a.valeurs.index(carte.split(" ")[0])
self.score_joueur_2 += self.a.valeurs.index(carte.split(" ")[0])+2
def points2 (self):
self.score_carte_1 = 0
self.score_carte_2 = 0
for valeur in self.a.valeurs :
if valeur == self.paquet_milieu[0].split (" ")[0]:
self.score_carte_1 = self.a.valeurs.index(valeur)+2
if valeur == self.paquet_milieu[1].split (" ")[0]:
self.score_carte_2 = self.a.valeurs.index(valeur)+2
def rejouer (self):
self.fenetre.destroy( )
g_j = graph_jeu()
g_j.jeu_depart ()
if __name__ =='__main__':
g_j = graph_jeu()
g_j.jeu_depart ()
Archive comprenant les cartes à jouer et les scripts
Mot de passe : lcdp-001