構造物を作りたいという2Dゲームを作っています。プレイヤーは特定の構造から利益を得ることができなければなりません。今日のゲームは次のようになります。
(青い点はプレーヤー、他の点はaisです)
Structureという名前のクラスとStructureから継承する他の3つのクラスを作成しました。これらのクラスは多かれ少なかれ空です。ゲームのタイルには、Tileという名前の独自のクラスがあります。このクラスで私はいくつかのことを書きましたが、興味のあるコードはこれです:
public LinkedList<Structure> Structures = new LinkedList<Structure>();
構造(たとえば暖炉)を構築すると、コードは次のようになります。
Bundle.map.tile[Bundle.player.X, Bundle.player.Y].Structures.
AddFirst(new Fireplace());
私がよくわからないのは、リストに暖炉(Fireplaceという名前のクラス)やその他の建物が含まれているかどうかを確認する方法です。たとえば、プレーヤーがタイルに暖炉を見つけた場合、彼/彼女は暖かさを取り戻します。これは動作しません。おそらく私はこれらすべてに対して間違ったアプローチをとっています。どちらの場合でも、コード例を教えてください。
答えの結論:
bool anyFireplace = Bundle.map.tile[Bundle.player.X, Bundle.player.Y].Structures.OfType<Fireplace>().Any();
if (anyFireplace)
{
Warmth = MaxWarmth;
}
else
{
if (Warmth > 0)
{
Warmth--;
}
else
{
HP--;
}
}