J'ai un projet à faire qui consiste en la réalisation d'un jeu en python 3. J'ai choisi de faire un petit jeux lux deux joueurs peuvent d'affronter. Différentes actions seraient possibles telles que : acheter une arme/armures, vendre une arme/armures, attaquer, abandonner, chercher de l'or (c'est le moyen le plus simple que j'ai trouver de faire gagner de l'or au joueurs pour qu'il puissent s'acheter des équipements) et autres.
Je voudrais qu'une seule action par tour soit possible, qu'a chaque fois qu'il attaque le joueur puisse choisir son arme et que la meilleur armure soit d'office utilisée parmis les différente que le joueur possède.
Pour un débutant en python je vous assure tout cela est assez compliqué. Le promet doit rester assez simple mais je me suis lancé dans de la POO parce-que je trouvais l'idée de ce petit combat plus fun. Je vous partage mon code, le but étant que vous puissiez me corriger soit sur des erreurs de raisonnement dans mes fonctions ou ma main loop ou des erreurs de typo (mais ca je devrais m'en sortir seul si ce sont des coquilles)
Voila j'espère que vous pourrez m'aider car je ne me sors pas, même pour des fonctions basiques comme abandonner... Merci d'avance!
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import random
class Joueur:
def __init__(self):
self.nom=""
self.sante=100
self.sante_max=100
self.gold=100
self.arme=["Fourchette"] # liste pour pouvoir ajouter du stuff
self.armure=["Culotte en coton"] # liste pour pouvoir ajouter du stuff quand achat
self.etat="Normal"
def abandonner(self):
print ("%s a choisi d'abandonner.") % self.nom
self.sante = 0
def attaquer(self, ennemi, arme):
critique=0.9+random.random()
if critique >= 1.5 :
print ("Coup critique !")
dommage=self.arme*critique-ennemi.armure
ennemi.sante=ennemi.sante-dommage
print ("%s inflige %s dommages à %s. \n Il reste %s PV à %s" % self.nom, dommage, ennemi.nom, ennemi.sante, ennemi.nom)
def stats(self):
print ("***** %s Stats ***** \n Vie : %s/%s PV \n Armure : %s \n Arme : %s \n Or : %s \n" % self.nom, self.sante, self.sante_max, self.armure, self.arme, self.gold)
def chercherOr(self):
print ("Vous entreprenez la recherche d'or par terre autour de vous")
gain=random.randint(10,80)
self.gold=self.gold+gain
Print ("vous avez trouvé %s Or qui s'ajoute a votre bourse. Solde : %s" % gain, self.gold)
def acheter(self):
Print("Vous entrez dans la boutique avec %s en poche" % self.gold)
# Affiche la liste des armes et armures a vendre et leur prix
achat=input("Quelle arme ou armure de la liste souhaitez vous acheter ?")
# tests prix et dispo
if achat in lArmes or achat in lArmures :
print("Vous avez selectionné %s" % achat)
else :
print ("Cet objet n'est pas à vendre!")
if achat.prix <= self.gold in achat in lArmes:
achat=self.arme
# enleve l'arme ou armure du stuff
self.armes.remove(achat)
else :
print("Vous n'avez pas assez d'or pour acheter cela")
if achat.prix <= self.gold and achat in lArmures:
achat=self.armures
# enleve l'arme ou armure du stuff
self.armure.remove(achat)
else :
print("Vous n'avez pas assez d'or pour acheter cela")
self.gold=self.gold-self.arme.prix
print("Felicitation vous venez d'acheter %s, il vous reste " % achat)
def vendre(self):
# afficher la liste des objets possédés.
print("Vous entrez dans la boutique avec %s en poche" % self.gold)
# Afficher la liste des armes et armures possédées
vente=input("Quelle arme ou armure de la liste souhaitez vous vendre?")
if vente in self.arme :
self.armes.remove(vente)
self.gold=self.gold+arme.prix
elif vente in self.armure :
self.armure.remove(vente)
self.gold=self.gold+armure.prix
else :
print ("Vous ne pouvez pas vendre ceci.")
class Arme:
def __init__ (self,prix,degats):
self.prix=prix
self.degats=degats
def getDegats (self):
degats=self.degats
return degats
class Armure:
def __init__ (self,prix,protection):
self.prix=prix
self.protection=protection
# Contruction des armes et armures
fourchette=Arme(0,10)
dague=Arme(5,20)
epeeCourte=Arme(30,70)
hache=Arme(50,100)
epeeLegendaire=Arme(300,1000)
katana=Arme(100,200)
calecon_en_maille=Armure(0,0)
armure_en_cuir=Armure(10,10)
haume_cuir=Armure(5,5)
jambiere_cuir=Armure(5,5)
armure_acier=Armure(50,50)
haume_acier=Armure(20,20)
jambieres_acier=Armure(20,20)
# Listes pour les tests
lArmes=["Fourchette","Dague","Epee courte","Hache","Epee Legendaire","Katana"]
lArmures=["Caleçon en maille", "Armure cuir","Haume cuir","Jambière cuir", "Armure acier", "Haume acier","Jambières acier"]
lActions=["attaquer","abandonner","vendre","acheter","stats","chercherOr"]
j1=Joueur()
j2=Joueur()
j1.nom=input("Joueur 1 entrez votre nom : ")
j2.nom=input("Joueur 2 entrez votre nom : ")
while (j1.sante != 0 or j2.sante != 0) :
print ("Que voulez vous faire %s \n" % j1.nom)
action=input("> ")
if action == "attaquer" :
j1.attaquer(j2,Fourchette)
elif action == "abandonner" :
j1.abandonner
elif action == "vendre" :
j1.vendre
elif action == "acheter" :
j1.acheter
elif action == "stats" :
j1.stats
elif action == "chercherOr" :
j1.chercherOr
else :
print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")
print ("\n".join(lActions))
if j1.sante==0:
break
print ("Que voulez vous faire %s \n" % j2.nom)
action=input("> ")
if action == "attaquer" :
j2.attaquer
elif action == "abandonner" :
j2.abandonner
elif action == "vendre" :
j2.vendre
elif action == "acheter" :
j2.acheter
elif action == "stats" :
j2.stats
elif action == "chercherOr" :
j2.chercherOr
else :
print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")
print ("\n".join(lActions))
# if j2.sante == 0:
# break
if j1.sante == 0 :
print ("j2.nom remporte la victoire!")
if j2.sante == 0 :
print ("j1.nom remporte la victoire!")
####### facon de faire avec eval a explorer ######
#if action in lActions:
# eval("j1."+action) #pb
# else :
# print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")
# print ("\n".join(lActions))
# if j1.sante==0:
# break
# print ("Que voulez vous faire %s \n" % j2.nom)
# action=input("> ")
#
# if action in lActions:
# eval("j2."+action)
# else :
# print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")
# print ("\n".join(lActions))
# if j2.sante == 0:
# break