Vous êtes sur la page 1sur 9

CMO FUNCIONA UN PROGRAMA DE AJEDREZ?

Por Alexander Narvez

Jaque mate, dijo la computadora Deep Blue al entonces campen indiscutible del
mundo Gary kasparov. Corra el ao 1.997 cuando me entere de ello y entonces
decid jugar contra un programa sencillo de Ajedrez y me quedaba admirado cada
vez que vea la belleza de la lgica con la que juegan los programas de Ajedrez, fue
as como conoc varios programas de chess como el ChessMaster, el CheesAcademy,
el ChessBase y muchos ms.
Adems comenc a visitar varios sitios para jugar Ajedrez online y en fin me sumerg
en el mundo de la computacin y el Ajedrez, fue as como logr vencer a varios
programas de ajedrez e incluso a varios grandes maestros. Pero no vayan a creer que
los venc jugando, para nada, mejor dicho los hackie, por ejemplo al Chessmaster lo
venc asi: cree un acceso directo al programa en otro equipo de la red, de modo que
cuando arrancaba el juego, el algoritmo del programa le indicaba al juego que deba
buscar la base de datos en determinado directorio que por cierto nunca encontraba
ya que yo ejecuta el .exe desde otro equipo y colocaba el reloj a un minuto fue as
como le gan todos los ttulos al juego, haciendole perder por tiempo.
Ahora bien como ganaba las partidas por internet, pues bien les contar un caso en
particular, logr vencer a muchos grandes maestros d eajedrez jugando sin jugar es
decir, el juego se cargaba en un applet que es una aplicacin que corre en el equipo
de cada jugador, de modo que cuando haces una jugada el applet enva el
movimiento al otro applet en que juega el usuario y de ese modo se reproduce la
movida; hasta ah muy bien pero resulta que ese applet tena un par de debilidades,
una permitia hundiendo la tecla control al tiempo de mover una pieza, que movieras
varias piezas a la vez, fue as como lograba realizar mates virtuales, que realmente
no existan, por ejemplo hacia el mate pastor y mi applet le enviaba un mensaje al
otro indicado que ya se haba dado el mate, como el jaque mate lo procesaba el
applet local (segundo error)entonces el otro usuario no vea ningn movimiento slo
le parecia jaque mate y se le descontaban los puntos del Elo y fue as como aparec
entre los 500 mejores jugadores del ranking del sitio mi puesto era el 3 y eso que no
jugaba, como sera jugando por Dios.
Por cierto en una de esas hackiadas jugue con el programador o creador del applet a
quien por cierto derrot sin jugar, lo cual lo maravill y nos hicimos grandes amigos,
este amigo del que les hablo se llama Alberto Baon Serrano y las pginas que
1

hackie que usaban sus applets son interajedrez.com y hechiceros.net. Interajedrez


an sigue online, pero ya no es dbil a esas hackiadas puesto que una de las
contramedidas aplicadas fue la de que el mate no lo procesara el applet sino el
servidor.
Bueno pero basta hecharme miel, pasemos a lo que nos interesa y es como funciona
un programa de ajedrez, si buscas en la Internet encontrars muchas cosas como
Algoritmo Poda Alpha Beta, Tablas Hash y muchas cosas ms, que posr supuesto
te animo a consultar.
Pero la dea de este artculo es introducirte un poco en este tema te voy a compartir
parte de un la programacin de un juego sencillo de ajedrez que he programado para
un curso de programacin ortientada a objetos que se dicta en nuestra universidad.

As que empecemos:
He creaado un Proyecto llamado Ajedrez.
Luego 3 paquetes, para agrupar todos los objetos asi:
Paquete de Imgenes, Paquete de Juego y Paquete de Piezas.

Observa que en el paquete Imgenes, tendremos todos los grficos de


las piezas tanto negras como blancas.
En el paquete Juego, realic la programacin del tablero.
En el paquete Piezas program los movimientos de cada ficha, para
lo cual he creado una clase con el nombre de cada pieza y luego se
program cada una.

De los tres paquetes mencionados anteriormente, realmente nos


interesan 2: el paquete juego y el paquete piezas, puesto que el
paquete imgenes como sabemos slo tendra las imgenes o gifs de
las piezas (blancas y negras).
3

Paquete Juego:
Este paquete posee una serie de clases que permiten entre varias
cosas las siguientes:
Armar el tablero de Ajedrez
Iniciar y terminar una partida
Elegir la opcin de Jugar contra la mquina o contra otra
persona.
Seleccionar el Color o bando con el que jugaremos: Blancas o
negras.
Determinar cuando Se produce un jaque, jaquemate o una
captura valida de pieza.
Bueno, miremos un poquito la primera clase: Ajedrez.java

En el programa he creado varias clases entre ellas una de opciones,


que para resumirtelo rpidamente consiste en obtener las opciones
iniciales del juego, como jugar contra otra persona o contra la
mquina, elegir el color del bando con que arrancaras la partida
mejor dicho la siguiente imagen habla por s sola y te da una idea
clara de lo que se debe hacer:

Ahora hablemos un poco sobre la clase pieza.java

Para que no te rompas la cabeza, te dire que esta clase consiste en


conocer que pieza se ha movido, que posibles movimientos tiene
cada pieza y que valor o peso equivale a cada una como puedes
observar en la porcin de cdigo que muestra la imagen.
El asignarle una valor a cada pieza es una de las claves en la
programacin de un juego de ajedrez, ya que le permite a la
mquina conocer en que valor total posee en relacin a su rival y en
caso de presentarce un intercambio de piezas, puede saber de
antemano(sumas y restas) si le conviene o no determinado
intercambio.
Ya vas aclarando no? Ves como a poco empieza a aparecer la luz al
final del tunel? as que ya has entendido un poco sobre como
funcionan y se hacen los programas de ajedrez.
Ahora para finalizar el paquete pasemos a la clase: Tablero.java
Que es la clase principal o la ms importante en nuestro programa de
juego de ajedrez

Te decia que esta es la clase principal, ya que con ella


determinaremos los turnos para las movidas, es decir la validez de las
jugadas, que bando mueve, que pieza se esta moviendo y si el
moviento o la jugada es vlida o no.
Finalmente pasemos a nuestro ltimo paquete Piezas; que como se
observa claramente posee una clase para cada tipo de pieza en el
juego de ajedrez:

Peon
Alfil
Caballo
Torre
Reyna
Rey

Recuerda que en Ajedrez existen 6 tipos de piezas repartidos, asi


veas 32 piezas slo hay 6 categorias, por tanto antes de proceder a
programar cada pieza es importante conocer como se mueve cada
una de estas piezas.
Por tanto en este paquete se proceder a programar los movimientos
permitidos de cada tipo de pieza:

Como se muestra en esta ventana, se procede a programar la


categoria de la pieza, en este caso la clase pen, donde debemos
determinar que posibles movimientos tiene la pieza al arrancar la
partida y luego durante el transcurso del juego, como se captura, en
el caso del pen existe la captura al paso y la captura normal, por
tanto debemos saber cuando se puede aplicar determinada captura.
De igual forma un pen al arrancar la partida(Apertura), puede
mover 1 o dos casillas de una vez.
Todas estas variantes y muchas cosas ms hay que tener en cuenta
cuando programamos la pieza. Por ello reitero es imperativo conocer
los movimientos de las piezas del Ajedrez, para posteriormente
proceder a tratar de programarlas.
Por ejemplo tu sabes que el caballo se mueve en ele L, para
interpretar eso en el lenguaje de programacin debemos tener en
cuenta cosas como:el caballo puede mover 3 casillas en L, pudiendo
ser 2 casillas sobre el eje X y una sobre el Eje Y y viceversa.
Por ello como ves el nivel de complejidad puede ser alto, de ah la
idea de abordar la programacin por separado de cada pieza ayudar
muchsimo a la programacin general del juego de ajedrez.
Una vez que conocemos bien los movimientos, trataremos de simular
su comportamiento y es all donde se presentarn muchas variantes
importantes, como por ejemplo saber cuando una pieza esta

clavada, cuando una pieza apunta auna casilla de modo que no se


puede enrocar, porque hay una posicin amenzada, etc,etc.
El espacio no permite que me extienda ms en el cdigo, pues la idea
es que tu tengas una idea ms clara sobre como se hace un programa
de ajedrez y desarrolles tus propios algoritmos para el juego.
As que te animo a que empieces estoy seguro te encantar.
Ing. Alexander Narvez email: anarvaez@ucn.edu.co

P.D. Para que disfrutes un poco he anexado un par de juegos de


ajedrez asi:
Matamarranos: juego sencillo que he comentado en este artculo y
que espero no te gane jejeje.
El damian: juego desarrollado por un amigo chileno que hice en la
Internet y que espero le ganes jejeje (al nombre del juego le aad
una letra para que tenga el nombre de mi gran amigo Damian quien
hizo posible la publicacin de este artculo)

Puedes descargar los juegos que estan comprimidos dentro de una


carpeta llamda chess.zip, descomprimela, abrela y veras un archivo
llamado Ajedrez.jar(matamarranos) y otra carpeta llamada damian,
donde esta el otro juego(damian.exe). Para jugar no tienes instalar
nada slo debes dar doble clic sobre los archivos que te anteriores.
Link para descargar :
http://www.geniovirtual.com/chess.zip

*Dedicado a la memoria de Robert Boby Fischer, para m el mejor jugador de ajdrez


de todos los tiempos

Vous aimerez peut-être aussi