我正在使用Python.我已经阅读了一些关于这个的内容,似乎无法将其包裹起来.我想要做的是有一个名为Potions的类,里面有各种药水对象.现在有一种药水,一种简单的HealthPotion.我希望药水可以堆放在库存和商店库存中.因此,我需要一个库存量的实例,以及每个带有药水的商店库存的实例.对于购买/出售和抢劫药水,药水量将是动态的.如果有人可以提供一个很好的基本解释或例子.
这是我所拥有的片段:
class Potion(Item):
def __init__(self, name, desc, val, amt, type, effect, bound):
Item.__init__(self, name, desc, val, amt, type, effect, bound)
self.name = name
self.desc = desc
self.val = val
self.amt = amt
self.type = 0 #Restorative
self.effect = effect
def use(self, you):
#Use health potion
you.hp_current += self.effect
you.displayStats()
#Format: Name, Description, Value, Amount, Type, Effect, Bound
HealthPotion = Potion('Health Potion', 'Restores 10 hit points when consumed', 10, 0,
0, 10, 0)
Run Code Online (Sandbox Code Playgroud)
理想情况下,默认金额将设置为0,我将能够声明某个商店在其库存中开始的金额.库存和商店库存设置为一个数组,用于追加和移除项目.我认为我已经了解了这将如何工作的逻辑,我只是在实例化金额方面遇到了麻烦.
编辑:这是我在buy方法中的一部分,看看如果不使用实例会发生什么.它非常丑陋,我发现you.inventory.y.amt不起作用.y是"商店"中显示的商品列表中的选定商品.
x = selection - …Run Code Online (Sandbox Code Playgroud) 我正在为一位朋友做个人项目,并且遇到了一些障碍.我可以像我一样继续编写一些非常冗余的代码,但我觉得必须有一种更有效的方法.
我要做的是编写一个方法,它将添加三个值并将结果显示在"Skill Modifier"标题下的文本框中(参见屏幕截图).我需要获得方法或一系列方法来为每项技能做到这一点.它需要获得Balance,Climb,Escape Artist等的Skill Modifier值...

该方法类似于"CalculateSM"
我目前有什么:
private void btnUpdate_Click(object sender, EventArgs e)
{
//AM + R + MM =SM
//AM = Ability Modifier
//R = Rank
//MM = Misc Modifier
//SM = Skill Modifier
decimal balanceMod = balanceAM.Value + balanceR.Value + balanceMM.Value;
balanceSM.Text = balanceMod.ToString();
decimal climbMod = climbAM.Value + climbR.Value + climbMM.Value;
climbSM.Text = climbMod.ToString();
//etc...
}
Run Code Online (Sandbox Code Playgroud)
对我来说,基本上最大的问题是弄清楚如何设计一种方法来处理这么多不同的字段名称并以相同的方式添加它们.我想避免复制和粘贴相同的两行代码五十次为每个技能.
任何想法将不胜感激!谢谢.