Sushmit Chakraborty Ответов: 1

Python text based rpg problem, помогите пожалуйста


Ниже приведен код для игры, которую я написал:

from random import randint
class Dice:
    def die(num):
        die=randint(1,num)
        return die

class Character:
    def __init__(self,name,hp,damage):
        self.name=name
        self.hp=hp
        self.damage=damage

class Fighter(Character):
    def __init__(self):
        super().__init__(name=input("what is your character's name?"),
                       hp=20,
                       damage=12)
        prof= "fighter"

class Assasin(Character):
    def __init__(self):
        super().__init__(name=input("what is your character's name?"),
                       hp=15,
                       damage=14)
        prof= "assasin"

##NOW FOR ENEMIES

class Goblin(Character):
    def __init__(self):
        super().__init__(name="goblin",
                     hp=15,
                     damage=3)
        
        

class Ogre(Character):
    def __init__(self):
        super().__init__(name="ogre",
                     hp=25,
                     damage=6)

##ENEMIES

def profession():
    print("What is your class?",'\n',
          "Press f for fighter" , '\n',
          "Press a for assasin")
    pclass=input("Enter your choice>>>")
    if(pclass=="f"):
        prof=Fighter()
    elif(pclass=="a"):
        prof=Assasin()
    else:
        prof=Fighter()
    return prof

def ranmob():
    mob=Ogre() if Dice.die(2)<2 else Goblin()
    return mob

def playerAttack():
    roll=Dice.die(10)
    print("You hit")
    if (hero.prof=="fighter"):
        if(roll<8):
            print("them for 12 damage")
            mob.hp-=12
            print("The",mob.name,"has",mob.hp,"hp left")
        else:
            print("You missed your attack")
    elif(hero.prof=="assasin"):
        if(roll<8):
            print("them for 14 damage")
            mob.hp-=14
            print("The",mob.name,"has",mob.hp,"hp left")
        else:
            print("You missed your attack")

def monsterAttack():
    roll=Dice.die(10)
    print("The monster attacks")
    if(mob.name=="Ogre"):
        if(roll<8):
            print("6 damage taken")
            hero.hp-=6
        else:
            print("The attack misses")

    elif(mob.name=="Goblin"):
        if(roll<8):
            print("3 damage taken")
            hero.hp-=3
        else:
            print("The attack misses")

def commands():
    if hero.prof=="fighter":
        print("press f to fight\n","press e to pass")
        command=input(">>>>>")
        if(command=="f"):
            playerAttack()
        elif command=="e":
            pass
    elif hero.prof=="assasin":
        print("press f to fight\n","press e to pass")
        command=input(">>>>>")
        if(command=="f"):
            playerAttack()
        elif command=="e":
            pass

mob=ranmob()
hero=profession()

print("name hp"'\n',hero.name,hero.hp)

while True:
    if mob.hp<=0:
        print('The',mob.name,'is dead')
        mob=ranmob()
    if hero.hp<=0:
        print(hero.name,'died!')
        hero=profession()
        print("name hp",'\n',hero.name,hero.hp)

    print("You see",mob.name,",",mob.name,"has",mob.hp,"hp")
    if hero.hp>0:
        commands()
    if mob.hp>0:
        monsterAttack()


Вывод выдает ошибку-

Traceback (most recent call last):
  File "C:\Users\Hi\Desktop\python programs\nvm\MYFIRSTGAME.py", line 129, in <module>
    commands()
  File "C:\Users\Hi\Desktop\python programs\nvm\MYFIRSTGAME.py", line 98, in commands
    if hero.prof=="fighter":
AttributeError: 'Fighter' object has no attribute 'prof'



Любая форма помощи или предложения будет оценена по достоинству :-)

Что я уже пробовал:

Попробовал повозиться с профом в истребителе и ассасин клас,но ничего не вышло

Richard MacCutchan

Я дал вам ответ на предыдущий вопрос. Пожалуйста, не делайте репостов.

Sushmit Chakraborty

Извините,но я вернулся к кодированию после 1-го решения,не видел вашего ответа к тому времени, когда я опубликовал этот вопрос.

1 Ответов

Рейтинг:
0

CPallini

Цитата:
проф= "боец"
Ты наверное имел ввиду
self.prof = "fighter"


Sushmit Chakraborty

Еще раз спасибо