我试图让使用MUD-PI一个MUD,我被困在制作室包含怪物和具有kill命令知道是什么怪物来计算Python的泥杀功能
这里的攻击是我的代码kill命令
`elif command == "kill":
if players[id]["room"]["enemy"] == 'True':
if players[id]["room"]["monsterName"].hp >= 0:
mud.send_message(id,"You attack %s for %d damage" % (players[id]["room"]["monsterName"], players[id]["ATK"]))
players[id]["room"]["monsterName"].hp -= players[id]["ATK"]
else:
players[id]["room"]["monsterName"].death()
else:
mud.send_message(id,"You dont see a monster")]
,代码为客房
#import monsters
from Monsters import *
# structure defining the rooms in the game. Try adding more rooms to the game!
rooms = {
"Tavern": {
"description": "You're in a cozy tavern warmed by an open fire.",
"exits": { "outside": "Outside" },
},
"Outside": {
"description": "You're standing outside a tavern. there is a troll.",
"exits": { "inside": "Tavern" },
"enemy": 'True',
"monsterName": troll,
}
}
终于怪物代码
#monsters
import sys,random,os,time
#Troll
class Troll():
def __init__(self):
self.name = "Troll"
self.ATK = 2
self.hp = 10
self.max_hp = 10
def death(self):
mud.send_message(id,"you killed the troll")
self.hp = self.max_hp
troll = Troll()
当我试图在当前的代码,我得到这个错误:
if players[id]["room"]["enemy"] == 'True':
TypeError: string indices must be integers, not str
我想知道是什么原因造成这个错误,如果可能的话,我怎么能得到这个工作,我想要的方式。
编辑:我得到了这个工作,但当我在游戏中使用命令它出来这样(你攻击)3点伤害 我想说你攻击房间里的怪物的名字。
这里是我的编辑代码
elif command == "kill":
rm = rooms[players[id]["room"]]
if rm["enemy"] == 'yes':
if rm["monsterName"].hp >= 0:
mud.send_message(id,"You attack %s for %d damage" % (rm["monsterName"], players[id]["ATK"]))
rm["monsterName"].hp -= players[id]["ATK"]
else:
rm["monsterName"].death()
else:
mud.send_message(id,"You dont see a monster")
我想也杀改变命令杀死[monsterName]在这种情况下,巨魔,我想这样做这样
elif command == "kill":
mn = params.lower()
rm = rooms[players[id]["room"]]
if rm["enemy"] == 'yes':
if mn in rm["monsterName"]:
monster = rm["monsterName"]
if monster.hp >= 0:
mud.send_message(id,"You attack %s for %d damage" % (rm["monsterName"], players[id]["ATK"]))
monster.hp -= players[id]["ATK"]
else:
monster.death()
else:
mud.send_message(id, "you dont see a %s" % mn)
else:
mud.send_message(id, "you dont see an enemy")
但是当我尝试使用它时,出现此错误
if mn in rm["monsterName"]:
TypeError: argument of type 'instance' is not iterable
当我尝试你的建议,但它的工作,但巨魔的名字出来作为 3点伤害 –
Arcxes
@Arcxes,这个网站的工作方式,它是更好的要求较小,自包含的问题比把所有的问题都放在一个题目下,用一个通用的标题,比如“Python mud kill function”。目前你的问题很难遵循,没有人能猜到你从标题中提出的问题。我建议你接受我的答案,如果它回答你的问题,然后将这个新问题分解成一个更具描述性题目的新问题。 – georgek
好的感谢和抱歉,即时通讯此新网站accountwise – Arcxes