私はこのゲームを作っていますが、構造に問題があります。Structureというクラスを作成し、Traps、Shelter、Fireplaceなどの他のクラスはこのクラスを継承しています。ゲーム内のタイルには独自のクラス(タイル)があり、そのタイルの構造のリストがあります。リストに含まれているタイルに構造をうまく構築できます。トラップなどのクラスから関数にアクセスしようとすると、問題が発生します。機能しません。基本クラスStructureの関数しか使用できません。
タイルのリスト:
class Tile
{
public List<Structure> Structures = new List<Structure>();
}
トラップや他の建物を建てる方法:
bool anyFireplace = Bundle.map.tile[Bundle.player.X, Bundle.player.Y].Structures.OfType<Shelter>().Any();
if (!anyFireplace)
{
woodlogsCost = 4;
if (Bundle.player.Woodlogs - woodlogsCost >= 0)
{
Bundle.map.tile[Bundle.player.X, Bundle.player.Y].Structures.Add(new Shelter(Bundle.player.X, Bundle.player.Y));
Bundle.player.Woodlogs -= woodlogsCost;
}
}
構造を描くとき(ここに私の問題があります、コメントに注意してください)
foreach (Structure s in Bundle.map.tile[x, y].Structures)
{
if (s is Fireplace)
{
//This is the function from base class Strucure
s.ColorBody(g, 10, x - minx, y - miny, 0, Brushes.Firebrick);
// The function that I wan´t to use but can´t be used
//s.ColorBody(g, x - minx, y - miny);
}
if (s is Shelter)
{
s.ColorBody(g, 10, x - minx, y - miny, 1, Brushes.ForestGreen);
}
if (s is Sleepingplace)
{
s.ColorBody(g, 10, x - minx, y - miny, 2, Brushes.Brown);
}
if (s is Trap)
{
s.ColorBody(g, 10, x - minx, y - miny, 3, Brushes.Silver);
}
if (s is Barricade)
{
s.ColorBody(g, 10, x - minx, y - miny, 4, Brushes.DarkOliveGreen);
}
}
Soo ...使用したくない機能にアクセスするにはどうすればよいですか?