0

私は一般的にc#とオブジェクト指向コーディングを始めたばかりなので、この質問はおそらく少し混乱するでしょうが、物事を明確に説明するために最善を尽くします!コンテキストとして、ゲームプロジェクト用にランダムなダンジョンジェネレーターを作成しようとしています。

ジャグ配列「ダンジョン」があり、次のように宣言しています。

public Level[][,] Dungeon;

明確にするために、ダンジョンは「レベル」の1D配列です。レベルはそれ自体のオブジェクトであり、コンストラクターで定義したいくつかの固有のプロパティがあります。

各レベルは、オブジェクトでもある「mazePieces」の2D配列です。

ダンジョン配列全体を参照して、ダンジョン内のレベル数を確認するなどの方法を理解しました。

Dungeon[x].Length

また、特定のレベルの個々のmazePiecesを参照することもできます。

Dungeon[i][x,y].mobAmount

ただし、レベル全体のプロパティを参照する方法がわかりません。入力すると

Dungeon[i].numberOfRooms

「numberOfRooms」はレベルのプロパティとして認識されません。ただし、入力すると認識されることがわかりました

Dungeon[i][,].numberOfRooms

私が遭遇している問題は、括弧の2番目のセットが構文エラーでマークされており、値が予期されていることを示していることです。

レベルの特定の部分だけでなく、レベル全体を参照できるように、2番目の括弧のセットに何を入れることができますか?

うまくいけば、これは少なくともある程度理解できたでしょう、私に知らせてください、そして私は明確にするために最善を尽くします!ありがとう!

4

3 に答える 3

3

デザインでもう少し構成を使用できます。多分このようなもの:

class Dungeon {
    public Level[] Levels { get; private set; }

class Level {
    public int NumberOfRooms
        { get { return Maze.GetUpperBound(0) * Maze.GetUpperBound(1); }
    public MazePiece[,] Maze { get; private set; }
}

class MazePiece {
    private List<Mob> _mobs = new List<Mob>();
    public IEnumerable<Mob> Mobs { get { return _mobs; } }
    public int MobCount { get { return _mobs.Count; } }
}

class Mob {
    public string Name { get; private set; }
}

そうすれば、より自然に物事を参照できます。

var mobsAtTenTenOfLevelThree = dungeon.Levels[2].Maze[9, 9].Mobs;
于 2013-02-28T17:56:20.473 に答える
0

numberOfRoomsのプロパティであると仮定すると、ダンジョンの合計MazePieceを検索する場合は、次を使用できます。SelectMany

int totalRooms = dungeon.SelectMany(p=>p.numberOfRooms).Sum();
于 2013-02-28T17:57:38.717 に答える
0

Level迷路のピースはクラスの一部であるべきだと思いますが、

だからあなたは持っているでしょう

public Levels[] Dungeon.

また、Levelクラスにはインデクサーがあり ます。

public SomeReturnType this[int x, int y]
{
   get
   {
      // return maze piece
   }
}

この場合、 を介して任意のレベル プロパティにアクセスできますDungeon[i].numberOfRooms。そして、あなたはまだあなたが望むように迷路のピースにアクセスすることができます.Dungeon[i][x,y].mobAmount

于 2013-02-28T17:55:58.190 に答える