domingo, 10 de julio de 2016

El juego de la última piedra.

Hay X número de piedras, en cada ronda tendrás que quitar una dos o tres, la máquina hará lo mismo.
El jugador que quite la última piedra pierde.

Para jugar: https://magnitopic.github.io/edujs/piedras/

El código de JavaScript
  function maquina(n){  
     m=(n-1)%4 //número de piedas que quita la máquina  
     if (m==0){  
         m=(Math.floor(Math.random()*3)+1);  
     }  
     return m;  
 }  
 document.write('<h1>'+"Este es el juego de"+'</h1>');  
 document.write('<h1>'+"LA ÚLTIMA PIEDRA"+'</h1>');  
 document.write("Usted dispone de un conjunto de piedras iniciales."+'<br>');  
 document.write("Juega contra la máquina"+'<br>');  
 document.write("En cada tirada, tanto usted como la máquina,"+'<br>');  
 document.write("pueden quirar una piedra, dos piedras o tres piedras."+'<br>');  
 document.write("Es obligatorio quitar como mínimo 1 pieda y como máximo 3."+'<br>');  
 document.write("Comienza jugando usted y el último que quita pierde."+'<br>');  
 var n=Math.floor(Math.random()*12)+10 //número inicial de piedras  
 document.write("Número inicial de piedras: "+n+'<br>');  
 var x,m,juega=true;  
 do {  
     do {  
         x = prompt ("Quedan "+n+"\nDime cuantas piedas quitas: 1, 2 o 3");  
     }  
     while (x<1 || x>3)  
     n=n-x;  
     document.write("Usted ha quitado "+x+" piedas. Quedan "+n+'<br>');  
     if (n<=0){  
         juega=false;  
         document.write('<h2>'+"La máquina gana."+'</h2>');  
     } else {  
         m=maquina(n);  
         n=n-m;  
         document.write("La máquina ha quitado "+m+" piedas. Quedan "+n+'<br>');  
         if (n<=0){  
             juega=false;  
             document.write('<h2>'+"Usted gana."+'</h2>');  
         }  
     }  
 }  
 while (juega);   
El código de HTML

  <!DOCTYPE html>   
  <html>   
  <head>   
  <meta charset="UTF-8">   
  <title>juego de la última piedra en JavaScript</title>   
  <script type="text/javascript" src="piedras.js">   
  </script>   
  </head>   
  <body>   
  </body>   
  </html>  

sábado, 9 de julio de 2016

Adivina el número en JavaScript

Este juego consiste en que la máquina piensa un número secreto entre 1 y 100 y el usuario debe adivinarlo.

El código:
 <!DOCTYPE html>  
 <html>  
      <head>  
           <meta charset="utf-8"/>  
           <title>El numero secreto</title>  
      </head>  
      <body>  
           <h1>Este es el juego del numero secreto</h1>  
           <p>El ordenador ha elegido un numero aleatorio del 1-100 y tu tendras que adivinarlo, mucha suerte.</p>  
           <input id="M" value="50" ><br>  
           <button type="button" onclick="myFunction()">Jugar</button>  
           <div id="txt"></div>  
           <script type="text/javascript">  
                var secreto = Math.floor(Math.random()*100)+1; //El numero aleatorio se queda fuera de la funcion porque si no cada vez que le diesemos al boton se cambiaría el valor de "secreto"  
                function myFunction(){  
                     var x = document.getElementById("M").value;  
                     if (x==secreto){  
                          document.getElementById("txt").innerHTML = "Has adivinado el numero secreto, el numero era "+secreto+". Para jugar otra vez recarga la pagina.";  
                     }else if (x > secreto) {  
                          document.getElementById("txt").innerHTML = "Intenta con un numero mas pequeño.";  
                     }else if (x < secreto) {  
                          document.getElementById("txt").innerHTML = "Intenta con un numero mas grande.";  
                     }  
                }  
           </script>  
      </body>  
 </html>  

La pagina para el juego: https://magnitopic.github.io/edujs/adivina

jueves, 7 de julio de 2016

Generación de números primos en JavaScript

Disponemos de un archivo HTML denominado primos1.html que llama a un archivo primos1.js donde se encuentra el código en JavaScript para generar los números primos: 2, 3, 5, 7, 11, 13, ... hasta el que queramos.

El archivo primos1.html es el siguiente.

 <!DOCTYPE html>  
 <html>  
 <head>  
 <meta charset="UTF-8">  
 <title>números primos en JavaScript</title>  
 <script type="text/javascript" src="primos1.js">  
 </script>  
 </head>  
 <body>  
 <p>Generación de números primos hasta un millón.</p>  
 </body>  
 </html>  


El archivo primos1.js es el siguiente.

 document.write('<h1>'+'Generación de números primos hasta 1.000.000'+'</h1>');   
  var texto=2 + "<br>";       //el 2 es primo, y todos los demás pares no lo son  
  for (var i=3;i<=1000000;i=i+2){  //tratamos solo los impares   
    var primo=true;        //inicialmente un número es primo hasta que no se demuestre lo contrario   
    for(j=3;j<=Math.sqrt(i);j=j+2){ //probamos hasta llegar a la raiz cuadrada de i   
      if (i%j==0){        //si el módulo es cero es que es divisible y por tanto no es primo  
        primo=false;   
        break;   
      }   
    }   
    if (primo) {texto += i + "<br>";}   
  }   
  document.write(texto);  

El resultado tarda en aparecer unos segundos ya que se generan los primos hasta un millón. Puedes ver el resultado en el siguiente enlace.

Con punto de miles

Ahora queremos obtener el listado de los números primos hasta 1.111.111 pero con separador de miles. Es código es análogo al anterior con la novedad de que hemos introducido una función que nos va poniendo los puntos de separación para los miles.

El archivo primos2.html es el siguiente.

 <!DOCTYPE html>  
 <html>  
 <head>  
 <meta charset="UTF-8">  
 <title>números primos en JavaScript</title>  
 <script type="text/javascript" src="primos2.js">  
 </script>  
 </head>  
 <body>  
 <p>Generación de números primos.</p>  
 </body>  
 </html>  


El archivo primos2.js es el siguiente.


 function formatNmb(nNmb){   
   var sRes = "";   
   for (var j, i = nNmb.length - 1, j = 0; i >= 0; i--, j++)   
    sRes = nNmb.charAt(i) + ((j > 0) && (j % 3 == 0)? ".": "") + sRes;   
   return sRes;   
   }   
 document.write('<h1>'+'Generación de números primos hasta 1.111.111'+'</h1>');  
 var texto=2 + "<br>";  
 var primo  
 for (i=3;i<=1111111;i=i+2){  
     primo=true  
     for(j=3;j<=Math.sqrt(i);j=j+2){  
         if (i%j===0){  
             primo=false;  
             break;  
         }  
     }  
     if (primo) {  
     texto += formatNmb(i.toString()) + "<br>";  
     }  
 }  
 document.write(texto);  

El resultado tarda en aparecer unos segundos ya que se generan los primos hasta un poco más de 1.000.000. Puedes ver el resultado en el siguiente enlace.