嗨,我几乎完成了这个程序,创建了类扫雷游戏。它编译和运行完美,游戏出现在GUI客户端程序中,但会出现一个问题。扫雷地雷的数量java
玩时,有时候1会出现,当它有多于1个相邻的矿时,或者是0的时候,当它周围的八个方格之一有一个地雷。任何帮助/建议非常感谢!
private void countAdjacentMines()
{
// TO DO: STUDENT CODE HERE
for (int i = 0; i < mineField.length; i++)
{
for (int j = 0; j < mineField.length; j++)
{
if (!(mineField[i][j].getIsMine()))
{
int count = 0;
for (int p = i -1; p <= i + 1; p++)
{
for (int q = j - 1; q < j + 1; q++)
{
if (0 <= p && p < mineField.length && 0 <= q && q < mineField.length)
{
if (mineField[p][q].getIsMine())
count++;
} // end if
} // end for
} // end for
mineField[i][j].setAdjacentMines(count);
} // end if
} // end for loop rows
} // end for loop columns
} // end countAdjacentMines
你为什么要检查getIsMine()两次?当你只需要计算邻近的矿井时,为什么你要在整个雷场上巡视?此代码看起来太破碎,指出任何特定的缺陷。 –
如果这是作业,请将其标记为(这不排除您的问题得到解答)。 –
你应该将你的第二个for循环更改为'for(int j = 0; j
Briguy37