Facebook
From Tacky Gibbon, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 130
  1. namespace Trabalho.CampoMinado
  2. {
  3.     public class CampoMinado
  4.     {
  5.         private enum StatusTipo
  6.         {
  7.             Aberto, //0
  8.             Vitoria, //1
  9.             GameOver //2
  10.         }
  11.  
  12.         private StatusTipo Status = StatusTipo.Aberto;
  13.  
  14.         // O tabuleiro inicia com 34 casas abertas. Ao abrir 71 casas(casas que não possuem bombas) o jogo é ganho.
  15.         private int JogoTotalDeCasasAbertas = 34;
  16.  
  17.         private readonly string[,] Solucao = new string[9, 9] {
  18.             { "0", "0", "0", "0", "0", "0", "0", "1", "*" },
  19.             { "0", "0", "0", "0", "0", "0", "0", "1", "1" },
  20.             { "1", "2", "2", "1", "0", "0", "0", "0", "0" },
  21.             { "1", "*", "*", "3", "2", "2", "1", "1", "0" },
  22.             { "1", "2", "3", "*", "*", "4", "*", "2", "1" },
  23.             { "0", "0", "1", "3", "*", "*", "3", "*", "2" },
  24.             { "0", "0", "0", "1", "2", "2", "2", "2", "*" },
  25.             { "0", "0", "0", "0", "0", "0", "0", "1", "1" },
  26.             { "0", "0", "0", "0", "0", "0", "0", "0", "0" }
  27.         };
  28.  
  29.         private string[,] Jogo = new string[9, 9] {
  30.             { "0", "0", "0", "0", "0", "0", "0", "1", "-" },
  31.             { "0", "0", "0", "0", "0", "0", "0", "1", "1" },
  32.             { "1", "2", "2", "1", "0", "0", "0", "0", "0" },
  33.             { "-", "-", "-", "3", "2", "2", "1", "1", "0" },
  34.             { "-", "-", "-", "-", "-", "-", "-", "2", "1" },
  35.             { "-", "-", "-", "-", "-", "-", "-", "-", "-" },
  36.             { "-", "-", "-", "-", "-", "-", "-", "-", "-" },
  37.             { "-", "-", "-", "-", "-", "-", "-", "-", "-" },
  38.             { "-", "-", "-", "-", "-", "-", "-", "-", "-" }
  39.         };
  40.  
  41.         /// <summary>
  42.         /// Status atual do jogo após você realizar uma abertura de uma casa.
  43.         /// 0 - Jogo em aberto, continue procurando as casas que não possuem bombas;
  44.         /// 1 - Vitoria, você encontrou todas as casas que não possui bomba;
  45.         /// 2 - GameOver, você encontrou uma bomba.
  46.         /// </summary>
  47.         public int JogoStatus
  48.         {
  49.             get
  50.             {
  51.                 return (int)Status;
  52.             }
  53.         }
  54.  
  55.         /// <summary>
  56.         /// Retorna o tabuleiro atual em modo texto.
  57.         /// </summary>
  58.         public string Tabuleiro
  59.         {
  60.             get
  61.             {
  62.                 var tabuleiro = "";
  63.  
  64.                 for (var x = 0; x < 9; x++)
  65.                 {
  66.                     for (var y = 0; y < 9; y++)
  67.                     {
  68.                         tabuleiro += Jogo[x, y];
  69.                     }
  70.  
  71.                     if (x != 8)
  72.                     {
  73.                         tabuleiro += "\r\n";
  74.                     }
  75.                 }
  76.  
  77.                 return tabuleiro;
  78.             }
  79.         }
  80.  
  81.         /// <summary>
  82.         /// Método responsável por abrir uma casa do tabuleiro e alterar o status do jogo para:
  83.         /// - GameOver(2) caso você abra uma bomba;
  84.         /// - Aberto(0) caso ainda não tenha encontrado todas as casas que não possui uma bomba e você deve continuar procurando;
  85.         /// - Vitoria (1) caso encontre todas as casas que não possuem bomba.
  86.         /// Como nosso jogo é baseado em um tabuleiro 9 x 9, informe valores dentro deste intervalo.
  87.         /// </summary>
  88.         /// <param name="linha"></param>
  89.         /// <param name="coluna"></param>
  90.         public void Abrir(int linha, int coluna)
  91.         {
  92.             if (linha >= 1 && linha <= 9 && coluna >= 1 && coluna <= 9)
  93.             {
  94.                 linha--;
  95.                 coluna--;
  96.  
  97.                 if (Status == StatusTipo.GameOver || Solucao[linha, coluna] == "*")
  98.                 {
  99.                     Jogo[linha, coluna] = Solucao[linha, coluna];
  100.                     Status = StatusTipo.GameOver;
  101.                 }
  102.                 else
  103.                 {
  104.                     if (Jogo[linha, coluna] == "-" && Solucao[linha, coluna] != "0")
  105.                     {
  106.                         Jogo[linha, coluna] = Solucao[linha, coluna];
  107.                         JogoTotalDeCasasAbertas++;
  108.                     }
  109.                     else if (Jogo[linha, coluna] == "-" && Solucao[linha, coluna] == "0")
  110.                     {
  111.                         if (Jogo[4, 0] == "-")
  112.                         {
  113.                             Jogo[4, 0] = Solucao[4, 0];
  114.                             JogoTotalDeCasasAbertas++;
  115.                         }
  116.  
  117.                         if (Jogo[4, 1] == "-")
  118.                         {
  119.                             Jogo[4, 1] = Solucao[4, 1];
  120.                             JogoTotalDeCasasAbertas++;
  121.                         }
  122.  
  123.                         if (Jogo[4, 2] == "-")
  124.                         {
  125.                             Jogo[4, 2] = Solucao[4, 2];
  126.                             JogoTotalDeCasasAbertas++;
  127.                         }
  128.  
  129.                         if (Jogo[5, 2] == "-")
  130.                         {
  131.                             Jogo[5, 2] = Solucao[5, 2];
  132.                             JogoTotalDeCasasAbertas++;
  133.                         }
  134.  
  135.                         if (Jogo[5, 3] == "-")
  136.                         {
  137.                             Jogo[5, 3] = Solucao[5, 3];
  138.                             JogoTotalDeCasasAbertas++;
  139.                         }
  140.  
  141.                         if (Jogo[6, 3] == "-")
  142.                         {
  143.                             Jogo[6, 3] = Solucao[6, 3];
  144.                             JogoTotalDeCasasAbertas++;
  145.                         }
  146.  
  147.                         if (Jogo[6, 4] == "-")
  148.                         {
  149.                             Jogo[6, 4] = Solucao[6, 4];
  150.                             JogoTotalDeCasasAbertas++;
  151.                         }
  152.  
  153.                         if (Jogo[6, 5] == "-")
  154.                         {
  155.                             Jogo[6, 5] = Solucao[6, 5];
  156.                             JogoTotalDeCasasAbertas++;
  157.                         }
  158.  
  159.                         if (Jogo[6, 6] == "-")
  160.                         {
  161.                             Jogo[6, 6] = Solucao[6, 6];
  162.                             JogoTotalDeCasasAbertas++;
  163.                         }
  164.  
  165.                         if (Jogo[6, 7] == "-")
  166.                         {
  167.                             Jogo[6, 7] = Solucao[6, 7];
  168.                             JogoTotalDeCasasAbertas++;
  169.                         }
  170.  
  171.                         if (Jogo[7, 7] == "-")
  172.                         {
  173.                             Jogo[7, 7] = Solucao[7, 7];
  174.                             JogoTotalDeCasasAbertas++;
  175.                         }
  176.  
  177.                         if (Jogo[7, 8] == "-")
  178.                         {
  179.                             Jogo[7, 8] = Solucao[7, 8];
  180.                             JogoTotalDeCasasAbertas++;
  181.                         }
  182.  
  183.                         Jogo[5, 0] = "0";
  184.                         Jogo[5, 1] = "0";
  185.                         Jogo[6, 0] = "0";
  186.                         Jogo[6, 1] = "0";
  187.                         Jogo[6, 2] = "0";
  188.                         Jogo[7, 0] = "0";
  189.                         Jogo[7, 1] = "0";
  190.                         Jogo[7, 2] = "0";
  191.                         Jogo[7, 3] = "0";
  192.                         Jogo[7, 4] = "0";
  193.                         Jogo[7, 5] = "0";
  194.                         Jogo[7, 6] = "0";
  195.                         Jogo[8, 0] = "0";
  196.                         Jogo[8, 1] = "0";
  197.                         Jogo[8, 2] = "0";
  198.                         Jogo[8, 3] = "0";
  199.                         Jogo[8, 4] = "0";
  200.                         Jogo[8, 5] = "0";
  201.                         Jogo[8, 6] = "0";
  202.                         Jogo[8, 7] = "0";
  203.                         Jogo[8, 8] = "0";
  204.                         JogoTotalDeCasasAbertas += 21;
  205.                     }
  206.  
  207.                     if (JogoTotalDeCasasAbertas == 71)
  208.                     {
  209.                         Status = StatusTipo.Vitoria;
  210.                     }
  211.                 }
  212.             }
  213.         }
  214.     }
  215. }
  216.