Reputation: 23
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
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