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