domingo, 3 de julio de 2011

Definición de Proyecto



1.      Elección del tema.
Creación de un Juego de Ajedrez

Documentación y fuentes de información.

El ajedrez es un juego de mesa, también es considerado un deporte y es para dos jugadores. El tablero tiene una dimensión de 8 X8 cuadros usualmente de color blanco y negro alternados que en total son 64 cuadros de colores blanco y negro alternados y cada cuadro es una posición.


El juego se compone de 8 piezas para cada jugador; 1 Rey, 1 Dama, 2 Alfiles, 2 Caballos, 2 Torres y 8 peones. Estás piezas pueden ser blancas o negras.

El juego consiste en capturar al Rey del oponente contrario, la única manera de lograrlo es dejando al Rey del oponente contrario sin oportunidades para proteger el Rey o moverlo, a eso se le conoce como Jaque Mate.

El primer campeonato oficial de este juego  fue en 1886 y está considerado como un deporte por el Comité Olímpico Internacional y reguladas por la FIDE. Los juegos más importantes son las Olimpiadas de ajedrez.

El movimiento de las piezas es el siguiente:

Al primer movimiento los peones pueden avanzar 2 cuadros hacia enfrente y después sólo avanzara un cuadro y pueden atacar a sus piezas oponentes siempre y cuando su oponente se encuentre en diagonal y se encuentre a un lado del cuadro al que va a avanzar.

Las torres pueden avanzar en hacia enfrente o hacia los lados, sin importar los cuadros que sean siempre y cuando no le estorbe ninguna figura en el camino, la torre puede atacar a su oponente tal como avanza.

Los caballos avanzan y atacan de la misma forma, avanzan tres cuadros y un cuadro hacia un lado. sin importar la dirección a la que se vaya a mover, los caballos "saltan" las piezas sólo les puede estorbar las piezas donde vaya a "caer" si son de su mismo equipo.

Los arfiles se mueven únicamente en diagonal y comen de la misma manera, no pueden avanzar más allá si hay una pieza de por medio.

Las reinas se pueden mover en diagonal y hacia los lados todos cuadros que deseen, lo único que les puede detener es si hay una pieza de por medio.

Los reyes son los principales jugadores del juego y los más importantes, si el rey está en Jaque, debe moverse el Rey o protegerse sin importar la situación, en dado caso que el Rey no pueda moverse o protegerse con alguna otra pieza se considera Jaque Mate y el juego habrá terminado resultando ganador el jugador que haya acorralado al Rey oponente.

La estructura  del ajedrez es el siguiente:

Tiene casillas de 8x8 que son 64 casillas en total de color blanco  y color negro. Los jugadores se encuentran de frente uno contra el otro. De tal forma que los jugadores tengan una casilla blanca en su esquina derecha.

Fila (Horizontal): Son ocho filas de ocho casillas.

Columna (Vertical): Son ocho columnas de ocho casillas.

Diagonal: Las dos diagonales mayores tienen ocho casillas.  Y es cada una de las 16 líneas.

Centro: Son las cuatro  casillas que se encuentran en el centro del tablero, dos blancas y dos negras.

Esquinas: Cada una de las  cuatro casillas que están en las esquinas del tablero (ocho blancas y ocho oscuras).

Bordes: Son las casillas que están  a las orillas del tablero.

En el tablero se pueden tener números y letras para identificar las filas, columnas y casillas para identificar más fácilmente las piezas.

Reglas:
Los jugadores comienzan con 16 piezas cada uno, se  les asigna un color de pieza, ya sea blanco o negro (En ocasiones el color suele  sortearse).  Los jugadores se acomodan de tal forma que las casillas blancas que se encuentran en la esquina estén a su mano derecha.

Las torres, alfiles y caballos que se encuentran del lado del rey se les llama torre de rey, alfil de rey y caballo de rey, las piezas más cercanas a la Dama se les llama torre de Dama, caballo de Dama y Alfil de Dama.

Los lugares donde inicialmente están ubicados el Rey y la Dama se le llama “flanco”, flanco de Rey y flanco de Dama.


Los jugadores mueven por turnos, y sólo pueden mover una pieza (excepto en el enroque donde se deben mover el Rey y la Torre en un turno, en la cual el rey mueve dos casillas hacia la derecha o hacia la izquierda y la torre se ubica a su lado opuesto).

El jugador con las piezas blancas mueve primero.

Las piezas no pueden saltar, una por encima de la otra (sólo el caballo puede hacerlo moviéndose en L).

Una pieza no puede ocupar una casilla ocupada por otra pieza del mismo color. Pero si es una pieza de otro color puede ocupar el lugar retirando y  capturando la pieza rival.

El rey es el único que no puede pasar por casillas controladas por piezas contrarias.

En el Jaque, el jugador que tenga el rey siendo amenazado por una pieza rival es obligado a proteger su rey y no puede hacer ninguna otro movimiento hasta que su rey no se encuentre amenazado por un Jaque. Si no hay ninguna defensa disponible y no hay forma de mover a su rey, se considera Jaque mate. Y el jugador rival gana.

Se considera empate cuando ambos jugadores no tienen suficientes recursos para seguir jugando y sólo poseen un caballo o sólo el rey por ambas partes.

Realización del proyecto.



Elección de los colores y estilos que se utilizarán en la plantilla estandar.
Se desarrollará en C# siendo un lenguaje orientado a objetos y siendo también un lenguaje desarrollado por Microsoft y tiene una plataforma .NET siendo semejante a Java y teniendo mejoras de otros lenguajes de programación. Y siendo superior a C y C++ y genera también programas para plataformas Win32, UNIX y Linux. Y al mismo tiempo siendo un software gratuito para usuarios de Windows y fácil de adquirir.

Se utilizará  el programa BoUML que es un software gratuito para la  plataforma Windows y en él se desarrollarán los casos de uso y los diagramas de clases.


CLASES Y DIAGRAMA DE CLASES






Las clases  están definidas como:

1.- Clase Pieza (Visibilidad Privada)
             Atributos: Tipo(Visibilidad Privada), Posición(Visibilidad Privada), Jugador(Visibilidad Privada), Activo(Visibilidad Privada), Inactivo(Visibilidad Privada)
             Métodos: Manera de Avanzar (Visibilidad Pública), Forma de Capturar(Visibilidad Pública)
2.- Clase Peon (Visibilidad Publica)
             Atributos: Tipo(Visibilidad Publica), Posición(Visibilidad  Publica), Jugador(Visibilidad Publica), Activo(Visibilidad Publica), Inactivo(Visibilidad Publica)
             Métodos: Manera de Avanzar (Visibilidad Publica), Forma de Capturar(Visibilidad Publica)
3.- Clase Caballo (Visibilidad Publica)
             Atributos: Tipo(Visibilidad Publica), Posición(Visibilidad  Publica), Jugador(Visibilidad Publica), Activo(Visibilidad Publica), Inactivo(Visibilidad Publica)
             Métodos: Manera de Avanzar (Visibilidad Publica), Forma de Capturar(Visibilidad Publica)
3.- Clase Torre (Visibilidad Publica)
             Atributos: Tipo(Visibilidad Publica), Posición(Visibilidad  Publica), Jugador(Visibilidad Publica), Activo(Visibilidad Publica), Inactivo(Visibilidad Publica)
             Métodos: Manera de Avanzar (Visibilidad Publica), Forma de Capturar(Visibilidad Publica)
4.- Clase Alfil (Visibilidad Publica)
             Atributos: Tipo(Visibilidad Publica), Posición(Visibilidad  Publica), Jugador(Visibilidad Publica), Activo(Visibilidad Publica), Inactivo(Visibilidad Publica)
             Métodos: Manera de Avanzar (Visibilidad Publica), Forma de Capturar(Visibilidad Publica)
  
5.- Clase Rey (Visibilidad Publica)
             Atributos: Tipo(Visibilidad Publica), Posición(Visibilidad  Publica), Jugador(Visibilidad Publica), Activo(Visibilidad Publica), Inactivo(Visibilidad Publica)
             Métodos: Manera de Avanzar (Visibilidad Publica), Forma de Capturar(Visibilidad Publica)
6.- Clase Dama (Visibilidad Publica)
             Atributos: Tipo(Visibilidad Publica), Posición(Visibilidad  Publica), Jugador(Visibilidad Publica), Activo(Visibilidad Publica), Inactivo(Visibilidad Publica)
             Métodos: Manera de Avanzar (Visibilidad Publica), Forma de Capturar(Visibilidad Publica)
 
 
7.- Clase Tablero (Visibilidad Publica)
             Atributos: Posiciones(Visibilidad  Publica)
             Métodos: Obtener Posiciones (Visibilidad Publica), Verificar Posicion (Visibilidad Publica), Obtener Pieza (Visibilidad Publica)
 

8.- Clase Posicion (Visibilidad Privada)
             Atributos: X(Visibilidad Privada), Y (Visibilidad  Privada)
             Métodos: Asignar Parametros y Atrubutos (Visibilidad Publica)



 RELACIONES Y MULTIPLICIDAD

Las relaciones están unidas con una raya, cuando es una raya simple significa que es una asociación tal como se muestra en el diagrama.

Cuando es una raya con un triangulo se indica la herencia, y el triangulo debe apuntar hacia la Clase padre, como en el caso del peon que apunta hacia la clase padre pieza.

La multiplicidad es la cantidad fisica que pueden llegar a ser las clases, y se  representan con un numero, en caso de ser infinito se presenta con un asterisco ( * ).



HERENCIA

En la herenciase se pueden obtener caracteristicas y metodos que son dadas por la clase padre, en este caso la clase Pieza es una clase padre de peon, dama, rey, caballo, torre y  alfil.

En la herencia en este caso las clases hijas pueden definir los métodos de la clase padre, por consiguiente las Clases peón, Caballo, Arfil, Dama, Rey y  Torre definirán los métodos y la forma de moverse a la clase padre.



CLASE
Método
Clases Hijas
Herencia
Pieza
Manera De Avanzar, Forma de Capturar
Peon
Manera De Avanzar, Forma de Capturar


Caballo
Manera De Avanzar, Forma de Capturar


Arfil
Manera De Avanzar, Forma de Capturar


Dama
Manera De Avanzar, Forma de Capturar


Rey
Manera De Avanzar, Forma de Capturar


Torre
Manera De Avanzar, Forma de Capturar
Tablero
Obtener Posiciones, Verifcar Posicion, Obtener Pieza


Posicion
Asignar Parametros y Atributos




















Referencias:
http://es.wikipedia.org/wiki/Herencia_m%C3%BAltiple

POLIMORFISMO

Un ejemplo es el caso anterior, se han heredado ciertos métodos de la clase padre hacia las clases hijas pero el método se está utilizando de diferente manera en cada clase hija, en este caso estamos reciclando codigo y nos estamos ahorrando tiempo. En la introducción se explica el movimiento que podrá  hacer cada pieza y si la jugada es valida o no es válida, porque cada pieza tiene su manera de moverse y de capturar.


CASOS DE USO


JUGAR



Nombre Del Caso
Actor(es) Involucrados
Descripción
Casos de Uso Relacionados
Hacer Apertura
Jugador1
El jugador1 es el que inicia la partida
Mover Piezas Blancas
Mover Piezas Blancas
Jugador1
El jugador1 mueve las piezas blancas

Mover Piezas Negras
Jugador2
El jugador2 mueve las piezas negras

Hacer Enroque
Jugador1,  Jugador2
Ambos jugadores pueden hacer un enroque moviendo su torre y su rey

Hacer Jaque Mate
Jugador1,  Jugador2
Uno de los jugadores puede hacer un Jaque Mate dejando sin opciones de movimiento al Rey del jugador contrario

Rendirse
Jugador1,  Jugador2
Ambos jugadores pueden rendirse

Capturar Pieza
Jugador1,  Jugador2
Ambos jugadores pueden capturar las piezas de su oponente

Reiniciar Juego
Jugador1,  Jugador2
Al terminar la partida pueden iniciar otra

Coronar Peón
Jugador1,  Jugador2
El peón al llegar a la Casilla 8 se convierte en una pieza con más valor, puede ser Dama, Torre, Alfil o Caballo
Cambiar por Dama, Cambiar por Torre, Cambiar por Alfil, Cambiar por Caballo



































CORONAR

Nombre del Caso
Actor(es) Involucrados
Descripción
Casos de Uso Relacionados
Coronar Peón
Jugador1, Jugador2
El peón al llegar a la Casilla 8 se convierte en una pieza con más valor, puede ser Dama, Torre, Alfil o Caballo
Cambiar por Dama, Cambiar por Torre, Cambiar por Alfil, Cambiar por Caballo
Cambiar por Dama
Jugador1, Jugador2
El peón ahora tiene los atributos y los métodos de la Dama
Coronar Peón
Cambiar por Torre
Jugador1, Jugador2
El peón ahora tiene los atributos y  valores de una Torre
Coronar Peón
Cambiar por Alfil
Jugador1, Jugador2
El peón ahora tiene los atributos y los métodos de un Alfil
Coronar Peón
Cambiar por Caballo
Jugador1, Jugador2
El peón ahora tiene los atributos y los métodos de un Caballo
Coronar Peón

 Referencias:
Referencias:
http://eduangi.com/2006/05/24/los-110-mejores-movimientos-de-ajedrez/

1 comentario:

  1. Casos de uso.- Muy bien. Me parecen adecuados los casos y los actores; tal vez algunos casos pudieran englobarse en otros (parte de esto sería parecido a lo que hiciste con la coronación del peón), pero para nuestros fines no requerimos ahorita tanto detalle. 5/5

    Clases.- En general está bien (considerando que la herencia se hizo después de la detección de las clases). El único problema es con las visibilidades, ya que lo más sano para los atributos es que sean privados. 4.5/5

    Herencia.- Definitivamente, hay una relación de subtipos entre la pieza (en abstracto) y las piezas específicas del ajedrez. Sin embargo, aquí habría que evaluar si todos los tipos de pieza son subclases (las trataríamos más bien con objetos con diferentes valores) o sólo algunas lo ameritan (por ejemplo, el rey a pesar de ser una pieza, tiene características especiales, porque es el único que no te puedes comer, es el único que puedes poner en jaque y el único que se puede enrocar). 5/5

    Diagrama de clases.- Arrastra algunos detalles de la detección de clases (ej. las visibilidades). Por otro lado, el chiste de la herencia es que ahorres código; por tanto, si los métodos se repiten en las clases hijas, lo lógico es que se coloquen más bien en la clase padre. Si todos los métodos se implementan de manera diferente, entonces lo ideal sería crear una interfaz donde sólo se declaren los métodos, y a la hora de programar éstos se codifican en las clases "hijas". En todo caso, los métodos (y atributos re petidos) sólo se colocan en la clase de arriba. 4.5/5

    ResponderEliminar