class GameCharacter(object):
__name = ""
__health = 0
__experience = 0
def __init__(self, name, health, experience):
self.__name = name
self.__health = health
self.__experience = experience
def getName(self):
return self.__name
def adventure( e ):
self.__experience += e
def __str__(self):
return self.__name+ " is a " + str(type(self)) + " with: \n HEALTH: " \
+ str(self.__health) + " and EXPERIENCE: " + str(self.__experience)
gc = GameCharacter("gc", 10, 20)
print(gc)
class Wizard(GameCharacter):
__spells = {}
__knowledge = 0
def __init__(self, name, health, experience, spells, knowledge):
super().__init__(name, health, experience)
self.__spells = spells
self.__knowledge = knowledge
def __str__(self):
return (super().__str__() + "\n SPELLS: " + str(self.__spells) \
+ " and KNOWLEDGE: " + str(self.__knowledge))
def learn( k ):
self.__knowledge += k
# This method returns damage amount which is calculated as follows:
# select a random spell from the dictionary of spells using
# the knowledge value as the range, damage = potency of spell
def castSpell():
#?????
pass
class Warrior(GameCharacter):
__weapons = {}
__skill = 0
def __init__(self, name, health, experience, spells, skill):
pass
def __str__(self):
return "This needs to be implemented..."
#this method updates the value of __skill by s
def train( s ):
pass
# This method returns damage amount which is calculated as follows:
# select a random weapon from the dictionary of weapons using
# the skill value as the range, damage = strength of weapon
def useWeapon():
pass
wiz1 = Wizard("Wizzy", 100, 50, {}, 5 )
print(wiz1)
warr1 = Warrior("Warry", 100, 75, {}, 10)
print (warr1)
class AdventureGame():
#initializes the game characters
def __init__(self, wizard, warrior):
pass
#returns a string representing information about the game characters
def __str__(self):
pass
#generates a random number in range 0-5 for wizard: wizard gains knowledge by this much
#generates a random number in range 0-5 for warrior: warrior gains strength by this much
def adventure(self):
pass
#generates a random number in range 0-5 for wizard: wizard loses knowledge by this much
#generates a random number in range 0-5 for warrior: warrior loses strength by this much
def peril(self):
pass
#wizard casts a spell
#warrior draws a weapon
#return the winner - who has more health, or tie --> wizard|warrior|tie
def battle(self):
pass
I tried to compile this code to the py 2.7.11 but it is giving this output
gc is a <class '__main__.GameCharacter'> with:
HEALTH: 10 and EXPERIENCE: 20
Traceback (most recent call last):
File "C:/Users/Muhammad Danial/Desktop/sample.py", line 76, in <module>
wiz1 = Wizard("Wizzy", 100, 50, {}, 5 )
File "C:/Users/Muhammad Danial/Desktop/sample.py", line 34, in __init__
super().__init__(name, health, experience)
TypeError: super() takes at least 1 argument (0 given)
Anybody here to point out my mistake. I think there is a missing part in the code. May be it is written in latest version which caused this error. I tried to pass the arguments in the super but every time faced a new kind of error.
The proper way to call super
here is with the following arguments:
super(Wizard, self)
Because super in python2 needs the arguments (in python3 it's possible to do just super()
)
Take a look at the docs for super for more details
Edit: It appears that this mistake is repeated more times in your code, keep that in mind that some things will not work because of the same problem. Make sure you use super
only when needed and use it properly