Browse Source

Ajout de la derniere version de mini_projet.py

master
BRAHIMI Massi 2 months ago
parent
commit
394113bd60
  1. 136
      mini_projet.py

136
mini_projet.py

@ -0,0 +1,136 @@
import tkinter as tk
from random import randint
class Personnage:
def __init__(self, nom, cat):
self.nom = nom
self.pdv = 20
self.exp = 1
self.cat = cat
self.inventaire = []
if self.cat == "guerrier":
self.inventaire = ["épée", "potion"]
self.coefatk = 10
self.coefdef = 8
elif self.cat == "magicien":
self.inventaire = ["bâton", "potion"]
self.coefatk = 10
self.coefdef = 7
elif self.cat == "voleur":
self.inventaire = ["dague", "potion"]
self.coefatk = 3
self.coefdef = 9
elif self.cat == "elfe":
self.inventaire = ["arc", "potion"]
self.coefatk = 8
self.coefdef = 10
def jet_attaque(self):
de_atk = randint(1, 20)
return de_atk + self.exp * self.coefatk
def jet_defense(self):
de_def = randint(1, 20)
return de_def + self.exp * self.coefdef
def change_pdv(self, nb_pdv):
self.pdv += nb_pdv
return self.pdv
def change_exp(self, nb_exp):
self.exp += nb_exp
return self.exp
def affiche_caracteristiques(self):
return f"Nom: {self.nom}, Catégorie: {self.cat}, Points de vie: {self.pdv}, Expérience: {self.exp}"
def affiche_inventaire(self):
return f"Inventaire: {', '.join(self.inventaire)}"
# Création de la fenêtre principale
root = tk.Tk()
root.title("Combat RPG")
# Variables globales pour les personnages
perso1 = None
perso2 = None
tour = 1
# Fonctions pour le jeu
def creer_personnages():
global perso1, perso2
nom1 = entry_nom1.get()
cat1 = entry_cat1.get()
nom2 = entry_nom2.get()
cat2 = entry_cat2.get()
perso1 = Personnage(nom1, cat1)
perso2 = Personnage(nom2, cat2)
afficher_message(f"Personnages créés : {perso1.nom} le {perso1.cat} et {perso2.nom} le {perso2.cat}")
def afficher_message(message):
text_area.insert(tk.END, message + "\n")
text_area.see(tk.END)
def combat():
global tour, perso1, perso2
if perso1.pdv > 0 and perso2.pdv > 0:
afficher_message(f"\n--- Tour {tour} ---")
afficher_message(f"{perso1.nom} attaque {perso2.nom}")
attaque = perso1.jet_attaque()
defense = perso2.jet_defense()
if attaque > defense:
degats = randint(1, 8)
perso2.change_pdv(-degats)
afficher_message(f"{perso1.nom} inflige {degats} points de dégâts à {perso2.nom}")
else:
degats = randint(1, 4)
perso1.change_pdv(-degats)
afficher_message(f"{perso2.nom} esquive et inflige {degats} points de dégâts à {perso1.nom}")
afficher_message(f"Caractéristiques de {perso1.nom} : {perso1.affiche_caracteristiques()}")
afficher_message(f"Caractéristiques de {perso2.nom} : {perso2.affiche_caracteristiques()}")
# Changement de rôle
perso1, perso2 = perso2, perso1
tour += 1
else:
if perso1.pdv > 0:
perso1.change_exp(1)
afficher_message(f"\n{perso1.nom} a gagné le combat et gagne 1 point d'expérience!")
else:
perso2.change_exp(1)
afficher_message(f"\n{perso2.nom} a gagné le combat et gagne 1 point d'expérience!")
bouton_combat.config(state=tk.DISABLED)
# Interface utilisateur
frame = tk.Frame(root)
frame.pack(pady=10)
tk.Label(frame, text="Nom du premier personnage:").grid(row=0, column=0)
entry_nom1 = tk.Entry(frame)
entry_nom1.grid(row=0, column=1)
tk.Label(frame, text="Catégorie du premier personnage:").grid(row=1, column=0)
entry_cat1 = tk.Entry(frame)
entry_cat1.grid(row=1, column=1)
tk.Label(frame, text="Nom du deuxième personnage:").grid(row=2, column=0)
entry_nom2 = tk.Entry(frame)
entry_nom2.grid(row=2, column=1)
tk.Label(frame, text="Catégorie du deuxième personnage:").grid(row=3, column=0)
entry_cat2 = tk.Entry(frame)
entry_cat2.grid(row=3, column=1)
bouton_creer = tk.Button(frame, text="Créer les personnages", command=creer_personnages)
bouton_creer.grid(row=4, columnspan=2, pady=10)
bouton_combat = tk.Button(frame, text="Lancer le combat", command=combat)
bouton_combat.grid(row=5, columnspan=2, pady=10)
text_area = tk.Text(root, height=15, width=50)
text_area.pack(pady=10)
# Lancer l'interface graphique
root.mainloop()
Loading…
Cancel
Save