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.";
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;
/* 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();
¿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 Por:llops
llops :
[Pues quizá tenga algún bug, porque yo he puesto un 100 y me dice que tiene que ser mayor
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 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
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é 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? 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