Pokemon

Fermé
LLeo - Modifié le 31 janv. 2023 à 16:08
mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 - 31 janv. 2023 à 16:19

Hola ! 

Je débute en python et on doit faire un combat de Pokemons.

Je suis bloqué sur une fonction, où j'aimerais que si le pokemon (a) utilise le full heal (défini par (c)) ,sa santé augmente de 20, mais je ne sais pas comment on pourrait le coder.

 def full_heal (self):
    while running:
    self.vie=108
    if a == c:
        self.vie "Carchacrok" a=a+20
        self.vie = self.vie+20
        return(self.vie)

def ressucit(self):
    while running :
    if self.vie pokemon == 0:
        self.vie == "Ressucit"
        self.vie pokemon = self.max_vie
        return (self.max_vie)

2 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
30 janv. 2023 à 17:58

Bonjour,

il y a des problèmes d'indentation dans ton code, et d'ailleurs, tu devrais afficher ton code complet

avec les balises de code, mode d'emploi:

https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Visuellement, ça doit ressembler à ça:

for k in range(10):
    print(k)
0
mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 7 753
31 janv. 2023 à 16:19

Bonjour,

Il y a beaucoup de choses qui ne vont pas.

  • Le code n'est a priori pas complet
  • self n'a de sens que si tu es dans une classe (ça n'est pas le cas dans ton extrait de code)
  • return n'est pas une fonction, donc il n'y a pas besoin d'utiliser de parenthèses.
  • Cette syntaxe n'a pas de sens en python, et donc je t'invite à lire un cours de python avant de te lancer dans le code : self.vie "Carchacrok" a=a+20
  • À quoi Carchacrok : au seul pokemon capable d'utiliser ce pouvoir ? Est-ce que Carchacrok est un type de pokemon (donc une classe au sens python) ou un pokemon unique (donc une instance au sens python)

Si je m'en tiens à l'énoncé :

J'aimerais que si le pokemon (a) utilise le full heal (défini par (c)) ,sa santé augmente de 20, mais je ne sais pas comment on pourrait le coder

... et en admettant que Carchacrok soit un type de pokemon, le seul type à pouvoir lancer un full_heal, le code pourrait ressembler à :

class Pokemon:
    def __init__(self, life: int, life_max: int):
        self.life_max = life_max
        self.life = life
    def __str__(self) -> str:
        return f"{self.__class__.__name__}<life: {self.life}/{self.life_max}>"

class Carchacrok(Pokemon):
    def full_heal(self):
        self.life_max += 20
        self.life = self.life_max

carchacrok = Carchacrok(20, 100)
print(carchacrok)
carchacrok.full_heal()
print(carchacrok)

Résultat :

Carchacrok<life: 20/100>
Carchacrok<life: 120/120>

Bonne chance

0