private void StartGame() { gameOver = false; newGameLabel.Hidden = true; game = new MineSweeperGame (NUMCOLS, NUMROWS, NUMMINES, bDoQuestioned, (MineSweeperGame g, bool forced) => { Point p = TileForTag (pressedTag); UIButton lastPressed = tiles [p.X, p.Y]; if (!forced && g.isGameOver()) { gameOver = true; cheating = false; newGameLabel.Hidden = false; if (g.wasGameWon ()) { winSound.PlaySystemSound (); } else { bombSound.PlaySystemSound (); } } ShowScore(g); for (int col = 0; col < NUMCOLS; col++) { for (int row = 0; row < NUMROWS; row++) { UIButton tile = tiles [col, row]; //Console.WriteLine("Tile = {0:X} LastPressed = {1:X}", tile, lastPressed); int value = g.GetTileValue(col, row); MineSweeperGame.DrawType draw = g.GetDrawType(col, row); switch (draw) { case MineSweeperGame.DrawType.Covered: if (cheating || gameOver) { if (value == 0xFFFF) { if (cheating && !gameOver) { tile.SetImage(cheatTile, UIControlState.Normal); } else { tile.SetImage(mineTile, UIControlState.Normal); } } else { tile.SetImage(coveredTile, UIControlState.Normal); } } else { tile.SetImage(coveredTile, UIControlState.Normal); } break; case MineSweeperGame.DrawType.Flagged: if (cheating && value == 0xFFFF) { tile.SetImage(flaggedCheatTile, UIControlState.Normal); } else if (gameOver && value == 0xFFFF) { tile.SetImage(mineTile, UIControlState.Normal); } else { tile.SetImage(flaggedTile, UIControlState.Normal); } break; case MineSweeperGame.DrawType.Questioned: if (cheating && value == 0xFFFF) { tile.SetImage(questionCheatTile, UIControlState.Normal); } else { tile.SetImage(questionTile, UIControlState.Normal); } break; case MineSweeperGame.DrawType.Value: tile.SetImage(numberTiles [value], UIControlState.Normal); break; case MineSweeperGame.DrawType.Mine: if (gameOver && tile == lastPressed) { tile.SetImage(redmineTile, UIControlState.Normal); } else { tile.SetImage(mineTile, UIControlState.Normal); } break; } } } return true; }); }
private void ShowScore(MineSweeperGame g) { int currentScore = g.GetCurrentScore (); if (currentScore > highScore) { highScore = currentScore; preferences.Put(HIGHSCOREKEY, highScore.ToString()); } currentScoreLabel.Text = currentScore.ToString (); highScoreLabel.Text = highScore.ToString (); }