Cognitionn
Cognitionn

Reputation: 23

How can I add my changes to my class in python

from random import randint
from time import sleep
from sys import exit


class Player:
    def __init__(self, player="Player", enemy="Enemy", hp=50, enemy_hp=50):
        self.player = player
        self.hp = hp
        self.backup_hp = hp
        self.enemy_hp = enemy_hp
        self.enemy = enemy

    def attack(self, enemy):
        for i in range(10):
            print('.', end='', flush=True)
            print("Attacking!")
            sleep(3)
            num = (self.backup_hp/10) * 2
            random_damage = randint(1, num)
            result = randint(0, 1)
            if result == 0:
                print("Oh no, you missed!")
            if result == 1:
                print(
                    f"Inceridble, {self.player} player, gave {random_damage} damage to {self.enemy} player!")
                self.attacking(enemy, random_damage)
                self.determine_result()
                break

    def use_special_power(self, enemy):
        random_num = randint(1, 100)
        if random_num % 7 == 0:
            random_dmg = randint(self.backup_hp/5, self.backup_hp/2)
            self.attacking(enemy, random_dmg)
            print(
                f"Wow! {self.player} player, gave {random_dmg} damage to {self.enemy} player!")
            self.determine_result()
    def attacking(self, enemy, damage):
        self.enemy_hp -= damage
        print(f"Enemy's HP {self.enemy_hp}")

    def Defend(self):
        self.backup_hp -= 10

    def determine_result(self):
        if self.enemy_hp < 1:
            print("Congrats, you won!")
            exit()
        if self.hp < 1:
            print("You were unlucky.")
            exit()


player_1 = input("player 1:")
player_2 = input("player 2:")
counter = 1
while True:
    if counter % 2 == 0:
        player = Player(player_1, player_2)
        enemy = Player(player_2, player_1)
    else:
        player = Player(player_2, player_1)
        enemy = Player(player_1, player_2)
    secim = int(input("""Choose one:
    1-attack
    2-Use special power
    3-Defend
    """))
    if secim == 1:
        player.attack(enemy)
    if secim == 2:
        player.use_special_power(enemy)
    if secim == 3:
        player.Defend()
    counter += 1

I wrote this game but it doesn't work as I expected when I run it. Ex:

Inceridble, Jack player, gave 2 damage to John player!

Enemy's HP 48

Inceridble, Jack player, gave 5 damage to John player!

Enemy's HP 45

Inceridble, Jack player, gave 1 damage to John player!

Enemy's HP 49

As you can see, my changes didn't affect the class. How can I transfer my changes to the class?

Upvotes: 2

Views: 41

Answers (1)

Serhii
Serhii

Reputation: 315

You are recreating the players each time. Instead, try something like this:

...
player = Player(player_1, player_2)
enemy = Player(player_2, player_1)
while True:
    player, enemy = enemy, player
    ...

Upvotes: 1

Related Questions