import random
class Character:
def __init__(self, name, hp, attack, dodge):
self.name = name
self.hp = hp
self.attack = attack
self.dodge = dodge
def take_damage(self, damage):
self.hp -= damage
def attack(self, target):
damage = self.attack
target.take_damage(damage)
print(f"{self.name} attacks {target.name} for {damage} damage!")
class Player(Character):
def __init__(self, name, hp, attack, dodge):
super().__init__(name, hp, attack, dodge)
class Enemy(Character):
def __init__(self, name, hp, attack, dodge):
super().__init__(name, hp, attack, dodge)
fighter = Player("Fighter", 5, 3, 2)
mage = Player("Mage" ,1, 5, 4)
thief = Player("Thief" ,4, 3, 4)
print("Welcome to Fighter Arena")
x = input("Enter Your Name: ")
print("Choose Your Character (fighter = 1 | mage = 2 | thief = 3)")
choice = input()
if choice == '1':
player = fighter
if choice == '2':
player = mage
if choice == '3':
player = thief
while True:
enemy = random.randint(1,3)
if enemy == 1:
enemy = fighter
print("\nYou are fighting a fighter!")
break
if enemy == 2:
enemy = mage
print("\nYou are fighting a mage!")
break
if enemy == 3:
enemy = thief
print("\nYou are fighting a thief!")
break
while player.hp > 0 and enemy.hp > 0:
player.attack(enemy)
if enemy.hp <= 0:
break
enemy.attack(player)
if player.hp <= 0:
break
if player.hp > 0:
print("You win!")
else:
print("You lose!")
Traceback (most recent call last): File "main.py", line 1, in from player import Player, Character, Enemy File "/home/runner/ClassesAssessment/player.py", line 23, in class Enemy(Character): File "/home/runner/ClassesAssessment/player.py", line 61, in Enemy int(player.attack(enemy)) TypeError: 'int' object is not callable
I tried changing any other objects, classes, etc also named player or changing the syntax but none of it worked. I believe there is something wrong when I am assigning the different fighter classes (mage, fighter, thief) and all that I've searched has not helped me.