3/4/11

[Teach me!] Trucar un dado... virtual

Alguien me dijo una vez que quería aprender a programar. Bueno, realmente alguien no, bastantes alguien. Está bien. He pensado en algo.

Veréis, yo mejor que nadie puedo comprender a aquellos que sienten curiosidad y muchísimas ganas de iniciarse en el noble arte de la programación. Eso de toquetear el ordenador y ver cómo, de repente, puedes pasar de interactuar con cosas que otros han pensado a diseñarlas tú mismo y crear hasta los más descabellados productos de tu imaginación... lo que se siente no tiene precio, pero bueno, sois libres de quedaros con un excitante "¡qué guay!" también. A raíz de esto último, me veo en la obligación de comentaros que comprendo y, por supuesto, respeto que vuestro interés tenga límites. Después de todo, puede que juguetear con la programación os guste pero que entre vuestros planes no entre, ni remotamente, eso de que unos cochinos bits os vayan a dar de comer. Me hago cargo, my dears. Por ello, lo que os voy a contar no va a ser, ni mucho menos, lo que me cuentan a mí en clase. Voy a sacar mi tamiz mágico y os voy a servir los conocimientos que, pienso, son más interesantes.

Pero bueno, dejémonos de zarandajas y vayamos directos al grano. Para escribir en lenguaje Java, vamos a necesitar un programa llamado Eclipse que podéis bajar aquí (haciendo click en cualquiera de los enlaces, como por ejemplo el de Spain RedIRIS). Cuando os lo descarguéis (pesa 171MB, lo que un capítulo de anime aprox.) no hace falta que instaléis nada para poder usarlo. Simplemente, dado que os bajáis un archivo comprimido, habrá que descomprimirlo y buscar, dentro de la carpeta que se creará, el icono que inicia eclipse (una bolita redonda, morada y con tres rayitas blancas en el centro. Tenéis la chuleta en la imagen).


Bien, lo que viene a continuación lo relataré despacio:
Eclipse es un programa que nos permite escribir código y reproducirlo para ver qué ocurre. Sin embargo, para poder trabajar (antes de iniciarse nada) os va a pedir que seleccionéis un Workspace. ¿Que qué es un workspace? Fácil: tal como su nombre indica es un espacio de trabajo, un lugar en el que le pedís que os guarde todo lo que vais a ir haciendo. Crear un workspace es tan fácil como crear una nueva carpeta (donde queráis) y designarla con el nombre "Workspace Dado" o "Workspace Mastermind" o cualquier otro que describa brevemente de qué va a ir lo vayáis a crear. Después sólo tenéis que indicarle a Eclipse que queréis que ése sea el Workspace (Tenéis la chuleta en la imagen).

Para esta primera toma de contacto con Eclipse os he preparado yo misma el Workspace, con un código muy suculento que os enseñará a... trucar un dado. ¿Os gustan las trampas, queréis ganar una apuesta sin esfuerzo o, simplemente, gastarle una inocente broma a alguien? Bueno, pues con esto podréis, mis queridos y queridas pequeñuelas. Dado que el código que está escrito es bastante complejo para alguien que está empezando de cero, no os voy a hacer una gran descripción de las instrucciones que he escrito (me lo reservo para más adelante, cuando seáis unos pequeños expertos), pero sí que os voy a contar qué tenéis que tocar para que funcione y seáis capacez de trucar el dado. Podéis bajarlo de aquí (obtendréis una carpeta llamada Workspace Dado al descomprimir).

Una vez hayáis bajado el Workspace y le hayáis dicho a Eclipse que ahí es donde tiene que trabajar, el programa se iniciará y os encontraréis con algo como esto:



A la izquierda se encuentra el Package Explorer, que nos sirve para navegar por entre las cosas que tenemos creadas. De hecho, si le dais a la flechita que hay en "Dado" os enseñará un nuevo icono llamado "src" y éste os mostrará "implementacionDado" y, finalmente, éste os mostrará "Dado.java". Esto último se llama Clase. Las Clases en Java son, para que nos entendamos, algo así como moldes. En esta ocasión, yo he creado una clase, un molde, para un dado.
En el centro se encuentra el editor de código y, como podréis ver, tiene cosas escritas. Son las instrucciones para que funcione el programa. Podéis leerlas si gustáis, puesto que están comentadas. Todo aquello que empiece con una doble barra "//blablabla" se escribe en verde y significa que es un comentario. Lo mismo para las cosas que empiezan con "/**blablabla... */" y están resaltadas en azul. Los comentarios se refieren a la línea o líneas que van inmediatamente después y traducen a los humanos lo que éstas mandan que se haga.
Arriba del todo se encuentran dos barras: la de herramientas y bajo ella una barra que contiene una serie de iconos. De momento el único que utilizaremos será el que parece un play, esto es, el icono del círculo verde con un triángulo en su interior. Servirá para que el código se ejecute.
Por último, abajo del todo, justo donde acaba el editor central, se encuentra la consola. La consola es la ventanita que nos mostrará lo que ocurre cuando ejecuta el código. Si está bien implementado, mostrará lo que le hemos pedido. Si no... bueno, sino pasaría otra cosa, pero el código funciona, así que ya comentaremos otro día que sucedería.


Bien, y ahora os voy a enseñar cómo hacer que funcione este cacharro. Veréis, lo único que tenéis que hacerle es darle al botoncito de play y contestar a dos preguntitas. Para contestar a las preguntas tenéis que pinchar en la consola y escribir. Lo que el programa necesita que le suministréis son números (números así: 3, NO así: tres). La primera pregunta os requerirá el número de caras que tiene que tener vuestro dado. La segunda se refiere al número de dados que queréis tirar. Por ejemplo, en la oca, (si mal no recuerdo) creo que se tiran dos dados. Aquí teneís un ejemplo visual de lo que habría salido si yo hubiese tirado un dado de diez caras siete veces:



Y ahora... vamos a trucarlo :D

Sin embargo, my dears, os advierto de que tenéis que ser coherentes. Si queréis trucar un dado, tenéis que tener en cuenta de cuántas caras va a ser y cuál es el resultado que queréis que salga. Si lo que buscáis es, ajem, putear a alguien... pues, obviamente, querréis que siempre le salga el número más bajo. Y el número más bajo de un dado es el 1, no el cero, que os conozco. Si lo que queréis es favoreceros con una tirada perfecta, pues lo mismo pero al revés. El máximo número que podrá salir será el máximo de caras que tenga. Pero bueno, que me estoy enrrollando, ¿qué tenéis que tocar? ÚNICAMENTE ESTO, LO QUE OS HE PUESTO AQUÍ EN ROJO:

private static int generaNumeroAleatorio(int unNumero ) {
/*Generamos un número aleatorio cuyo máximo valor se corresponda con el parámetro recibido y le pedimos que se quede sólo con la parte entera.*/
       double f=Math.random()*(unNumero+1);
        int a=(int)f;
        //Evaluamos si el número generado es cero. De ser así lo cambia.
        while(a==0){
            f=Math.random()*(unNumero+1);
            a=(int)f;
        }
        return a;
    }



Bien, lo que está en rojo es una condición a evaluar. Ahora mismo significa que, cuando el programa genere un número aleatorio y éste resulte ser un cero, que lo descarte y saque otro número aleatorio (los dados no tienen cero). Pero podéis decirle que, mientras que el número que se haya generado no sea el que vosotros queréis, vuelva a generar otro número. ¿Cómo se escribe esto en Java? Así:

a!=6 Esto significa que mientras el número que se saque sea diferente de seis, vuelva a generar otro número.
a!=10 Esto significa lo mismo pero poniéndole en vez de un seis un diez.
a!=1 Y, esto último, exactamente lo mismo pero con un uno.

Es decir, que tenéis que poner a!= seguido del número que queráis sacar. ¿Fácil, verdad? Por cierto, por si no encontráis dónde está situada esa parte del código, os diré que está en la línea 42, más o menos en la mitad.

Bueno y para terminar, comentaros que hay infinidad de maneras de trucar un dado. Nosotros lo hemos hecho para que nos salga un sólo número todo el rato... pero claro, si tirasemos muchos dados sería fácil que nos descubrieran, ¿no? Por ello también podemos pedirle al programa que descarte siempre los unos, o que sólo saque los números de un determinado intervalo, o etc, etc... todo lo que esas retorcidas cabecitas vuestras puedan pensar. Y eso es todo, ahora os toca a vosotros. ¡Manipulad el dado y sentíos los dueños del universo!

2 comentarios:

Charlie D. dijo...

Vale, Mew, das miedo, lo reconozco.

Pero eres buena en lo tuyo, y no puedo menos que sentirme admirada... jujujujujuju.

Nada se te resiste, ¿eh? Por lo visto sabes manejar bien esos dedos a la hora de escribir códigos.











Y por cierto, ni si te ocurra. ¬¬

Mew dijo...

xDDDDDDDDDDDDDDD Yes, my master. Pero sólo por curiosidad... ¿qué se siente al saber que te tengo en mis manos? ¿Mejor aún, entre mis dedos? =3

Está bien, está bien... para que te quedes tranquila, te confesaré que no podría =( No por sentimentalismos ni nada de eso, simplemente es que todavía no sé tanto como para hackearte la página. Y mira que me jode eso de no poder hacer experimentos, pero, chica, es lo que hay. Esta batalla es tuya, pero todavía queda mucha guerra por delante, no te confíes...

Y, por favor, sé manejar perfectamente bien mis dedos para muchas otras que van más allá de la programación, hmpf! ¿Y a qué demonios viene eso de que doy miedo? ¡Pero si soy adorable, por el amor de Dios!

Jajaja, ya lo creo que sí...