如何解决循环遍历 C# 中的网格按钮以计算黑色方块
我在这里做错了很多事情,我连续 7 个小时试图解决这个问题,陷入了死胡同。我正在尝试用 wpf c# 制作一个 picross 游戏。我有每一行的标签和一个 10x10 的网格,每个单元格中都有按钮,你可以点击这些按钮变成黑色。我想也许我可以做单独的方法来检查行是否正确或列是否正确,我现在正在处理行部分。它看起来像这样:
public string rowValue(int r) { //finds the value of a row,converts it to a string to see if it matches one of the labels below
int a = 0; //how many of the first chunk are there
string result = "";
foreach (System.Windows.Controls.Button myBtn in GrdPuzzle.Children) {
if (Grid.GetRow(myBtn) == r)
{
if (myBtn.Background == Brushes.Black)
{
a++;
}
}
}
result = a.ToString();
return result;
}
private void playGame() {
gridInit();
Random r = new Random();
randomnum = r.Next(1,5);
switch (randomnum) //randomize the puzzle
{
case 1://bear
r1.Content = "1 2";
r2.Content = "6";
r3.Content = "7";
r4.Content = "7";
r5.Content = "6";
r6.Content = "8";
r7.Content = "8";
r8.Content = "7 1";
r9.Content = "10";
r10.Content = "2 2";
c1.Content = "1";
c2.Content = "3" + Environment.NewLine + "1" + Environment.NewLine + "3";
c3.Content = "10";
c4.Content = "8";
c5.Content = "8";
c6.Content = "9";
c7.Content = "9";
c8.Content = "8";
c9.Content = "2" + Environment.NewLine + "2";
c10.Content = "3";
break;
case 2://fox
r1.Content = "2 1";
r2.Content = "5";
r3.Content = "3 5";
r4.Content = "3 5";
r5.Content = "1 7";
r6.Content = "1 7";
r7.Content = "6";
r8.Content = "7";
r9.Content = "6";
r10.Content = "1 2";
c1.Content = "1" + Environment.NewLine + "1";
c2.Content = "2" + Environment.NewLine + "3";
c3.Content = "3" + Environment.NewLine + "3";
c4.Content = "7";
c5.Content = "5";
c6.Content = "8";
c7.Content = "10";
c8.Content = "6" + Environment.NewLine + "3";
c9.Content = "5";
c10.Content = "4" + Environment.NewLine + "1";
break;
case 3://dog
r1.Content = "2";
r2.Content = "2 4";
r3.Content = "9";
r4.Content = "2 1 2";
r5.Content = "8";
r6.Content = "5 2";
r7.Content = "8";
r8.Content = "9";
r9.Content = "9";
r10.Content = "7";
c1.Content = "1" + Environment.NewLine + "8";
c2.Content = "10";
c3.Content = "2" + Environment.NewLine + "6";
c4.Content = "8";
c5.Content = "2" + Environment.NewLine + "6";
c6.Content = "2" + Environment.NewLine + "1" + Environment.NewLine + "4";
c7.Content = "2" + Environment.NewLine + "6";
c8.Content = "8";
c9.Content = "2" + Environment.NewLine + "2";
c10.Content = "0";
break;
case 4://squirrel
r1.Content = "1 2";
r2.Content = "2 3";
r3.Content = "9";
r4.Content = "8 1";
r5.Content = "8 1";
r6.Content = "6 2";
r7.Content = "9";
r8.Content = "5";
r9.Content = "5";
r10.Content = "4";
c1.Content = "2" + Environment.NewLine + "1";
c2.Content = "7";
c3.Content = "6" + Environment.NewLine + "1";
c4.Content = "8";
c5.Content = "8";
c6.Content = "8";
c7.Content = "8";
c8.Content = "5" + Environment.NewLine + "3";
c9.Content = "3" + Environment.NewLine + "2";
c10.Content = "4";
break;
}//end switch
var rLabels = new List<Label> { r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 };
var cLabels = new List<Label> { c1,c2,c3,c4,c5,c6,c7,c8,c9,c10 };
foreach (var Label in rLabels)
{
string aa = (Label.Name.ToString()).Substring(1);
int bb = Convert.ToInt32(aa);
if (Label.Content.Equals(rowValue(bb - 1)))
{
Label.Foreground = Brushes.Green;
}
else {
Label.Foreground = Brushes.Blue;
}
}//end foreach loop for rows
foreach (var Label in cLabels)
{
if (Label.Content.Equals(colValue()))
{
Label.Foreground = Brushes.Green;
}
}//end foreach loop for columns
}
它应该遍历所选拼图的标签数组,如果正确,则将一行与 rowValue 方法匹配,但它根本没有检测到任何正确的东西。如果我没有足够的意义,我很抱歉,因为我一整天都在做这件事,而且我太累了,只想解决这个问题。我试过使用调试工具,但我不太了解它,因为我不熟悉这个并且不擅长它,我试图简化/评论部分,我已经上过youtube,我已经用谷歌搜索过,我已经做了几乎所有的事情。如果有人能救我,我会比世界更感激它
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。