BRAHIMI Massi
2 months ago
1 changed files with 0 additions and 136 deletions
@ -1,136 +0,0 @@ |
|||||
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…
Reference in new issue