gpt4 book ai didi

python - 基于文本的角色扮演游戏 : How to apply cool downs to user input

转载 作者:行者123 更新时间:2023-11-30 23:05:03 25 4
gpt4 key购买 nike

假设我有一个名为治愈的咒语。如何防止用户在每次损坏时发送垃圾邮件治愈。我曾考虑过将其应用到单兵作战功能中;但是,我不确定如何为此实现全局规则?此代码可能会清除它:

available_spells = ['fireball', 'heal']
equipped = {'Weapon': "Staff",
'Armor': "Robes",
'Spells': ['fireball', 'heal']}

print "Your available spell(s) is(are) '%s'. " % equipped["Spells"]
inp = raw_input("Type the name of a spell you want to use.: ").lower()
lst = [x for x in available_spells if x.startswith(inp)]
if len(lst) == 0:
print "No such spell"
print ' '
elif len(lst) == 1:
spell = lst[0]
print "You picked", spell
#COMBAT FUNCTIONS HERE
else:
print "Which spell of", equipped["Spells"], "do you mean?"

如果我要创建一个类来定义咒语要采取的某些操作,我该如何将其实现到我拥有的代码中?例如,如果我有一类法术,具有定义伤害规则、冷却时间等的函数,我如何在已有的代码中引用该函数?即玩家输入“heal”,我希望它引用上面的类,该类定义了这些值来检查玩家最近是否玩过该咒语,以及玩时会做什么。

这个问题我说得够清楚吗?我应该如何编写法术冷却机制?如何在上面的代码中实现这个机制?

最佳答案

您可以将所有可用法术存储为字典,而不是将它们存储为列表,这样您还可以存储所需的冷却时间:

available_spells = {
# spell name: cooldown duration in seconds
'fireball': 3.0,
'heal': 5.0,
}

每个玩家都可以有另一个字典来跟踪他们上次施放每个咒语的时间。当游戏开始时,它会是空的:

cast_spells = {}

当玩家尝试施展法术时,检查法术名称是否在 cast_spells 字典中。如果不是,那么他们在这场比赛中还没有施放它,所以他们可以施放它:

if spell_name not in cast_spells:
cast_spells[spell_name] = datetime.now()

否则,如果法术名称位于 cast_spells 字典中,请检查所需的冷却时间是否已过:

elif cast_spells[spell_name] + datetime.timedelta(seconds=spells[spell_name]) < datetime.now():
cast_spells[spell_name] = datetime.now()

否则,冷却时间仍然有效。

else:
print 'Spell not ready.'

关于python - 基于文本的角色扮演游戏 : How to apply cool downs to user input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com