Comunidad de diseño web y desarrollo en internet

Ejemplo de juego tipo "Adivina el Número" con Actionscript 3

En este Tip crearemos un programa en el cual deberás averiguar un número que es generado aleatoriamente.

Para hacerlo, se te darán dos simples pistas: si el numero que tu escribes es mayor o menor al pensado por el código.

Primeramente crearemos nuestra interface, yo he creado una así:



Donde al primer campo de texto de arriba hacia abajo le daremos el nombre de advisor, este campo se encargará de avisar si el número introducido por el usuario es mayor o menor así como de dar a conocer si se ha ganado o perdido.
Al segundo campo lo llamaremos triesField, que se encargara de contar los intentos que hemos utilizado.

El tercer campo es un campo de entrada al que le daremos el nombre de inputFIeld.

Por último creamos un botón y lo nombramos checkButton.

Ahora vamos con el código, el cual he colocado en un archivo .as:

Código :

/* Creamos variables de inicio */

var generatedNumber:int = generateNumber(); //El número generado por la función
var tries:int = 10; //Los intentos al iniciar
var game:Boolean = true; //Indica que el juego está ejecutandose

inputField.restrict = "0-9"; //Restringimos el campo de entrada a sólo números

checkButton.addEventListener(MouseEvent.CLICK, compareNumbers); //Le asignamos al botón la función para comparar los números

/* Esta es la función que generará un número entre el 0 y 100 */

function generateNumber():int
{
   return Math.floor(Math.random() * 101);
}

/*Esta función compara los numeros para probar si son mayores menores o iguales*/

function compareNumbers(event:MouseEvent):void
{
   /* Primero checamos que se haya escrito en el campo de entrada y que el número escrito no sea mayor a 100 */
   
   if(inputField.text == "" || new int(inputField.text) > 100)
   {
      advisor.text = "Introduce un número desde 0 hasta 100.";
      
      return;
   }
   
   /* Guardamos el número introducido por el usuario */
   
   var userInput:int = new int(inputField.text);
   
   /* Checamos el número introducido con el generado */
   
   if(userInput < generatedNumber)
   {
      advisor.text = "El número introducido es menor.";
      
      tries--;
      
      checkTries();
   }
   
   else if(userInput > generatedNumber)
   {
      advisor.text = "El número introducido es mayor.";
      
      tries--;
      
      checkTries();
   }
   
   else if(userInput == generatedNumber)
   {
      gameOver();
      
      tries--;
      
      checkTries();
      
      advisor.text = "Ganaste! el número es " + generatedNumber + " pulsa Espacio para jugar.";
      triesField.text = "Utilizaste " + (10 - tries) + " oportunidades.";
   }
}

/* Esta función se encarga de manejar las oportunidades */

function checkTries():void
{
   triesField.text = "Tienes " + tries + " oportunidades.";
   
   if(tries == 1)
   {
      triesField.text = "Tienes " + tries + " oportunidad.";
   }
   
   else if(tries == 0)
   {
      advisor.text = "Perdiste! el número era " + generatedNumber + " pulsa Espacio para jugar.";
      
      gameOver();
   }
}
/* Retiramos el evento al botón cuando se ha perdido y establecemos que el juego ha terminado */
function gameOver():void
{
   game = false;
   
   checkButton.removeEventListener(MouseEvent.CLICK, compareNumbers);
}

/* Si se presiona Espacio y el juego ha terminado ( ya sea por ganar o perder ) se inicializan las variables y se borran los campos dinamicos */
function restart(event:KeyboardEvent):void
{
   if(event.keyCode == Keyboard.SPACE && !game)
   {
      tries = 10;
      generatedNumber = generateNumber();
      
      checkTries();
      
      advisor.text = "";
      inputField.text = "";
      
      checkButton.addEventListener(MouseEvent.CLICK, compareNumbers);
      
      game = true;
   }
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, restart);


Este es el programa funcionando:

Cristalab y Mejorando.la te traen el Curso Profesional de Node.js y Javascript. Online, avanzado, con diploma de certificación y clases en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate