扫雷游戏制作过程(CSharp 描述):第八节、整体完善
这一节我们将介绍结束游戏的方法,以及一些整体方面的完善。首先考虑失败的情况,它会将所有的地雷都显示出来。我们新建一个 GameLost 函数: private void GameLost() { for(int i = 1; i<= nWidth; i++) { for(int j = 1; j<= nHeight; j++) { if(pMine[i, j] == -1 && (pState[i, j] == 0 || pState[i, j] == 3)) // 未点开或者标记为问号的雷 { pState[i, j] = 1; // 点开该地雷 } } } } 在游戏结束的地方调用 GameLost 函数,因为我们上一节中讲述的游戏结束都是失败的情况: if(nFlagCnt == nSysCnt || nFlagCnt + nDoubtCnt == nSysCnt) // 打开九宫格 { bool bFlag = OpenMine(MouseFocus.X, MouseFocus.Y); if(!bFlag) // 周围有地雷 { // 结束游戏 GameLost(); } } if(pMine[MouseFocus.X, MouseFocus.Y] != -1 && pState[MouseFocus.X, MouseFocus.Y] == 0) { dfs(MouseFocus.X, MouseFocus.Y); } else { // 地雷,游戏结束 GameLost(); } 我们发现游戏结束的时候,虽然所有的格子都打开了,但是并...