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)It is sent to this method:
public void eat(Player p)
{
Console.WriteLine(p.Name + " Ate the " + name);
p.life = p.life + amountHealed;
}
Fruitこれは、アイテムをプレイヤーに供給するクラスであるため、少し「ピンポン」のように感じます。私のFruitクラスはインターフェイスを実装するためiEatable (これは確かに理にかなっています) eat、それを実装するクラスにメソッドを配置する必要があります。