miércoles, 15 de abril de 2015

PICAS Y FIJAS

Hola, a todos espero que estén bien, bueno en esta oportunidad voy a publicar el juego de picas y fijas, voy a explicar el juego: Es un juego con números que data de un siglo o más, el juego también se puede jugar con varios dígitos, en este caso esta echo para 4 es muy sencillo modificar la cantidad de valores, cada uno de los jugadores escribe un número secreto de n dígitos. Las cifras deben ser todas diferentes. Luego, a su vez, los jugadores tratan de adivinar el número de su oponente, 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".)

Como siempre se debe crear un nuevo proyecto en visual studio 2013 que se llame Picas y Fijas, luego de ello pensamos en las funciones y cualidades que va a tener la aplicación de picas y fijas:


Yo personalmente quise hacer una interfaz donde el jugador realiza el juego solitario, pero también es adaptable al juego por parejas o mas, para el desarrollo de esta aplicación creamos los parametros iniciales y el método constructor:



El método que sigue realiza la operación de llenar el arregloEscondido o primer vector con los números aleatorios que el usuario debe adivinar:



Existe un método que realiza la operación de crear los arreglos mediante el comboBox que creamos para insertar la cantidad de dígitos que el usuario quiere adivinar:


El siguiente método realiza la comparación con los dos vectores y escoge la cantidad de picas que tiene el arreglo ingresado por el usuario:


En el siguiente caso ocurre lo mismo pero en cambio ahora compara el numero de fijas obtenidas por el usuario:



El método ganar compara sencillamente si la cantidad de fijas es igual al valor que el usuario escogió como dígitos, existe otro método que ingresa los datos de cada caja de texto y los guarda en el arreglo:



Y por ultimo generamos un método que genera un nuevo juego, y lo que hace es que desbloquea el combobox, y borra las cajas de texto de los paneles que el usuario generado anteriormente:




Yo realice una ventana nueva que cuando el usuario gana el juego se abre automáticamente y muestra un archivo .gif, también se cierra 2 segundos después de haberse abierto.

Bueno eso es todo por hoy, les agradezco por su tiempo y espero que les haya gustado, enseguida dejo el enlace para descargar el proyecto .zip.

Gracias.

Descargar archivo

PUZZLE NUMERICO

EL PUZZLE NUMERICO es un juego tipo solitario, en una cuadrícula de 4x4 se colocan los números del 1 al 15, dejando una casilla vacía, que puede ser ocupada por las piezas adyacentes, se trata de desordenar las 15 piezas con número y volver a recomponer el orden, puede resultar entretenido el proceso mediante el que se consigue resolverlo, pero el problema que te planteo es decidir si cualquier permutación de los 15 números puede ser reordenada, es decir, si el juego tiene solución para cualquier distribución inicial de los 15 números.

Inicialmente creamos un nuevo proyecto en visual studio 2013 que tenga el nombre del juego, luego creamos los parámetros de la clase y el método constructor:


Se debe detectar primero la dinámica del juego y las posibles acciones que este va a generar, en puzzle numérico existen unas reglas básicas que no se deben obviar como lo son: las casillas solo deben tener 4 movimientos, hacia arriba, abajo, izquierda y derecha si se encuentra el espacio posible, el juego finaliza cuando todas las casillas se encuentren en el orden correcto de izquierda a derecha y arriba hacia abajo, en el juego es posible reiniciar la partida y también generar los movimientos realizados:




Luego debemos crear 12 métodos básicos para la dinámica del juego y 16 métodos estándar para realizar los movimientos que tiene cada ficha en el juego, el primer método sera el que genere los números aleatorios de todo el juego y los coloque aleatoriamente en cada casilla:



El método que inserta cada valor en cada casilla es el siguiente:



Un método importante es el de finalizar el juego:



Cada casilla instancia un método general que realiza el movimiento de las figuras y cada que se oprime el botón "reset" se realizara una distribución aleatoria de números:



Eso es todo, el juego es muy interesante y ayuda a controlar y organizar la mente, si tienen dudas con gusto me escriben o le escriben al blog de mi compañero Jeison: http://jeisonayudaspuntonet.blogspot.com/2015/03/puzzle-numerico.html quien tambien participo en el desarrollo de esta maravillosa aplicacion.

Muchas gracias.

Descargar codigo.




martes, 7 de abril de 2015

Clases Abstractas

CLASES ABSTRACTAS


Hola, en esta ocasión quiero hablar sobre las clases abstractas y su implementación en el diagrama de clases poligonos regulares, como bien se sabe una clase abstracta no necesariamente debe tener métodos abstractos, en algunos casos la clase abstracta simplemente sirve para efectuar operaciones comunes a subclases sin necesidad de métodos abstractos. en otros casos si se usaran los métodos abstractos para referenciar operaciones en la clase abstracta del contenido de la sobreescritura en las subclases.

Las clases TRIANGULO, CUADRADO y PENTÁGONO pueden ser no abstractas ya que es una de las razones de ser de las clases abstractas, una clase abstracta no puede ser instanciada, pero pueden crearse subclases concretas sobre la base de una clase abstracta, y crear instancias de esas subclases, para esto hay que heredar de la clase abstracta y anular los métodos abstractos implementandolos.



En el diagrama podemos observar cómo hemos definido una clase abstracta denominada PoligonoRegular, se identifica señalando <<abstract>> en la parte superior del icono de la clase. Sin embargo, hereda de la clase Punto que no es abstracta, lo cual significa que puede haber instancias de Punto pero no de PoligonoRegular.

Triangulo, cuadrado y pentágono son subclases de la clase abstracta PoligonoRegular, que a su vez obtiene el metodo Punto en la clase Punto que es no abstracta y con ella varios metodos mas como lo son Punto con dos parámetros Double y Eje que a su vez es una clase <<enumeration>> que es una clase “especial” que limitan la creación de objetos  a los especificados explícitamente en la implementación de la clase. La única limitación que tienen los enumerados respecto a una clase normal es que si tiene constructor, este debe de ser privado para que no se puedan crear nuevos objetos.

Muchas gracias, nos veremos en otra ocasión.