sábado, 12 de diciembre de 2015

Juego de Ajedrez (I). Introducción a la Programación Orientada a Objetos

Hace tiempo me llegó una consulta de un desarrollador que para iniciarse en la programación orientada a objetos había decidido intentar desarrollar un juego de ajedrez.
Me pareció un ejercicio muy interesante así que, siguiendo la idea, decidí "apropiármela" y preparar un juego de ajedrez que pueda servir de ejemplo de programación orientada a objetos en .NET.

Puede que la implementación no sea la óptima, de hecho he ido tomando las decisiones del desarrollo pensando sobre todo en que el código resulte sencillo y fácil de seguir de forma que el lector pueda centrar su atención en la definición de las clases, propiedades, métodos, herencias, etc.

En ocasiones utilizo incluso diferentes soluciones para el mismo problema de forma que existan en el código ejemplos de distintas opciones existentes.

A lo largo de los artículos iré mostrando paso a paso la construcción del código del juego. El lector puede optar por ir construyéndolo según avance en la lectura, o descargarse el código completo al inicio e ir siguiendo las explicaciones sobre él.


La aplicación está realizada en Windows Forms pero, dado que el comportamiento de los diferentes elementos del juego se encuentra encapsulado en clases, es fácilmente migrable a otros entornos.

El código completo tanto en C# como en Visual Basic .NET está disponible en:

Códigos de muestra - Ejemplos MSDN. Juego de Ajedrez

Resumen


Bueno, pues al lío.

En primer lugar realizaré un resumen de lo que iremos haciendo a lo largo de los siguientes artículos.

Para encapsular el comportamiento de cada uno de los elementos del juego de ajedrez voy a utilizar cuatro clases principales:

ChessPiece


Clase que definirá el comportamiento básico de una pieza de ajedrez. Se trata de una clase base o abstracta, es decir, no se pueden crear instancias de esta clase, únicamente se pueden crear instancias de las clases que hereden de ella.

De esta clase heredarán las diferentes clases que definiremos para definir el comportamiento de las distintas piezas de ajedrez (reyes, reinas, peones, torres, ...)

Square


Esta clase representa cada celda del tablero. Proporcionará información de la posición de la celda en el tablero, y de la pieza situada en ella (si la hay).

Chessboard


Será la clase que defina el tablero de juego. Es básicamente una lista de elementos Square.

Será la responsable de colocar las piezas en su posición inicial y de proporcionar acceso a las diferentes celdas del tablero.

Expone también un método para poder mover una pieza entre dos celdas.

Game


Representa la partida y será la clase a través de la cual se comunicará el interfaz de usuario.

Será la responsable de crear el tablero, iniciar el juego, mantener el estado actual del juego, realizar las transiciones entre los diferentes estados y detectar la finalización de la partida.


Una vez que tengamos el comportamiento básico definido en estas cuatro clases, definiremos las clases para las diferentes piezas del juego que heredarán de la clase base ChessPiece.

Definiremos también un formulario que será el responsable de mostrar el interfaz de usuario y de comunicarse con la clase Game.
En el desarrollo de la interfaz veremos también cómo crear un control personalizado que nos servirá para encapsular el comportamiento de cada celda del tablero.

En el siguiente artículo empezaremos con la creación del proyecto y su estructura básica.

Artículo siguiente:

Juego de Ajedrez (II). Creando la estructura del proyecto


No hay comentarios:

Publicar un comentario