C语言扫雷代码中,以下统计雷区代码看不懂,求解释啊
for(Row=0;Row<N;Row++)for(Col=0;Col<N;Col++){if(mine[Row][Col]==9){if(Row>0&&mine[Row...
for(Row=0;Row<N;Row++)
for(Col=0;Col<N;Col++)
{
if(mine[Row][Col]==9)
{
if(Row>0&&mine[Row-1][Col]!=9)
mine[Row-1][Col]++;
if(Row<N-1&&mine[Row+1][Col]!=9)
mine[Row+1][Col]++;
if(Col>0&&mine[Row][Col-1]!=9)
mine[Row][Col-1]++;
if(Col<N-1&&mine[Row][Col+1]!=9)
mine[Row][Col+1]++;
if(Row>0&&Col>0&&mine[Row-1][Col-1]!=9)
mine[Row-1][Col-1]++;
if(Row>0&&Col<N-1&&mine[Row-1][Col+1]!=9)
mine[Row-1][Col+1]++;
if(Row<N-1&&Col>0&&mine[Row+1][Col-1]!=9)
mine[Row+1][Col-1]++;
if(Row<N-1&&Col<N-1&&mine[Row+1][Col+1]!=9)
mine[Row+1][Col+1]++;
}
代码功能是/*计算无地雷格子的周围的地雷数*/
前面两个for是遍历所有格子,然后if(mine[Row][Col]==9)是选出有雷的格子,这我就看不懂了。应该是选出无雷的格子,然后对周围进行统计的啊。
重点是后面那个if(Row>0&&mine[Row-1][Col]!=9) 这个条件判断看不懂,特别是与运算!! 展开
for(Col=0;Col<N;Col++)
{
if(mine[Row][Col]==9)
{
if(Row>0&&mine[Row-1][Col]!=9)
mine[Row-1][Col]++;
if(Row<N-1&&mine[Row+1][Col]!=9)
mine[Row+1][Col]++;
if(Col>0&&mine[Row][Col-1]!=9)
mine[Row][Col-1]++;
if(Col<N-1&&mine[Row][Col+1]!=9)
mine[Row][Col+1]++;
if(Row>0&&Col>0&&mine[Row-1][Col-1]!=9)
mine[Row-1][Col-1]++;
if(Row>0&&Col<N-1&&mine[Row-1][Col+1]!=9)
mine[Row-1][Col+1]++;
if(Row<N-1&&Col>0&&mine[Row+1][Col-1]!=9)
mine[Row+1][Col-1]++;
if(Row<N-1&&Col<N-1&&mine[Row+1][Col+1]!=9)
mine[Row+1][Col+1]++;
}
代码功能是/*计算无地雷格子的周围的地雷数*/
前面两个for是遍历所有格子,然后if(mine[Row][Col]==9)是选出有雷的格子,这我就看不懂了。应该是选出无雷的格子,然后对周围进行统计的啊。
重点是后面那个if(Row>0&&mine[Row-1][Col]!=9) 这个条件判断看不懂,特别是与运算!! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询