Publicado el Deja un comentario

62. Lanzar un dado

int numero_aleatorio = random (int min, int max)

Descubrimos una nueva función imprescindible para los programadores de juegos, la función random(). Esta función nos devuelve un número entero al azar entre dos valores, el mínimo que hemos llamado min y el máximo + 1 que hemos llamado max. Ten en cuenta la peculiaridad de que al valor máximo que quieres obtener le tienes que sumar uno, no me preguntes por qué el programador de wiring nos hizo esta rareza, pero es así.

En el ejemplo de la diapositiva, si quieres obtener un valor entre 1 y 6, min debe valer 1 y max debe valer 6+1, de forma que llamaríamos a la función de esta forma:

dado = random(1,7);

randomSheed (int semilla)

¿Los números aleatorios son realmente aleatorios? Sí y no; desconocemos el algoritmo interno de la función random(), al menos no me he molestado en averiguarlo, pero confío en que lo haga bien. Lo curioso de la función random() es que «siempre» genera la misma secuencia de números aleatorios, podrás comprobarlo cuando termines esta lección, así que puedes simular una y otra vez la misma secuencia de lanzamientos de dados.

Si quieres que la secuencia sea siempre diferente desde el principio, Arduino tiene una función llamada randomSheed() que hace precisamente eso, sólo tienes que llamarla una vez en tu código, por eso te aconsejo que la pongas en el setup(), y digamos que «resetea» la aleatoriedad de la función random(). Tiene un argumento que hace que la secuencia aleatoria comience de determinada manera, así que este valor debería ser siempre diferente, así que la manera mejor de que este argumento al que he llamado «semilla» sea realmente aleatorio es que sea el resultado de leer un pin analógico que no estemos usando en la placa, en nuestro caso el pin A0, por eso llamaremos a la función randomSheed() de esta manera:

randomSeed(analogRead(0));

Recuerda que la lectura de un pin analógico que no tiene nada conectado es un valor incierto entre 0.0 y 5.0. En este caso el pin está electrónicamente «conectado» al aire y se comporta como una antena.

Sketch «Lanzar-un-dado.ino«

Te lo he dejado casi resuelto, sólo tienes que añadir en el código de la diapositiva lo que falte e implementar la función dibuja_display() que ya la tienes resuelta en las lecciones anteriores.

Esquema electrónico

Ya habrás descubierto que el esquema electrónico que necesitas es exactamente el mismo de la lección anterior, un display y un pulsador conectados a la placa Arduino. Ahora cada vez que pulses el pulsador en el display se mostrará un valor aleatorio entre 1 y 6.

¡Deja un comentario! Todas las críticas son bienvenidas.