- 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" },
- { "-", "-", "-", "-", "-", "-", "-", "-", "-" },
- { "-", "-", "-", "-", "-", "-", "-", "-", "-" },
- { "-", "-", "-", "-", "-", "-", "-", "-", "-" },
- { "-", "-", "-", "-", "-", "-", "-", "-", "-" }
- };
- /// <summary>
- /// 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.
- /// </summary>
- public int JogoStatus
- {
- get
- {
- return (int)Status;
- }
- }
- /// <summary>
- /// Retorna o tabuleiro atual em modo texto.
- /// </summary>
- 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;
- }
- }
- /// <summary>
- /// 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.
- /// </summary>
- /// <param name="linha"></param>
- /// <param name="coluna"></param>
- 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;
- }
- }
- }
- }
- }
- }