目录
扫雷游戏中是否能够获胜,其实获胜的算法很容易计算。计算思路如下。
获胜的条件其实就是将所有的雷排除干净,并且将非雷的区域全部点击完毕。
判断方格属性,如果方格的属性全部是雷,那么就可以认为获胜的话,这样会有漏洞,用户可以通过尝试的方法,在雷区不断的标注小旗,这样就可以获胜了。
错误算法
如下,统计用户确定(isOk)的方格为雷的数量。这样判断会有一个问题那就是用户盲标记,其实并没有进行游戏也算胜利。
bool QGameWidget::isWin()
{
int sum = 0;
for (int i = 0; i < m_cells.size(); i++) {
if (m_cells.at(i).leiStatus == isLei &&
m_cells.at(i).showStatus == isOk) {
sum++;
}
}
if (sum == 10) {
emit sigGameWin();
return true;
} else {
return false;
}
}