数独棋盘生成程序行列重复数字问题求助
数独棋盘生成程序调试求助
我正在开发一款生成游戏用完整数独棋盘的程序,目前已实现3×3小网格内无重复数字,但大网格的行和列仍存在重复数字。程序运行问题截图:
代码说明
- gameGrid是包含9个数组的二维数组,每个数组含9个元素
- btnGrid是gameGrid的镜像,用于GUI按钮
- gridXX指代数独棋盘上的各个3×3小网格
我认为问题出在代码的行与列检查部分,附上程序代码如下,恳请各位提供调试帮助:
private void generateBtn_Click(object sender, EventArgs e){ Random r = new Random(); //Row and Col max is one less as arrays start at 0 int rowMax = 9; int colMax = 9; for (int i = 0; i < rowMax; i++) { for (int j = 0; j < colMax; j++) { bool checking = false; bool foundSame = false; while (checking == false) { foundSame = false; string num = r.Next(1, 10).ToString(); Debug.WriteLine(num); //check row for (int k = 0; k < rowMax; k++) { if (gameGrid[i,k] == num) { foundSame = true; break; } if (gameGrid[i,k] == "") { break; } } //check col for (int k = 0; k < colMax; k++) { if (gameGrid[k,j] == num) { foundSame = true; break; } } //check square if (grid00.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid00, num); } if (grid10.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid10, num); } if (grid20.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid20, num); } if (grid01.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid01, num); } if (grid11.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid11, num); } if (grid21.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid21, num); } if (grid02.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid02, num); } if (grid12.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid12, num); } if (grid22.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid22, num); } if (foundSame == false) { checking = true; gameGrid[i,j] = num; btnGrid[i,j].Text = num; } } } } }
内容的提问来源于stack exchange,提问作者EpicAshman
相关产品推荐
相关产品推荐

