Ant*_*ara 5 c# foreach enums for-loop minesweeper
我需要弄清楚如何在数组中的枚举上获取元素.基本上,我有一个9x9按钮网格.我有两个包含这些值的多维数组.一个人的名字(如果名字是43),它意味着5个向下,4个跨越(因为它们从0开始).该名称也与数组中的ELEMENT相同.
string[,] playingField = new string[9, 9];
enum CellType { Empty, Flag, Hidden, Bomb }
CellType[,] cells = new CellType[9, 9];
Run Code Online (Sandbox Code Playgroud)
按钮的名称保存在playingField中.
每个细胞的状态保存在细胞中(如果它是空的,有炸弹等)
感谢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)
Run Code Online (Sandbox Code Playgroud)
(请原谅我可怕的转换.我稍后会解决这个问题;))以及上面的内容是什么让我看看你点击的单元格下面是否有炸弹.
但是,我现在需要做的,基本上与此相反.在上面我知道我要比较的元素名称,因为元素名称与按钮名称相同.不过,现在我需要做的是通过获取是所有元素的元素查找元素名称(按钮名称)Bomb
在cells
.
我不知道怎么做,我试过:
foreach (CellType Bomb in cells)
{
Run Code Online (Sandbox Code Playgroud)
但它没有做任何事情.我需要在'cells'中找到所有'bomb'并返回元素名称.这样我可以使用该元素名称,将其转换为字符串,并使用我的StringToButton
方法创建对按钮的引用.
这是我目前正在做的方式,作为参考,并帮助您更好地理解,但请注意这不是我想继续这样做的方式.我想按照上面提到的方式来做:)
foreach (string i in minedNodes)
{
Button buttonName = StringToButton(Convert.ToString(i));
buttonName.Image = new Bitmap(dir + "mine.png");
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
如果您正在寻找一种遍历单元格数组的方法,您可以这样做:
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()
);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以保存对与您所需值匹配的 cells[oi, ii] 内容的引用列表。