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
、それを実装するクラスにメソッドを配置する必要があります。