Hola a todos en esta oportunidad realizaremos un juego llamado el juego del 15 o rompecabezas en nuestro entorno Visual Studio 2013.
Una vez creado nuestro proyecto que en nuestro caso se llama JuegoBotones, empezamos a crear los atributos de la clase.
se crea un entero el cual se llama numerosAleatorios, con un vector de 15 posiciones, este nos permite definir el numero de casillas que vamos a utilizar, y se crea otro int, el cual nos va a mostrar mas adelante el numero de intentos y el tiempo que nos demoramos en resolver el rompecabezas
Luego de realizar los atributos, empezamos a definir los metodos que nos ayudaran a darle vida al juego, empezamos con el método que se muestra a continuación, el cual inicializa los componentes y atributos del juego
El metodo inicializarVectorAleatoriamente() permite generar numeros aleatorios cada vez que se inicie un nuevo juego con la funcion
Random y con el do while valida que el numero que se genero en una posicion del vector no se repita dentro del arreglo numerosAleatorios[] .
Este método guarda en un arreglo los botones del 1 - 15, y a cada uno de ellos asigna los valores que se generaron en numerosAleatorios[] con la función Random planteada en el método anterior
El método que les muestro a continuación valida que ha culminado correctamente el juego, cuando los botones se encuentren en la posición correcta, utilizamos la función MessageBox para mostrar al usuario cuanto tiempo tardo y el numero de intentos que hizo para resolver el rompecabezas
Para que se reproduzca un sonido cada vez que movemos una ficha, se realiza el siguiente método, recordando que en la carpeta recursos se debe guardar el audio que lo conlleva.
Este método intercambia las propiedades de los botones e invoca al metodo reproducirSonido() para que se ejecute al momento que el usuario hace clic
Este método evalúa cuando el usuario este haciendo clic en las esquinas del juego, evaluando si es posible generar un movimiento invocando al método cambiarpropiedades(), descrito anteriormente.
Este método evalúa cuando el usuario este haciendo clic en las laterales del juego, evaluando si es posible generar un movimiento invocando al método cambiarpropiedades(), descrito anteriormente.
Este método evalúa cuando el usuario este haciendo clic en la parte central del juego, evaluando si es posible generar un movimiento invocando al método cambiarpropiedades(), descrito anteriormente
Los siguientes métodos se realizan para que valide cuando se finalice el juego independientemente de que botón oprima.
Propiedades del boton Volver a Empezar que invoca los metodos inicializarVectorAleatoriamernte(), t fijarValorEnBotones() , para que cambie cada vez que se da clic en el boton.

Enlace de la página de la universidad libre al hacer clic en la imagen
Por ultimo lleva e imprime el tiempo en que el usuario se demoro realizando el rompecabezas
Espero este tutorial les sea de mucha ayuda lo hicimos en conjunto con mi compañero Fernando Chitiva, el tambien explica este procedimiento en su blog, para visitarlo pueden hacer
clic aqui