martes, 7 de abril de 2015

PICAS Y FIJAS CON VISUAL STUDIO 2013






Buenas Noches a todos, en esta entrada nueva en mi blog les contare como realizar un juego que mas de uno de ustedes han jugado llamado PICAS Y FIJAS. Como lo muestra la imagen el juego se trata de adivinar el número de su oponente(en nuestro caso la maquina), que da el número de aciertos. Si las cifras son coincidentes en sus posiciones correctas, son "fijas"(o bulls), si en diferentes posiciones, son "picas"(o cows). Ejemplo: 

El número secreto: 4271 
Intento del oponente: 1234 

Respuesta: una fija y dos picas. (La fija es "2", las picas son "4" y "1".) 


Para realizar este juego abrimos nuestro entorno de Desarrollo Visual Studio 2013 y creamos un Nuevo Proyecto con plantilla Visual C# haciendo clic en Aplicacion de Windows Forms .




y crean el entorno grafico que deseen, nosotros junto a mi compañero fernando chitiva y jeisson muñoz decidimos utilizar un label para controlar y mostrar el cronometro,para que el usuario seleccione el nivel lo hicimos con varios PictureBox iniciando que adivine dos cifras hasta 10 cifras, 10TextBox donde el usuario digita los numeros del juego y otros 10TexBox detras de 10PictureBox donde estan ocultas las cifras generadas aleatoriamente, un Texbox grande donde muestra cuantas Picas y Fijas llevan en el juego, 5 botones "Intentar, "Descifrar", "Reiniciar Juego", "Reiniciar Nivel" , un timer el cual toma el tiempo en que el jugador se demora resolviendo el uego y por ultimo una imagen con los integrantes que desarrollaos este juego y la unioversidad a la que pertenecemos.




una vez realizado el entorno grafico, procedemos a inicializar las variables del proyecto para lo cual vamos a utilizar las siguientes:



Realizamos un método constructor que inicia los componentes y los atributos de nuestro juego.





En el siguiente método vamos a cargar los arreglos del atributo el cual se agrupan dentro de una sola propiedad para hacer mas fácil nuestra programación.




El metodo que muestro a continuacion manipula todas las propiedades de los objetos y de las variables declaradas en el Form para que se visualicen los atributos la recorres nuestro juego



Continuamos con nuestro desarrollo creando un método que obtenga como parámetro el nivel seleccionado, es decir, el número de cifras con las cuales desea jugar el usuario y acondicione nuestro juego a dicho nivel o número de cifras manipulando nuevamente las propiedades de algunos de los objetos de nuestro Form, como las cajas de texto donde irán las cifras, los botones, el cronómetro, los intentos, el acumulador de resultados, etc (es aquí donde iniciamos nuestro Timer).


Creamos un metodo que obtenga el nivel que el usuario desea jugar y a su vez condicione el jugo al nivel que el usuario escogió, manipulando y ajustando las propiedades de los objetos del Form, como los TextBox, Picture Box y demas propiedades que diseñamos al inicio del juego.

El metodo que vamos a implementar a continuacion es muy importante ya que no permite que el jugador inserte letras no caracteres especiales al juego, haciendo mas seguro el juego.


Luego de parametrizar el juego, vamos a darle la propiedad al Textbox que solo permita ingresar un carater, es decir un numero, para ello nos situamos en el primer TextBox de la ventana y buscamos en la parte inferior derecha la propiedad "MaxLength" y colocamos en numero 1, esto es lo que nos permite que el usuario ingrese solo un caracter, esto lo realizamos en las 10 cajas de texto donde el usuario va a escribir los numeros que debe adivinar.




Como lo he explicado en sesiones anteriores en el siguiente metodo vamos a implementar un Random el cual generará un numero de cifras aleatorias segun el nivel seleccionado.




Dentro de cada uno de los PictureBox ya se pueden invocar los metodos inicializarNivelSeleccionado y generarNumeroAleatorio el cual indican el numero de cifras de nivel, guardando el nivel que se haya escogido en una variable global.



Ahora crearemos los metodos para el Boton Intentar, primero validaremos que todas las cajas de texto de cada cifra correspondientes al numero ingresado esten llenas a travez del metodo que vamos a crear acontimuacion el cual encuentra campos vacios retornando un valor booleano


Método que captura los dígitos ingresados en las cajas de texto y los guarda en dos arreglos enteros





El siguiente metodo compara los arreglos numeroIngresado y numeroGenerado en la misma posición para determinar el numero que hayan de fijas por medio de una variable contadora cambiando por "-1" los campos de los arreglos numeroGenerado y numeroIngresado donde se encontró una fija esto se utiliza ya que nuestro juego permite que los valores esten repetidos y utilizamos este metodo para que no cuente un numero repetido como dos fijas si no como 1 fija.






Para comparar las picas, creamos un metodo 
 que compara los arreglos numeroIngresado y numeroGenerado en posiciones diferentes para determinar el número de picas existentes entre ambos a través de una variable contadora (cambiando por "-1" los campos de los arreglos numeroGenerado y numeroIngresado donde se encontró una pica).











Luego de realizar los metodos para que valide cuales son picas y fijas, creamos un metodo que  permita imprimir los resultados de cuantas picas y fijas lleva el usuario, para esto declaramos una cadena de caracteres que permite almacenar el numero ingresado y lo concatena dentro del Textbox segun las picas y fijas que encuentre y a su vez imprimimos el numero de intentos en un label 











Cada vez que el usuario hace clic en intentar se debe validar si el juego se ha completado, es decir, si el usuario decifró el numero que estaba oculto, para esto debemos creasr un metodo que verifique si el numero de fijas del intento es igual al numero decifras del nivel seleccionado, y si es correcto quiere decir que ha decifrado el numero oculto.


El siguiente método reproduce un sonido por cada vez que se da clic en intentar


Ya finalizando programaremos el boton "Intentar", tomamos todos los metodos que creamos anteriormente  Lo primero que debemos hacer es invocar al método encontrarCamposVacios, si los encuentra envía una alerta al usuario diciéndole  que debe ingresar todos los campos, de lo contrario reproduce el audio que seleccionamos, aumenta el contador de intentos en 1, captura el número ingresado, encuentra las fijas y las picas, imprime los resultados obtenidos en nuestra TextBox, restablece los vectores usados para los cálculos con sus valores originales y limpia las casillas de ingreso de cifras; ahora a través del método completarJuego pregunta si el usuario ha descifrado el número oculto de ser así detiene el tiempo, inhabilita el botón "Intentar", pone al descubierto las cifras ocultas para que el usuario pueda corroborar su victoria y envía una alerta de felicitaciones con el tiempo invertido y el número de intentos realizados, de lo contrario el juego continua hasta que adivine el numero oculto.






Por ultimo nos queda programar los botones "Descifrar", "Reiniciar Nivel", "Reiniciar juego" para el boton decifrar hacemos doble clic en el boton y en su programacion detenemos el tiempo, inhabilitamos el boton intentar para que no haga trampa y no continue con el juego y se muestran los numeros que estaban en cubierto.


Para reiniciar el nivel del juego, debemos invocar los metodos inicializarNivelSeleccioado y generarNumeroAleatorio con la variable Nivel elegido como global. en el boton reiniciar nivel 



Para reiniciar le juego solo debemos llamar la variable InicializarJuego dentro de la programación del botón




Por ultimo para programar la imagen del banner solo deben  hacer doble clic encima del PictureBox y escribir el siguiente codigo






Así con esto damos por finalizada la programación de nuestro juego Picas y Fijas, espero se diviertan, aprendan, cualquier comentario, duda o sugerencia con gusto sera atendido.







Hasta una proxima ocasion ;D


Si desean descargar el codigo de este programa hacer clic en la imagen

























No hay comentarios:

Publicar un comentario