Loteriaprimitiva PDF
Loteriaprimitiva PDF
Loteriaprimitiva PDF
DISEÑO DE LA PANTALLA
En el diseño de la pantalla usamos 3 componentes fundamentales: etiquetas, botones y campos de texto. Los
campos de texto (azul) para que el usuario escriba su apuesta. Las etiquetas y campos de texto de la apuesta
del usuario están dispuestas en formato tabla (disposición tabular).
Los números premiados (rosa y verde) se mostrarán en etiquetas colocadas en disposición horizontal. La
etiqueta roja corresponde al complementario.
Al final, tenemos una etiqueta de mensajes para el usuario en el que se le indica que escriba sus números de
la suerte antes de pulsar el botón “SORTEAR” y después del sorteo se le indica los aciertos que ha tenido.
Hay un elemento no visible, Archivo 1, que vamos a utilizar para subir desde nuestro ordenador los 49
números del sorteo, que habremos generado con un editor de texto (archivo .txt de Notepad)
1
Autora: Nieves López Álvarez Esta licencia se difunde bajo una licencia CC-BY-NC
Una de las maneras que tenemos de subir datos múltiples desde el ordenador a APP Inventor para ser
utilizados en un proyecto, es mediante un archivo .txt. Podríamos introducirlos a mano directamente cuando
programemos (es otra de las maneras) pero es más rápido y cómodo subirlos como archivos .txt (texto) o
archivos .csv (hojas de cálculo). En este caso, vamos a usar un archivo .txt.
Con un programa editor de textos ( NotePad por ejemplo), escribimos los 49 números separados por comas
en una fila y guardamos el archivo con formato .txt (loteria.txt). Subimos este archivo a APP Inventor desde
el menú de medios. Ya lo tenemos preparado para trabajar con él.
PROGRAMACIÓN
Al abrirse la pantalla, deben inicializarse las variables y listas que vamos a utilizar. Necesitamos 3 listas. Una
para guardar los números que se van a sortear (1 al 49). La segunda lista para guardar los números que ha
apostado el usuario ( provenientes de los campos de texto de la apuesta). La tercera lista será para guardar las
etiquetas donde vamos a mostrar al usuario la combinación ganadora. (etiqueta 1 – etiqueta 6).
Vamos a usar 2 variables auxiliares. La primera es para realizar el sorteo. Guardaremos en ella el índice
elegido al azar que corresponderá con cada número premiado en la lista números. La segunda variable es
para ayudarnos a contar los aciertos en la comprobación de la apuesta del usuario. Cada vez que el número
premiado esté en la lista de las apuestas del usuario, nuestra variable de aciertos sumará 1. Así, al final del
sorteo sabremos cuantos aciertos ha tenido el usuario.
2
Autora: Nieves López Álvarez Esta licencia se difunde bajo una licencia CC-BY-NC
( en el archivo .aia que adjunto, si pulsas en los interrogantes, sale una explicación de cada bloque)
Al pulsar el botón “SORTEAR”, debemos hacer no visible el mensaje que da instrucciones al usuario para
escribir su apuesta.
Ponemos la variable de aciertos a cero. Esto hay que hacerlo cada vez que pulsemos “SORTEAR” porque
antes de pulsar, la variable “aciertos” tendrá guardado el número de aciertos del sorteo anterior.
Finalmente, rellenamos el archivo 1 con los datos que hemos subido desde nuestro ordenador en el archivo
loteria.txt. OBSERVA LA MANERA DE ESCRIBIR ESTE ARCHIVO CON // ANTES DEL
NOMBRE. (Tanto los archivos .csv como los .tzt deben ser llamados escribiendo las // antes del nombre del
archivo).
El resto de acciones del sorteo no comienzan hasta que el archivo 1 haya sido cargado con los datos
correspondientes.
3
Autora: Nieves López Álvarez Esta licencia se difunde bajo una licencia CC-BY-NC
Veamos pues, como han quedado nuestras 3 listas preparadas para realizar el sorteo:
Nuestro sorteo consiste en que para cada etiqueta de la lista “global etiqueta”, vamos a seleccionar al
azar un número de la lista “global numeros” y lo vamos a poner como texto de esa etiqueta. Esto hay que
repetirlo con las 6 etiquetas para sacar los 6 números premiados.
Ahora bien, cada vez que elijamos un número de la lista “global numeros”, debemos borrarlo de la lista,
porque no se puede repetir 2 veces el mismo número premiado.
¿Cómo sabemos el indice del número elegido al azar, para poder borrarlo a continuación?
Para solucionar este problema, tenemos nuestra variable “indice”. Al principio del sorteo, vamos a guardar
en esa variable un número al azar comprendido entre 1 y la longitud de lista (número total de elementos que
hay en ese momento en la lista), y ese va a ser el índice del número premiado y posteriormente borrado para
que no se repita.
4
Autora: Nieves López Álvarez Esta licencia se difunde bajo una licencia CC-BY-NC
¿SI?
Sumamos un acierto a la
variable aciertos.
5
Autora: Nieves López Álvarez Esta licencia se difunde bajo una licencia CC-BY-NC
Para finalizar nuestro sorteo, debemos extraer el complementario y colocarlo en su etiqueta. No hemos
colocado esta etiqueta del complementario junto al resto de etiquetas, porque en este juego de la lotería
primitiva, los aciertos se cuentan separados del complementario ( ejemplo: 4 aciertos y el complementario).
Si hubieramos colocado la etiqueta del complementario en la lista junto al resto de etiquetas, en caso de estar
premiado el complementario, tendríamos un error en el calculo de aciertos finales.
Por esa razón, el complementario lo exrtraemos al final del sorteo y no sumamos un acierto más si está en la
lista de apuestas.
Una vez finalizado el sorteo, sólo queda informar al usuario de los resultados. Para ello, ponemos visible la
etiqueta de mensajes. Este mensaje será diferente si hemos acertado o fallado el complementario. Por eso
usamos un condicional que comprueba primero si el complementario está en la lista de apuesta del usuario.
Si el complementario ha sido acertado (está en la lista “global apuesta”), el mensaje será una cadena de texto
con los aciertos logrados (que están guardados en la variable “global aciertos” y el complementario. La frase
final será “Has tenido X aciertos y el complementario”.
6
Autora: Nieves López Álvarez Esta licencia se difunde bajo una licencia CC-BY-NC
Aquí tienes todo este bloque final completo para que puedas analizarlo: