diff --git a/projet.py b/projet.py new file mode 100644 index 0000000..c46a81f --- /dev/null +++ b/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 perso +perso1 = None +perso2 = None +tour = 1 + +# Fonctions pour le jeux +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()}") + + + 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 (j'ai utliser le cours de l'anée passe et internet pour l'interface) +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() \ No newline at end of file