-
Couldn't load subscription status.
- Fork 266
Battle Pokemon
Sar Champagne Bielert edited this page Apr 20, 2024
·
1 revision
Unit 5 Session 2 (Click for link to problem statements)
Understand what the interviewer is asking for by using test cases and questions about the problem.
- What should occur when a Pokemon's attack reduces another Pokemon's health to zero or less?
- The opponent's health should be set to zero and it should be indicated that they have fainted.
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Implement the attack method in the Pokemon class to decrease the opponent's hp by the attacking Pokemon's damage. Check if this results in the opponent fainting or just losing some health.
1) Define the `attack` method that accepts another `Pokemon` object as an `opponent`.
2) Subtract the attacking Pokemon's `damage` from the opponent's `hp`.
3) Check if the opponent's `hp` is 0 or less:
- If yes, set the `hp` to 0 and print "<opponent name> fainted".
- If no, print "<Pokemon name> dealt <damage> damage to <opponent name>".- Not properly handling the case where the opponent's
hpgoes below zero. - Incorrect calculation of damage or wrong attribute usage, resulting in incorrect game mechanics.
class Pokemon():
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp # hit points
self.damage = damage # The amount of damage this pokemon does to its opponent every attack
def attack(self, opponent):
opponent.hp -= self.damage
if opponent.hp <= 0:
opponent.hp = 0
print(f"{opponent.name} fainted")
else:
print(f"{self.name} dealt {self.damage} damage to {opponent.name}")