Windows Phone :Tips para Crear un app Generador de números de lotería (aleatorio)

Hola a todos! en este post les daré unos mega tips para lograr el reto del Generador de números de lotería creado por la iniciativa “¿Quién se le mide?

 

De qué trata el reto? pueden consultar todos los detalles necesarios del ”Reto #2 Generador de números de lotería” aquí:

 

3073.cabezote-3810

 

El reto enumera las siguientes características que analizaremos una a una con tips al respecto.

  • Que se pueda configurar la cantidad de posiciones que desea generar, el rango de cada posición y si pueden repetirse los números de las posiciones.
  • Que se pueda configurar si genera serie y el rango de la serie.
    • Ejemplo: generar 6 posiciones, rango 1-45, no repetir, sin serie:17 34 45 1 23 6
    • Ejemplo: generar 4 posiciones, rango 1-9, repetir, con serie 1-20: 9 3 3 1 Serie 12
  • Que se pueda configurar el orden de salida: Ascendente, Descendente, Aleatorio
  • Que se pueda configurar sonido (para cuando se muestre el resultado)
  • Que el resultado se genere al agitar el teléfono
  • Que el numero obtenido aparezca en caracteres grandes
  • Que maneje el cambio de posición del dispositivo de horizontal a vertical
  • Que se pueda configurar si guardar números anteriores generados

Que se pueda configurar la cantidad de posiciones que desea generar, el rango de cada posición y si pueden repetirse los números de las posiciones.

Que se pueda configurar si genera serie y el rango de la serie.

No, no me quedo mal, estos dos puntos los resuelves de la misma manera utilizando la clase Random, creas un objeto Random asegurándote de que la semilla aleatoria sea siempre diferente, con este pequeño bloque de código puedes hacerte una idea de como se hace.

 
var randomizer = new Random(System.Environment.TickCount);
var numero = randomizer.Next(1,46);

 

Que se pueda configurar el orden de salida: Ascendente, Descendente, Aleatorio

Cuando tengas el listado de números aleatorios asegúrate de acumularlos en una colección, si el usuario quiere ver la ´lista de números organizada de manera descendente bastara con que la ordenes de la siguiente forma:

 
numLoteria.Sort();
numLoteria.Reverse();

Recuerden que deben agregar Linq en los namespaces referidos así

 using System.Linq;

Que se pueda configurar sonido (para cuando se muestre el resultado)

Lo más difícil de esta parte es conseguir los sonidos… pero bueno acá esta uno de tantos sitios de donde puedes descargarlos con licencia creative commons.

FreeSound

Para reproducir los sonidos basta con usar la clase BackgroundAudioPlayer, aquí tienes un ejemplo:

How to play background audio for Windows Phone

 

Que el resultado se genere al agitar el teléfono

Como detectar que se ha sacudido el teléfono? algún día escribiré un artículo solo hablando de ello, por ahora les recomiendo que utilicen esta dll:

ShakeGestures.dll

la agregan como referencia al proyecto y la hacen funcionar de la siguiente forma:

 public void InitializeShakeDetection()
{
    //registrar el evento
    ShakeGesturesHelper.Instance.ShakeGesture += new EventHandler(Instance_ShakeGesture);
    //establecer movimienos para considerarlo sacudida
    ShakeGesturesHelper.Instance.MinimumRequiredMovesForShake = 5;
    //iniciar la detección
    ShakeGesturesHelper.Instance.Active = true;
}

private void Instance_ShakeGesture(object sender, ShakeGestureEventArgs e)
{
    //hacer algo
}

 

Que el numero obtenido aparezca en caracteres grandes

No necesitas ayuda para establecer un tamaño de fuente, o si? Guiño

Que maneje el cambio de posición del dispositivo de horizontal a vertical

Para hacerlo debes modificar este atributo en cada page de app:

 SupportedOrientations="PortraitOrLandscape" 

Esto habilitara que tu app gire por completo al cambiar la orientación del phone.

portrait-and-landscape11

Sin embargo es conveniente personalizarlo un poco más, porqué? porque los elementos seguramente no quedaran en su posición y proporciones ideales, para lidiar con este requerimiento debemos hacer uso de un control Grid y un OrientationChanged event handler, este nos permitirá modificar la posición de los controles dentro del gid según conveniencia propia, o incluso cambiar tamaños de fuentes u objetos.

En este artículo tienes más información al respecto:

Quickstart: Screen orientation for Windows Phone

 

Que se pueda configurar si guardar números anteriores generados

Se debe poder establecer , por medio de un ToggleSwitch , si al generarse números aleatorios se pueden o no salir números repetidos,

así que si la opción esta habilitada cada vez que generes un número aleatorio debes revisar que este no haya sido generado previamente en la lanzada actual.

Para poder utilizar el ToggleSwitch debes descargar el “Windows Phone Toolkit

toggle_v034

Desde Visual Studio (2012 o superior) vas a las referencias del proyecto das clic derecho y seleccionas “Manage Nuget Packages”

 

image3

Allí buscamos el Windows Phone Toolkit

image8

Y lo instalamos.

Ahora vamos al toolbox

image12

damos clic derecho “Add Tab” y creamos uno llamado WP Toolkit. abrimos ese tab, damos clic derecho y seleccionamos “Choose Ítems”

image16

En el recuadro que se despliega buscamos la ubicación del proyecto y una vez allí vamos a packages\WPtoolkit\lib\sl4-windowsphone71 puede que el path no sea exacto al que he colocado aquí pero lo hallaras fácilmente.

Allí encontramos la librería “Microsoft.Phone.Controls.Toolkit.dll” y la abrimos.

El resultado es que ahora nos aparecen muchos más controles para usar incljuyendo el ToggleSwitch:

 

image19

Manos a la obra!

Tiempo de crear!

Anímense a comentar  y preguntar que con gusto les ayudaré.