对多维数组使用锯齿状

Using jagged with multidimensional arrays

这里有新成员。有很多关于数组的帖子,但我没有看到这个,所以我想知道这是否可能。

我有一个 11 x 10 的游戏板。我有一个数组来布置方块。顶行是 a[0][0] - a[0][10],底行是 a[9][0] - a[9][10],中间是你所期望的。

将棋盘想象成棋盘。一块移动到一个正方形,并放置在该特定位置的阵列中。不同之处在于,您可以在一个正方形上放置一堆棋子。这就是锯齿状数组的用武之地,因为堆栈中的碎片数量可能会有所不同。

我的问题是,我可以在棋盘上的每个点的多维数组中嵌套一个锯齿状数组吗?

我能想到的唯一其他方法是拥有 110 个锯齿状数组,每个位置一个,根本没有多维数组。那会是这样做的方法吗?

我知道我有很多关于数组的知识,所以如果有人能指出我应该查找的方向,我将不胜感激。谢谢。

如果堆叠中的棋子数量可以变化,在我看来您真正想要的是一个代表游戏板的二维数组,其中包含堆叠的实例。这些可以是一些自定义数据类型,或者您可以只使用 List<T>(例如 List<Piece>,其中 Piece 是您的游戏类型)。

例如:

List<Piece>[,] board = new List<Piece>[11,10];

for (int row = 0; row < 11; row++)
    for (int column = 0; column < 10; column++)
        board[row, column] = new List<Piece>();

通过在此处使用 List<T>,您的棋盘开始时每个位置都有一个空列表,您可以通过在列表中添加或删除棋子来简单地添加或删除棋子。

如果 "stacks" 实际上本身就是一个离散的游戏单元,那么将它们表示为自定义类型可能更有意义。在那种情况下(取决于游戏玩法的运作方式),您实际上可能会在每个棋盘数组元素中重新分配堆栈。我不知道……您的问题中没有足够的信息来深入探讨实施细节。