namespace Trabalho.CampoMinado { public class CampoMinado { private enum StatusTipo { Aberto, //0 Vitoria, //1 GameOver //2 } private StatusTipo Status = StatusTipo.Aberto; // O tabuleiro inicia com 34 casas abertas. Ao abrir 71 casas(casas que não possuem bombas) o jogo é ganho. private int JogoTotalDeCasasAbertas = 34; private readonly string[,] Solucao = new string[9, 9] { { "0", "0", "0", "0", "0", "0", "0", "1", "*" }, { "0", "0", "0", "0", "0", "0", "0", "1", "1" }, { "1", "2", "2", "1", "0", "0", "0", "0", "0" }, { "1", "*", "*", "3", "2", "2", "1", "1", "0" }, { "1", "2", "3", "*", "*", "4", "*", "2", "1" }, { "0", "0", "1", "3", "*", "*", "3", "*", "2" }, { "0", "0", "0", "1", "2", "2", "2", "2", "*" }, { "0", "0", "0", "0", "0", "0", "0", "1", "1" }, { "0", "0", "0", "0", "0", "0", "0", "0", "0" } }; private string[,] Jogo = new string[9, 9] { { "0", "0", "0", "0", "0", "0", "0", "1", "-" }, { "0", "0", "0", "0", "0", "0", "0", "1", "1" }, { "1", "2", "2", "1", "0", "0", "0", "0", "0" }, { "-", "-", "-", "3", "2", "2", "1", "1", "0" }, { "-", "-", "-", "-", "-", "-", "-", "2", "1" }, { "-", "-", "-", "-", "-", "-", "-", "-", "-" }, { "-", "-", "-", "-", "-", "-", "-", "-", "-" }, { "-", "-", "-", "-", "-", "-", "-", "-", "-" }, { "-", "-", "-", "-", "-", "-", "-", "-", "-" } }; /// /// Status atual do jogo após você realizar uma abertura de uma casa. /// 0 - Jogo em aberto, continue procurando as casas que não possuem bombas; /// 1 - Vitoria, você encontrou todas as casas que não possui bomba; /// 2 - GameOver, você encontrou uma bomba. /// public int JogoStatus { get { return (int)Status; } } /// /// Retorna o tabuleiro atual em modo texto. /// public string Tabuleiro { get { var tabuleiro = ""; for (var x = 0; x < 9; x++) { for (var y = 0; y < 9; y++) { tabuleiro += Jogo[x, y]; } if (x != 8) { tabuleiro += "\r\n"; } } return tabuleiro; } } /// /// Método responsável por abrir uma casa do tabuleiro e alterar o status do jogo para: /// - GameOver(2) caso você abra uma bomba; /// - Aberto(0) caso ainda não tenha encontrado todas as casas que não possui uma bomba e você deve continuar procurando; /// - Vitoria (1) caso encontre todas as casas que não possuem bomba. /// Como nosso jogo é baseado em um tabuleiro 9 x 9, informe valores dentro deste intervalo. /// /// /// public void Abrir(int linha, int coluna) { if (linha >= 1 && linha <= 9 && coluna >= 1 && coluna <= 9) { linha--; coluna--; if (Status == StatusTipo.GameOver || Solucao[linha, coluna] == "*") { Jogo[linha, coluna] = Solucao[linha, coluna]; Status = StatusTipo.GameOver; } else { if (Jogo[linha, coluna] == "-" && Solucao[linha, coluna] != "0") { Jogo[linha, coluna] = Solucao[linha, coluna]; JogoTotalDeCasasAbertas++; } else if (Jogo[linha, coluna] == "-" && Solucao[linha, coluna] == "0") { if (Jogo[4, 0] == "-") { Jogo[4, 0] = Solucao[4, 0]; JogoTotalDeCasasAbertas++; } if (Jogo[4, 1] == "-") { Jogo[4, 1] = Solucao[4, 1]; JogoTotalDeCasasAbertas++; } if (Jogo[4, 2] == "-") { Jogo[4, 2] = Solucao[4, 2]; JogoTotalDeCasasAbertas++; } if (Jogo[5, 2] == "-") { Jogo[5, 2] = Solucao[5, 2]; JogoTotalDeCasasAbertas++; } if (Jogo[5, 3] == "-") { Jogo[5, 3] = Solucao[5, 3]; JogoTotalDeCasasAbertas++; } if (Jogo[6, 3] == "-") { Jogo[6, 3] = Solucao[6, 3]; JogoTotalDeCasasAbertas++; } if (Jogo[6, 4] == "-") { Jogo[6, 4] = Solucao[6, 4]; JogoTotalDeCasasAbertas++; } if (Jogo[6, 5] == "-") { Jogo[6, 5] = Solucao[6, 5]; JogoTotalDeCasasAbertas++; } if (Jogo[6, 6] == "-") { Jogo[6, 6] = Solucao[6, 6]; JogoTotalDeCasasAbertas++; } if (Jogo[6, 7] == "-") { Jogo[6, 7] = Solucao[6, 7]; JogoTotalDeCasasAbertas++; } if (Jogo[7, 7] == "-") { Jogo[7, 7] = Solucao[7, 7]; JogoTotalDeCasasAbertas++; } if (Jogo[7, 8] == "-") { Jogo[7, 8] = Solucao[7, 8]; JogoTotalDeCasasAbertas++; } Jogo[5, 0] = "0"; Jogo[5, 1] = "0"; Jogo[6, 0] = "0"; Jogo[6, 1] = "0"; Jogo[6, 2] = "0"; Jogo[7, 0] = "0"; Jogo[7, 1] = "0"; Jogo[7, 2] = "0"; Jogo[7, 3] = "0"; Jogo[7, 4] = "0"; Jogo[7, 5] = "0"; Jogo[7, 6] = "0"; Jogo[8, 0] = "0"; Jogo[8, 1] = "0"; Jogo[8, 2] = "0"; Jogo[8, 3] = "0"; Jogo[8, 4] = "0"; Jogo[8, 5] = "0"; Jogo[8, 6] = "0"; Jogo[8, 7] = "0"; Jogo[8, 8] = "0"; JogoTotalDeCasasAbertas += 21; } if (JogoTotalDeCasasAbertas == 71) { Status = StatusTipo.Vitoria; } } } } } }