2013-04-12 90 views
1

所以我一點點前使這個代碼,但它不會使用check_level命令或裁決命令調用時:Python類將不執行我的功能

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!') 

回答

1

此:

RPG.check_enemy(self) 
RPG.award(self) 
RPG.check_level(self) 

應該是:

self.check_enemy() 
self.award() 
self.check_level() 

self參數是隱含的。

編輯:實際上你的任何RPG.*(self)功能應該是self.*() - 我看他們幾個在整個類灑。

1

Samsquanch將您所有的RPG.(self)方法調用更改爲self.*()是正確的。當你調用一個方法時,python將始終傳遞實例對象作爲第一個參數。這樣,您可以避免必須像以前那樣顯式調用該方法。有關self的更多詳細信息,您可以查看this link

我測試了你的代碼,看起來你的問題在於check_enemy()。您需要將self.set == True更改爲self.set = True

新的方法應該是這樣的

def check_enemy(self): 
    if self.eh == 0: 
     print('You Win') 
     self.set = True 
     self.set_basic() 
    else: 
     print('')