请在我player
的游戏类中查看此方法:
public void eatSomethingt(Items eatable)
{
foreach (Items i in items)
{
if (i is Ieatable && i.name == eatable.name) //Give items an ID in the future
{
Ieatable k = i as Ieatable;
k.eat(this);
items.Remove(i);
break;
}
}
}
基本上,这将遍历玩家拥有的物品列表并比较它们以检查传入的参数是否可食用,如果是,则检查玩家是否有。如果它进入 IF 语句,则该项目将从玩家背包中移除(items
)
问题出在这行:k.eat(this)
它被发送到这个方法:
public void eat(Player p)
{
Console.WriteLine(p.Name + " Ate the " + name);
p.life = p.life + amountHealed;
}
这感觉有点像“乒乓球”,因为它是Fruit
向玩家提供物品的类。由于我的Fruit
类实现了接口iEatable
(这肯定是有意义的),我必须eat
在实现它的类中放置一个方法。