5

我需要弄清楚如何在数组中的枚举上获取元素。基本上,我有一个 9x9 按钮网格。我有两个包含这些值的多维数组。一个包含他们的名字(如果名字是 43),这意味着 5 向下,4 横(因为它们从 0 开始)。该名称也与数组中自身的 ELEMENT 相同。

string[,] playingField = new string[9, 9];
enum CellType { Empty, Flag, Hidden, Bomb }
CellType[,] cells = new CellType[9, 9];

按钮的名称保存在playField 中。
每个单元格的状态都保存在单元格中(如果它是空的,有炸弹等)

感谢 AbdElRaheim 提供上述内容。我这样做的原因是我可以获得一个按钮名称(与元素名称完全相同),这在两个数组中都是相同的。
例如:我可以这样做:

string dim1 = Convert.ToString(btn.Name[0]);
string dim2 = Convert.ToString(btn.Name[1]);
if (cells[Convert.ToInt32(dim1), Convert.ToInt32(dim2)] == CellType.Bomb)

(请原谅我糟糕的转换。我稍后会修复它;))上面的作用是让我查看您单击的单元格下方是否有炸弹。

但是,我现在需要做的,基本上与此相反。在上面我知道我想要比较它的元素名称,因为元素名称与按钮名称相同。Bomb但是,现在我需要做的是通过获取cells.

我不知道该怎么做,我试过:

foreach (CellType Bomb in cells)
{

但它什么也没做。我需要在“单元格”中找到所有“炸弹”并返回元素名称。这样我就可以使用该元素名称,将其转换为字符串,并使用我的StringToButton方法创建对按钮的引用。

这是我目前正在这样做的方式,供参考,并帮助您更好地理解,但请注意这不是我想继续这样做的方式。我想按照我上面询问的方式来做:)

foreach (string i in minedNodes)
{
    Button buttonName = StringToButton(Convert.ToString(i));
    buttonName.Image = new Bitmap(dir + "mine.png");
}

谢谢!

4

1 回答 1

2

如果您正在寻找一种遍历单元格数组的方法,您可以这样做:

int oi, ii;
for (oi = 0; oi <= cells.GetUpperBound(0); ++oi)
{
    for (ii = 0; ii <= cells.GetUpperBound(1); ++ii)
    {
        System.Diagnostics.Debug.WriteLine(
            "Checking: " + oi + "," + ii + " : " + cells[oi, ii].ToString()
        );
    }
}

然后,您可以保存对符合您所需值的单元格 [oi, ii] 内容的引用列表。

于 2012-10-31T14:42:47.087 回答