Cristalab

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

Por: Carloz.Yanez + 25.12.2007

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:

Etiquetas actionscript_3

Comentarios | Enviar un comentario
JaJa... Muy bueno y Entretenido...
Felicidades Carlos.Yanez !!!...
Por: M@U
Buen ejemplo Carloz Thumbs up
Por: Zguillez
¿Soy el único al que le funciona mal? Una vez introduzco un número y me dice si es mayor o menor, no vuelve a cambiar el mensaje.
Por: Rafa_blog

Rafa_blog :

¿Soy el único al que le funciona mal? Una vez introduzco un número y me dice si es mayor o menor, no vuelve a cambiar el mensaje.

El juego trata de adivinar el numero que a "elegido" la máquina aleatoriamente...
Has de ir cambiando el número introducido en función de que te diga si es mayor o menor, hasta acertar con el correcto.
Por: Zguillez

Rafa_blog :

¿Soy el único al que le funciona mal? Una vez introduzco un número y me dice si es mayor o menor, no vuelve a cambiar el mensaje.


Pues quizá tenga algún bug, porque yo he puesto un 100 y me dice que tiene que ser mayor Sonrisa
Por: llops

llops :

[Pues quizá tenga algún bug, porque yo he puesto un 100 y me dice que tiene que ser mayor Sonrisa

Creo que te confundes... El mensaje que sale hace referencia al número introducido, es decir si pones 100 te dice que 100 es mayor al número correcto con lo que has de poner un número menor...
Por: Zguillez
Ok, ya entiendo, sorry Lengua Hoy estaba ofuscado, aun así la mente me sigue obligando a verlo al revés...
Por: Rafa_blog_blog
JaJa... Le he adivinado al primer intento !!!...
Genial...
Por: M@U
esta muy bueno Carlos, felicidades Bien
Por: eldervaz
No me resultó... cualquier ayuda en bienvenida

Gracias
Por: Nominal_blog
10 intentos es demasiado.
Como maximo se necesitan 7 intentos siguiendo una simple estrategia(8 si se trata del 0)
Por: cards_blog
en 5 gané Riendo
Por: master_of_puppetz
que pailas esa maquina es pura mentira
Por: adriana_blog

adriana_blog :

que pailas esa maquina es pura mentira

cual maquina? Confundido
Por: master_of_puppetz
Hace un par de días hice un tip que incluía un binary search (¿dejar el link sería spam?). Es interesante como se pueden halllar rápidamente valores numéricos en una lista ordenada.

Por cierto, eligiendo los números inteligentemente se puede lograr en 7 (es más, a menos que adivinemos, ese es el número exacto de preguntas que necesitamos).

Además, aunque parezca mentira, con las 10 oportunidades que tenemos podemos adivinar un número aleatorio entre 0 y 1024.
Por: HernanRivas
Totalmente cierto HernanRivas, lo he comprobado.

Háganlo ustedes mismos:


Espero sus comentarios.
Por: Carloz.Yanez
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.