1

そのため、このコードは少し前に作成しましたが、呼び出されたときに check_level コマンドまたは award コマンドを使用しません。

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

2 に答える 2

1

これ:

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

次のようにする必要があります。

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

selfパラメータは暗示されます。

編集:実際には、あなたのRPG.*(self)関数はどれもそうあるべきですself.*()- 私はそれらのいくつかがクラス全体に散りばめられているのを見ます。

于 2013-04-12T22:28:20.213 に答える
1

Samsquanch は、すべてのRPG.(self)メソッド呼び出しを に変更することについて正しいself.*()です。メソッドを呼び出すと、Python は常にインスタンス オブジェクトを最初のパラメーターとして渡します。そうすれば、以前のようにメソッドを明示的に呼び出す必要がなくなります。の詳細については、このリンクを参照してくださいself

あなたのコードをテストしましたが、あなたの問題は にあるよう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('')
于 2013-04-12T23:52:42.870 に答える