Advertisement
RosanePaiva

desafio_final.html

Oct 15th, 2014
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 4.45 KB | None | 0 0
  1. <meta charset="utf-8">
  2. <script>
  3. var sorteados_computador = [];
  4. var sorteados_usuario = [];
  5. var resultado = [];
  6. var reDigits = /^\d{1,2}$/;
  7. var num_1_a_60;
  8. var i = 0;
  9. var j = 0;
  10.  
  11. /**
  12.  * Põe uma linha em branco na tela.
  13.  */
  14. var pula_linha = function(){
  15.     document.write("<br>");
  16. };
  17. /**
  18.  * Mostra um texto e acrescenta uma linha em branco.
  19.  *
  20.  * @param frase, para ser mostrada na tela para o usuário.
  21.  */
  22. var mostra = function(frase){
  23.     document.write(frase);
  24.     pula_linha();
  25.     pula_linha();
  26. };
  27. /**
  28.  * Valida as entradas (total de 6) fornecidas pelo usuário.
  29.  *
  30.  * @param numero, repassado para a função validar o mesmo.
  31.  *
  32.  * @return 0 se entrada for um número válido (entre 1 e 60), -1 se entrada não for um número,
  33.  * -2 se entrada for um número menor que 1, -3 se a entrada for um número maior que 60.
  34.  *
  35.  * @note Se o número decimal contiver vírgula ou ponto (ex.: 1,931 ou 1.931) a função o
  36.  * detectará como inválido.
  37.  */
  38. var valida = function(numero) {
  39.     if (reDigits.test(numero)) {
  40.         if (numero < 1) {
  41.             return -2;
  42.        
  43.         } else if (numero > 60) {
  44.             return -3;
  45.        
  46.         }
  47.         return 0;
  48.  
  49.     } else {
  50.         return -1; 
  51.  
  52.     }
  53. };
  54.  /**
  55.  * Mostra mensagem gerada após a validação dos dados fornecidos pelo usuário e pula uma linha.
  56.  *
  57.  * @param retorno, dado para comparação que determina a exibição da mensagem.
  58.  */
  59. var mostra_resultado = function(retorno) {
  60.     if (-1 === retorno) {
  61.         mostra("Somente números inteiros são válidos!");
  62.     }
  63.    
  64.     if (-2 === retorno) {
  65.         mostra("Somente números inteiros MAIORES <br> que 0 são válidos!");
  66.     }
  67.    
  68.     if (-3 === retorno) {
  69.         mostra("Somente números inteiros MENORES <br> que 61 são válidos!");
  70.     }
  71. };
  72. /**
  73.  * Evita que número repetido seja colocado no array sorteados_usuario.
  74.  *
  75.  * @param numero, passado pelo usuário para comparação com os números do array sorteados_usuario
  76.  *
  77.  * @return false, caso o número fornecido pelo usuário já esteja no array sorteados_usuario.
  78.  */
  79.  var elimina_repetidos = function(numero) {
  80.     for (var i = 0; i < sorteados_usuario.length; i++) {
  81.        if (parseInt(sorteados_usuario[i]) === parseInt(numero)) {
  82.            return false;
  83.        }
  84.    }
  85. };
  86. /**
  87. * Compara todos os números sorteados pelo usuário com os sorteados pelo computador e os
  88. * números que coincidirem são colocados no array resultado.
  89. */
  90. var compara_numeros = function() {
  91.    for (var i = 0; i < sorteados_usuario.length; i++) {
  92.        for (var j = 0; j < sorteados_computador.length; j++) {
  93.             if (parseInt(sorteados_usuario[i]) === parseInt(sorteados_computador[j])) {
  94.                 resultado.push(sorteados_usuario[i]);
  95.             }
  96.         }
  97.    }
  98.     console.log("Números acertados pelo usuário: ");
  99.     console.log(resultado);
  100. };
  101.  
  102. mostra("<b>Escolha 6 números para ganhar na loteria!</b>");
  103. pula_linha();
  104. /**
  105.  * Sorteia números aleatórios e coloca no array sorteados_computador.
  106.  */
  107. while (j < 6) {
  108.     var num_1_a_60 = Math.round( ( ( Math.random() * 59 ) + 1 ) );
  109.     var retorno = elimina_repetidos(num_1_a_60);
  110.        
  111.     if (retorno !== false) {
  112.         sorteados_computador[j] = num_1_a_60;
  113.         j++;
  114.     }
  115. }
  116. /**
  117. * Pede um número ao usuário 6 vezes e coloca no array sorteados_usuario depois de validar e
  118. * eliminar números repetidos.
  119. *
  120. * @note mostra mensagens de erro quando necessário.
  121. */
  122. while (i < 6) {
  123.     var numero = prompt("Informe um número inteiro entre 1 e 60: ");
  124.     var retorno = valida(numero);
  125.     var RET = elimina_repetidos(numero);
  126.    
  127.     if ((0 === retorno) && (RET === false)) {
  128.         mostra("Numero já escolhido!");
  129.    
  130.     }
  131.    
  132.     if ((0 === retorno) && (RET !== false)) {
  133.         sorteados_usuario.push(numero);
  134.         i++;
  135.        
  136.     } else {
  137.         mostra_resultado(retorno);
  138.        
  139.     }
  140. }
  141. compara_numeros();
  142. /**
  143. * Mostra resultado da loteria ao usuário.
  144. */
  145. mostra("<b>Números sorteados pelo usuário: </b>" + sorteados_usuario);
  146. mostra("<b>Números sorteados pelo computador : </b>" + sorteados_computador);
  147.  
  148. if (resultado.length < 1) {
  149.     mostra("<b>Que pena! Você não acertou nenhum número.</b>");
  150.  
  151. } else if (resultado.length === 1) {
  152.     mostra("<b>Você acertou o: </b>" + resultado);
  153.  
  154. } else if (resultado.length === 6) {
  155.     mostra("<b>Parabéns, sortudo! Você acertou todos os números: </b>" + sorteados_computador);
  156.    
  157. } else {
  158.     mostra("<b>Números que você acertou: </b>" + resultado);
  159.  
  160. }
  161. console.log("Sorteados pelo computador: ");
  162. console.log(sorteados_computador);
  163. console.log("Sorteados pelo usuário: ");
  164. console.log(sorteados_usuario);
  165. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement