So I made this code a little bit ago, but it won't use the check_level command or the award command when called:
from random import randint
class RPG:
#Defines parts of your character
def __init__(self, character_name):
self.chrn = character_name
self.exp = 0 #Total Experince points
self.level = 1 #Total Level
self.h = 25 #Player Health
self.expn = 10 #Experience Needed
self.eh = 10 #Base Enemy Health
self.set = False #Used to chest enemy status
self.win = False #Used to check for win
def set_basic(self): # Sets up the basic enemy.
if self.eh == 0:
self.eh = 10
def check_level(self): # Checks to see if you have enough EXP to level up.
if self.exp >= self.expn:
self.level = self.level + 1
self.exp = 0
self.expn = self.level * 10
print('Level has increased to {0}'.format(self.level))
def check_enemy(self): # Checks to see if enemy's health is equal to 0.
if self.eh == 0:
print('You Win')
self.set == True
RPG.set_basic(self)
else:
print('')
def award(self): # Awards EXP if enemy is dead.
if self.set == True:
self.exp = self.exp + 5
print ('You gained 5 EXP!')
def attack(self): #The main character's attack.
x = randint(1,100)
if x > 20:
y = randint(1, self.level * 3)
self.eh = self.eh - y
final = ('Enemy took {0} damage'.format(y))
print(final)
if self.eh < 0:
self.eh = 0
print('Enemy has {0} health left'.format(self.eh))
print('')
RPG.check_enemy(self)
RPG.award(self)
RPG.check_level(self)
else:
print('Miss!')
This:
RPG.check_enemy(self)
RPG.award(self)
RPG.check_level(self)
Should be:
self.check_enemy()
self.award()
self.check_level()
The self
param is implied.
EDIT: actually any of your RPG.*(self)
functions should be self.*()
-- I see a few of them sprinkled throughout the class.
Samsquanch is correct about changing all your RPG.(self)
method calls to self.*()
. When you call a method, python will always pass the instance object as the first parameter. That way you can avoid having to explicitly call the method as you were doing previously. You can check out this link for some more detailed information on self
.
I tested out your code and it looks like your problem lies within check_enemy()
. You need to change self.set == True
to self.set = True
.
The new method should look like this
def check_enemy(self):
if self.eh == 0:
print('You Win')
self.set = True
self.set_basic()
else:
print('')
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.