Bonjour, j'ai besoin d'aide avec un programme python s'il vous plait :
Le combat des héros ( 2ème partie) :
Reprendre le fichier combat_des_heros.py (1ère partie) :
Remplacer la liste de listes caracteristique par la liste suivante :Code:from random import randint caracteristique=[["Ahri",5,3,7],["Corki",9,3,3],["Azir",4,4,4],["Braum",5,2,7],["Ashe",4,2,13]] def creer_avatar (): liste_avatar=[] nom = input ( "entrer le nom de votre avatar") liste_avatar.append(nom) point_attaque=randint(0,10) liste_avatar.append(point_attaque) point_armure=randint(0,4) liste_avatar.append(point_armure) point_de_vie=randint(0,15) liste_avatar.append(point_de_vie) return liste_avatar def lancer_un_combat_aleatoire(): """ procédure qui tire aléatoirement un hero (attaquant) qui attaque un autre héro (défenseur) lui aussi tir au hasard si les points d'attaque de l'adversaire sont supérieurs au point d'armure du défenseur alors le défenseur perd autant de point de vie que la différence point d'attaque/point de défense """ attaquant=randint(0,len(caracteristique)-1) defenseur =randint(0,len(caracteristique)-1) while(attaquant==defenseur): defenseur =randint(0,len(caracteristique)-1) print(caracteristique[attaquant][0] +" attaque " + caracteristique[defenseur][0]) if caracteristique[attaquant][1]>caracteristique[defenseur][2]: degat=caracteristique[attaquant][1]-caracteristique[defenseur][2] caracteristique[defenseur][3]=caracteristique[defenseur][3]-degat print(caracteristique[attaquant][0] +" a vaincu " + caracteristique[defenseur][0]+ " à qui* qui il ne reste plus que "+str(caracteristique[defenseur][3])+" point de vie") if caracteristique[defenseur][3] <= 0: print(caracteristique[defenseur][0]+" vient de mourrir") del caracteristique[defenseur] else : print(caracteristique[attaquant][0] +" n'a pas vaincu " + caracteristique[defenseur][0]) def guerre (): creer_avatar () while len(caracteristique)!=1: lancer_un_combat_aleatoire() print(caracteristique[0][0]+" a remporté la bataille !!!") nom=0 point_attaque=1 point_armure=2 point_vie=3 def lancer_un_combat_aleatoire_bis(): """ procédure qui tire aléatoirement un hero (attaquant) qui attaque un autre héro (défenseur) lui aussi tir au hasard si les points d'attaque de l'adversaire sont supérieurs au point d'armure du défenseur alors le défenseur perd autant de point de vie que la différence point d'attaque/point de défense """ attaquant=randint(0,len(caracteristique)-1) defenseur =randint(0,len(caracteristique)-1) while(attaquant==defenseur): defenseur =randint(0,len(caracteristique)-1) print(caracteristique[attaquant][nom] +" attaque " + caracteristique[defenseur][nom]) if caracteristique[attaquant][point_attaque]>caracteristique[defenseur][point_armure]: caracteristique[defenseur][point_vie]=caracteristique[defenseur][point_vie]-(caracteristique[attaquant][point_attaque]-caracteristique[defenseur][point_armure]) print(caracteristique[attaquant][0] +" a vaincu " + caracteristique[defenseur][0]+ " à qui* qui il ne reste plus que "+str(caracteristique[defenseur][point_vie])+" point de vie") if caracteristique[defenseur][point_vie] <= 0: print(caracteristique[defenseur][0]+" vient de mourir") del caracteristique[defenseur] else : print(caracteristique[attaquant][0] +" n'a pas vaincu " + caracteristique[defenseur][0]) def lancer_les_combats_bis(): while len(caracteristique)!=1: lancer_un_combat_aleatoire_bis(caracteristique) print(len(caracteristique)) print(caracteristique[0][nom]+" a remporté la bataille !!!")
caracteristique=[["batman",5,3,7,"batman","batma n.png"],["Cyborg",9,3,3,"Cyborg","Cybor g.png"],["green_lantern",4,4,4,"green_l antern","green_lantern.png"],["iron_man",5,2,7,"iron_man","i ron_man.png"],["oeil_de_faucon",4,2,13,"oeil_ de_faucon","oeil_de_faucon.png "],["superman",4,2,13,"superman"," superman.png"]]`
La liste caracteristique contient des listes ( appelées aussi sous_listes) précisant pour chaque héros :
nom,points d'attaque,points de défense, points de vie, avatar,son fichier image
De nouveaux combattants : La fonction creer_avatars ()
On décide maintenant de faire participer plusieurs joueurs ( maximum 6 joueurs ) par le biais de leurs avatars. Ceux-ci viennent remplacer les héros dans la liste caracteristique de manière à ce que le nombre de héros soit toujours égal à 6.
Créer la fonction creer_avatars (), prenant en paramètre le nombre de joueurs nbre_joueurs, qui permet de créer autant de sous-listes list_avatar que de joueurs désirant participer au jeu et de les ajouter dans la liste caracteristique. Cette fonctioncreer_avatars () retourne la liste caracteristique.
Tester votre fonction creer_avatars ()
Rappel : Le joueur inscrit seulement son nom. ses points d'attaque , ses points d'armure
, ses points de vie sont déterminés aléatoirement et son avatar est attibué dans l'ordre de la liste.
Affichage des caractéristiques des héros:
Afin de suivre l'évolution du jeu de manière plus convivial, on se propose de créer une interface graphique affichant les caractéristiques des héros du début à la fin de la partie.
Créer et afficher un cadre cadre_heros dans une fenêtre combat_des_heros.
Dans ce cadre cadre_heros, créer dans ce cadre des labels permettant d'afficher les caractéristiques de chaque héros comme ci-dessous.
Conseil : Pour créer les labels ,il est préférable d'utiliser une boucle ou chaque ligne i correspond à un héros. Dans un premier temps, chaque label contient le texte 'truc'
cadre_heros.png
Remplacer le texte 'truc' dans chaque label par le texte correspondant à la caractéristique du héros désigné.
cadre_heros2.png
Affichage des photos
Pour rendre plus vivante l'interface graphique, on décide d'ajouter l'image des deux héros à chaque combat.
Télécharger les images des héros dans le dossier 'combat_des_heros' contenant votre fichier.
Créer dans la fenêtre combat_des_heros un second cadre nommé cadre_photo, sous le premier cadre cadre_heros permettant de recevoir les photos des héros.
Placer dans ce cadre comme ci-dessus les photos des héros Iron Man iron_man.png et Batman batman.png
Il s'agit maintenant d'afficher la photo des héros qui combattent. La photo de gauche représente la photo de l'attaquant et celle de droite la photo du défenseur.
cadre_photo.png
Dans la fonction lancer_un_combat_aleatoire(), afficher les images des deux combattants pour chaque combat
Conseils :
_ Ne pas oublier de créer un dictionnaire vide en dehors de la fonction lancer_un_combat_aleatoire().
_ Stocker les images dans ce dictionnaires.
Modification des caractéristiques des héros suite au combat
Dans la fonction lancer_un_combat_aleatoire(), configurer les labels correspondant aux nouvelles caractéristiques des combattants en cas de victoire de l'attaquant.
Conseil :
_ Détruire le cadre cadre_heros à l'aide de la commande cadre_heros.destroy() et recréer ce même cadre avec les caractéristiques des héros suite au combat.
Lancer le combat
Demander à l'utilisateur d'entrer le nombre de joueurs à l'aide de la fonction input()
Appeler la fonction creer_avatars () , au début de la fonction lancer_un_combat_aleatoire() afin de permettre aux joueurs de participer au jeu.
Créer dans la fenêtre, sous les photos des combattants, un bouton permettant de lancer la fonction lancer_un_combat_aleatoire().
Affichage du vainqueur
Lorsqu'il ne reste plus qu'un seul vainqueur, créer un label qui affiche la phrase le vainqueur du combat des héros est .......
Afficher au dessus de ce label, uniquement l'image correspond au héros vainqueur.
Fonction guerre()
Créer la fonction guerre() qui permet l'enchainement des combats avec l'affichage des combattants, des caractéristiques après chaque combat, l'image du héros vainqueur avec son nom.
Remarque: Une temporisation de quelques secondes entre chaque combat est nécessaire pour cela on utilise la commande à l'aide de la commande time.sleep()
Bouton lancer une guerre.
Créer dans la fenêtre sous les photos des combattants, un bouton permettant de lancer la fonction guerre().
-----