M04A14 – Exercício 68 – Campo Minado – Avaliação

Home Fóruns Programação Básica M04A14 – Exercício 68 – Campo Minado – Avaliação

Visualizando 1 resposta da discussão
  • Autor
    Posts
    • #131285

      Olá tudo bem? Eu gostaria de uma avaliação no meu código, conseguir fazer sozinho e funciona perfeitamente, existe algo a ser comentado, estilo, comportamento etc? Achei que deu linhas demais comparado a correção.

      programa
      {
      inclua biblioteca Tipos –> t
      inclua biblioteca Util –> u

      funcao inicio()
      {
      escreva(“{ EXERCÍCIO 068 – Jogo Campo Minado }\n”)
      //matriz 5 x 5
      //cada vez que acerta um lugar que nao tem bomba eu ganho 2 pontos
      //tem 5 tentativas
      //tem 5 bombas

      //Declaração de variáveis
      cadeia teclado
      caracter mat [5][5] //Tamanho do campo minado
      inteiro L = 0, C = 0, soma = 0, tentativa = 0, pontos = 0, resultado = 1

      //Criação da matriz campo minado
      enquanto (soma < 5) { //Quantidade de bombas
      L = sorteia (0, u.numero_linhas(mat) – 1)
      C = sorteia (0, u.numero_colunas(mat) – 1)
      mat [L][C] = ‘B’ //Coloca ‘B’ onde tem bomba
      //Conta quantas bombas tem
      soma = 0
      para (L = 0; L < u.numero_linhas(mat); L ++) {
      para (C = 0; C < u.numero_colunas(mat); C ++) {
      se (mat [L][C] == ‘B’) {
      soma ++
      }
      }
      }
      //Coloca ‘-‘ onde não tem bomba
      para (L = 0; L < u.numero_linhas(mat); L++) {
      para (C = 0; C < u.numero_colunas(mat); C ++) {
      se (mat [L][C] != ‘B’) {
      mat [L][C] = ‘-‘
      }
      }
      }
      }

      //Escreve na tela o campo preenchido com ?
      escreva(” “)
      para (C = 0; C < u.numero_colunas(mat); C ++) { //Escreve o título da coluna
      escreva(C + 1 + ” “)
      }
      escreva(“\n\n”)

      para (L = 0; L < u.numero_linhas(mat); L ++) { //Escreve o título da linha
      para (C = 0; C < u.numero_colunas(mat); C ++) {
      se (C == 0) {
      escreva((L + 1) + ” “)
      }
      escreva(“?” + ” “)
      }
      escreva(“\n”)
      }

      //Tentativas
      escreva(“\n—————————————-\n”)
      para (tentativa = 0; tentativa < 5; tentativa ++) { //Número de tentativas
      escreva(“\nFaça sua jogada! (Tentativa ” + (tentativa + 1) + “)\n”)

      //Verificação se já tinha bomba
      enquanto (verdadeiro) {

      //Validação se é linha válida
      enquanto (verdadeiro) {
      escreva(“LINHA = “)
      leia(teclado)
      se (t.cadeia_e_inteiro(teclado, 10)) {
      L = t.cadeia_para_inteiro(teclado, 10) – 1
      se (L >= 0 e L <= u.numero_linhas(mat) – 1) {
      pare
      } senao {
      escreva(“<< Opção inválida >>\n”)
      }
      } senao {
      escreva(“<< Opção inválida >>\n”)
      }
      }

      //Validação se é coluna válida
      enquanto (verdadeiro) {
      escreva(“COLUNA = “)
      leia(teclado)
      se (t.cadeia_e_inteiro(teclado, 10)) {
      C = t.cadeia_para_inteiro(teclado, 10) – 1
      se (C >= 0 e C <= u.numero_colunas(mat) – 1) {
      pare
      } senao {
      escreva(“<< Opção inválida >>\n”)
      }
      } senao {
      escreva(“<< Opção inválida >>\n”)
      }
      }

      //Verifica se a coordenada já tinha sido escolhida
      se (mat [L][C] == ‘-‘ ou mat [L][C] == ‘B’) {
      pare
      } senao {
      escreva(“Esse já foi\n”)
      }
      }

      //Se acertou ou não na bomba
      se (mat [L][C] == ‘B’) {
      escreva(“\n—————————————-\n”)
      escreva(“\nTIRO ERRADO! Acertou uma bomba!\n”)
      tentativa ++
      mat [L][C] = ‘X’ //Marca com X ao acertar na bomba
      escreva(“\n—————————————-\n”)
      escreva(” “)
      para (C = 0; C < u.numero_colunas(mat); C ++) { //Escreve o título da coluna
      escreva(C + 1 + ” “)
      }
      escreva(“\n\n”)
      para (L = 0; L < u.numero_linhas(mat); L ++) {
      para (C = 0; C < u.numero_colunas(mat); C ++) {
      se (C == 0) { //Escreve o título da linha
      escreva((L + 1) + ” “)
      }
      escreva(mat [L][C] + ” “)
      }
      escreva(“\n”)
      }
      pare
      } senao {
      escreva(“\n—————————————-\n”)
      escreva(“\nATIROU CERTO! Não acertou nenhuma bomba!\n\n”)
      pontos += 2
      mat [L][C] = ‘V’ //Marca com V ao não acertar na bomba
      escreva(” “)
      para (C = 0; C < u.numero_colunas(mat); C ++) { //Escreve o título da coluna
      escreva(C + 1 + ” “)
      }
      escreva(“\n\n”)
      para (L = 0; L < u.numero_linhas(mat); L ++) {
      para (C = 0; C < u.numero_colunas(mat); C ++) {
      se (C == 0) { //Escreve o título da linha
      escreva((L + 1) + ” “)
      }
      se (mat [L][C] == ‘V’) {
      escreva(“V” + ” “)
      } senao {
      escreva(“?” + ” “)
      }
      }
      escreva(“\n”)
      }
      }
      }

      //Fim do jogo
      escreva(“\n—————————————-\n”)
      escreva(“\nFIM DO JOGO!\n”)

      //Verifica de ganhou ou perdeu
      para (L = 0; L < u.numero_linhas(mat); L ++) {
      para (C = 0; C < u.numero_colunas(mat); C ++) {
      se (mat [L][C] == ‘X’) {
      resultado = 0
      }
      }
      }
      se (resultado == 0) {
      escreva(“\nVocê perdeu”)
      } senao {
      escreva(“\nVocê ganhou”)
      }
      escreva(“\nVocê fez ” + pontos + ” pontos em ” + tentativa + ” tentativas”)

      }
      }

    • #131392
      Tutora Jessica
      Moderador

      Olá Thiago, sim ficou bem comprido o código, procure sempre soluções para tentar diminuir seu código, pois pensa no futuro um código muito grande, com muitas etapas, para encontrar um erro fica mais difícil.
      Nesse início o importante é você conseguir concluir o exercício e como foi dito: funcionando perfeitamente (isso é o mais importante).
      Te sugiro prestar bastante a atenção nas explicações dos exercícios para ajudar a começar a diminuir seu código, lembrando que o mais importante é entender todas as etapas do seu código (não é um erro estar com o código grande).

Visualizando 1 resposta da discussão
  • Você deve fazer login para responder a este tópico.