基于Python文本的RPG问题,请帮忙 [英] Python text based rpg problem, help please

查看:52
本文介绍了基于Python文本的RPG问题,请帮忙的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我写的游戏代码:



 来自 random  import  randint 
class 骰子:
def die(num):
die = randint( 1 ,num)
return die

class 字符:
def __init __(自我,名字,hp,伤害):
self.name = name
self.hp = hp
self.damage = damage

class 战士(角色):
def __init __(self):
super().__ init __(name = input( 你的角色的名字是什么?),
hp = 20,
伤害= 12)
prof = 战斗机

class Assasin(Character):
def __init __(self):
super().__ init __(name) = input( 你的角色名称是什么?),
hp = 15,
damage = 14)
prof = assasin

#NOW FOR ENEMIES

精灵(角色):
def __init __(self):
super().__ init __(name = < span class =code-string> goblin
hp = 15,
damage = 3)



class Ogre(字符):
def __init __(self):
super()。 __init __(name = ogre
hp = 25,
damage = 6)

#ENEMIES

< span class =code-keyword> def 专业():
print 你的班级是什么?' \\ \\ n'
按f进行战斗机' \ n'
按a for assasin
pclass = input( 输入您的选择>>>)
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 你点击
if (hero.prof == 战斗机):
如果(roll< 8):
print 它们造成12点伤害
mob.hp- = 12
print ,mob.name, ,mob.hp , hp left
else
print 你错过了你的攻击
elif (hero.prof == < span class =code-st ring> assasin):
if (roll< 8):
打印 它们造成14点伤害
mob.hp- = 14
print ,mob.name, 具有,mob.hp, hp left
else
print 您错过了攻击

def monsterAttack():
roll = Dice.die( 10
print 怪物攻击
if (mob.name == Ogre):
if (roll< 8):
print 6点伤害
英雄。 hp- = 6
else
print 攻击未命中

elif (mob.name == Goblin):
if (roll< 8):
print 3受到的伤害
hero.hp- = 3
else
print 攻击未命中

def commands():
if hero.prof == 战斗机
print 按f打击\ n 按e传递
command = input( >>>>>
if ( command == f):
playerAttack()
elif command == e
传递
elif hero.prof == assasin
print 按f打击\ n 按e传递
command = input( >> ;>>>
if (command == f):
playerAttack()
elif command == e
pass

mob = ranmob()
hero = profession()

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

while True
如果 mob.hp< = 0:
print ' ',mob.name,' 已死'
mob = ranmob()
如果 hero.hp< = 0:
print (hero.name,' 死亡!'
hero =专业()
print name hp' \ n',hero.name,hero.hp)

print ( 你看,暴徒。 name, ,mob.name, ,mob.hp, hp
如果 hero.hp> 0:
命令()
if mob.hp> 0:
monsterAttack()





输出引发错误 -



 Traceback(最近一次调用最后一次):
文件C:\ Users \Hi \Desktop \ python programs \\ \\ nvm \ MYFIRSTGAME.py,第129行,< module>
命令()
文件C:\ Users \Hi \Desktop\python programs\\\
vm \ MYFIRSTGAME.py,第98行,命令
如果是英雄。 prof ==fighter:
AttributeError:'Fighter'对象没有属性'prof'







任何形式的帮助或建议将不胜感激:-)



我尝试过:



尝试修补战斗机和assasin clas的教授,但没有解决

解决方案

Quote:

prof =fighter

你可能意味着

 self.prof =fighter


Following is the code for the game which I have written:

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()



Output throws the error-

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'




Any form of help or suggestion would be appreciated :-)

What I have tried:

Tried tinkering with the prof in the Fighter and assasin clas,but didnt work out

解决方案

Quote:

prof= "fighter"

You probably meant

self.prof = "fighter"


这篇关于基于Python文本的RPG问题,请帮忙的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆