Karoshi MSX Community
06 de Julio de 2021, 06:49:53 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1] 2
  Imprimir  
Autor Tema: Partidas pesudo-oficiales de Ex-Chess contra otros programas online  (Leído 7467 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Jos'b
Karoshi Maniac
****
Mensajes: 262


« : 15 de Octubre de 2011, 10:14:15 am »

Primera partida pseudo-oficial entre dos programas de ajedrez amateur, con blancas juega EX-Chess (MSX) y con negras Toledo Javascript Chess (http://nanochess.110mb.com/chess4_es.html)

1.e4 e5
2.Dh5 g5
3.Ac4 d5 ?
4.exd5 Cd7
5.Cc3 Ad6
6.Ce4 h6
7.Cf3 Re7?Huh (que horror de jugada)
8. O-O f5
9.Cfxg5? Df8
10.Te1 fxe4
11.Cxe4 Cgf6
12.Dg6 Tg8
13.Df5 Cxe4
14.Dxe4 Cf6
15.De3 b5
16.Axb5 Cxd5
17.Df3 Dxf3
18.d3 Dxg2#

Cometarios (mis cometarios obviamente) a la partida.

Como se puede observar Ex-Chess definitivamente no incluirá un libro de aperturas, cuestión de memoria, quizás si fuese un megarom se podría incluir un libro decente de aperturas, ese es el motivo de que ya en la segunda jugada realice un movimiento de dama a h5 ya que considera que al ser la dama la pieza de más valor tiene una movilidad y da una superioridad en la posición superior al resto de piezas, tampoco tiene un criterio claro de desarrollo (algo que debo subsanar antes de presentar la versión definitiva a la DEV). Por suerte Toledo Chess tampoco hace una jugada de desarrollo buena, 2. … g5 es un  locura bastante temeraria. Tampoco se explica bien la jugada 3. … d5, que pierde peón directamente (y que como no podía ser de otra manera Ex-Chess se toma la libertad de tomarlo), sobre todo porque Toledo Chess es un programa que puede ver hasta la tercera jugada (supongo que jugadas completas, 6 movimientos).

Otro claro error de Toledo Chess es 7. … Re7??, ya que despues de 7. … Cdf6 8. Cxf6+ Cxf6 gana la Dama Blanca !!!! (de esta jugada deduzco que en realidad  solo es capaz de ver 3 medias jugadas (o 1,5 jugadas completas)

8. O-O ? esta vez un claro error de Ex-Chess, mucho mejor Cxg5 amenazando mate, el caballo no se puede tomar por quedar la Torre descubierta en h8.

9. Cfxg5?? otro error, porque no toma directamente con el caballo de e4 que es el que está amenazado (problema para resolver), Toledo Chess reacciona muy bien cuando juega Df8 evitando el mate en 1 que hay en f7 (y que sin duda daría Ex-Chess si tiene oportunidad). Aunque Ex-Chess pierde un caballo a cambio de dos peones (obviamente un mal cambio) en una posición tan abierta podría considerarse como un sacrificio en beneficio de la iniciativa y ataque.

16. Axb5 tampoco es bueno, es necesario mantener el peón en d5, un caballo tan en el centro es muy peligroso y como se demuestra en el resultado final de la partida 16. … Cxd5 fue definitivo.

Las retiradas de la Dama responden a un criterio claro de mantener la máxima movilidad, y que finalmente aloja en f3?? lo que permite a Toledo Chess aprovechar la clavada del peon g2 para llevarse la dama limpia y ganar la partida.


Esta es otra partida pesudo-oficial contra otro programa en javascript (http://p4wn.sourceforge.net/5k/) de tambien solo 5kb, en el que Ex-Chess también juega con blancas.

1.e4 Cf6 2.Df3 e5 3.Ac4 Ad6 4.De3 b5 5.Axb5 Ab7 6.Cf3 Axe4 7.O-O c6
8.Ad3 Db6 9.Axe4 Dxe3 10.fxe3 Cxe4 11.Cc3 Cc5 12.Cg5 h6 13.Cxf7 Tf8
14.Cxd6+ Re7 15.Cce4 Cxe4 16.Cxe4 g5 17.Tf6 Txf6 18.Cc5 Td6 19.Ce4
Td5 20.d4 exd4 21.Ad2 Te5 22.exd4 Txe4 23.Ac3 d5 24.Tf1 a5 25.b3 Te3
26.Ad2 Te2 27.Td1 c5 28.dxc5 a4 29.h3 axb3 30.axb3 d4 31.g4 d3 32.
cxd3 Ca6 33.d4 Tb8 34.b4 Te4 35.Ac3 Cxb4 36.d5 Ca2 37.Ad4 Td8 38.d6+
Rf7 39.Td2 Cb4 40.Ac3 Cc6 41.Ta2 Td7 42.Ta8 Re6 43.Tf8 Tc4 44.Tf3
Txc5 45.Td3 h5 46.gxh5 g4 47.hxg4 Rf7 48.h6 Re6 49.Ag7 Tc1+ 50.Td1
Txd1+ 51.Rg2 Td2+ 52.Rg3 Td3+ 53.Rg2 Td2+ 54.Rg3 Td3+ 55.Rg2 Td2+  (y tablas por jaque continuo !!!!)

Conclusión: Aunque el motor esta en un estado muy avanzado todavía necesita mejorar en muchos aspectos, obviamente en esta última partida se ve claramente algunas carencias de Ex-Chess, debe mejorar el cambio de piezas y la forma de reaccionar ante los jaques (claro defecto despues de 50 Td1 que se deja la torre totalmente limpia). Otros aspectos que aún no están implementados son: mejorar el desarrollo de piezas inicial e implementar finales, para que sepa como avanzar peones y como buscar mates elementales de dama y rey contra rey, incluso torre o dos torres y rey contra rey haya o no peones para que mejore la fase final de juego.

En definitiva, espero que a los que guste jugar ajedrez le haya resultado curiosas estas partidas.
« Última modificación: 16 de Octubre de 2011, 06:25:21 pm por Jos'b » En línea
_ThEcRoW
Karoshi Fan
**
Mensajes: 50


« Respuesta #1 : 15 de Octubre de 2011, 04:16:25 pm »

Como haces que se comuniquen entre si?. Introduces manualmente los datos en uno y otro simulador?.
Saludos!!!
En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #2 : 15 de Octubre de 2011, 07:03:29 pm »

Pues si, manualmente  Cheesy, voy alternando las ventanas e introduciendo los movimientos.

Aunque hay algunos protocolos (basicamente UCI y Winboard) para la comunicacion entre los diferentes engines e interfaces gráficos que se podrían utilizar para hacer que dos máquinas se puedan enfrentar entre sí, pero solo los engines que aspiran a algo más que la pura diversión suelen incluirlos.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #3 : 15 de Octubre de 2011, 08:23:50 pm »

Pues qué bien que hayas conseguido un engine operativo. Hacer algo así con los recursos de un MSX tiene su mérito.
En línea
msxnake
Karoshi Fan
**
Mensajes: 86


Email
« Respuesta #4 : 16 de Octubre de 2011, 01:44:26 pm »

 Hace algunos años yo también hice un programa que jugaba al ajedrez para pc. Aunque debo admitir que estará perdido en mis disquetes de 3 1/2. Creo que también tenía una profundidad hasta 3 pero analizaba todas las posibles ramas. El algoritmo era simple  y no estaba optimizado y tardaba lo suyo en un 386.
En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #5 : 16 de Octubre de 2011, 06:21:31 pm »

Pues qué bien que hayas conseguido un engine operativo. Hacer algo así con los recursos de un MSX tiene su mérito.
Pues si, y muy divertido, casi todo el tiempo lo dedico a buscar errores en la valoracion de las posiciones (en realidad muy poco de programacion y mucho de cambiar parametros aquí y allá)

Hace algunos años yo también hice un programa que jugaba al ajedrez para pc. Aunque debo admitir que estará perdido en mis disquetes de 3 1/2. Creo que también tenía una profundidad hasta 3 pero analizaba todas las posibles ramas. El algoritmo era simple  y no estaba optimizado y tardaba lo suyo en un 386.
La verdad que me alegra saber que no soy el único que disfruta (o ha disfrutado) haciendo un juego de ajedrez.

ExChess no está basado en el calculo a base de fuerza bruta a número fijo de jugadas, sino que analiza la posición a media jugada. La idea es doble, por un lado poder hacer un juego de ajedrez para MSX que no tarde una hora en mover, y por otro lado tener un prototipo base para 'quizás' en un futuro intentar hacer algo más evolucionado para PC. De esta manera puedo comprobar realmente como el engine valora la posición final.

El problema de hacer un analisis a profundidad fija es que el ordenador puede pasar por alto buenas jugadas debido a que puede cortar el analisis en una posición donde se estan produciendo cambios (un ejemplo claro es la partida de ExChess contra Toledo javascript donde en la jugada séptima juega Rey a e7 en lugar de jugar el Caballo de d7 a f6, que lleva a comerse la Dama Blanca, le faltó media jugada más para poder verlo). Los programas actuales lo que hacen cuando llegan a una profundidad fija(nunca inferior a 4 movimientos) es ver si la posición es tranquila, si es así, se limitan a valorar la posición según los criterios que le hayan metido sus programadores, o por el contrario ver si la posición es violenta, aumentando la profundidad de análisis o añadiendo alguna función específica para estos casos. Este es el criterio que estoy intentando seguir, pero aplicado a media jugada, usar unos criterios para posiciones pasivas (en los que no intervengan cambios) y el uso de una función especial para cuando haya posiciones más violentas que impliquen cambios y demás.

Para mi, lo más sencillo hubiera sido hacer un algoritmo que recorra todas las posibilidades a una profundidad fija, de eso 3 o 4 jugadas, y hacer un simple conteo de material y movilidad de las piezas (sin ni siquiera complicarme la vida haciendo una poda selectiva de las ramas que se preveen peores). Al principio hice unas pruebas a una profundidad de 2 movimientos y tardaba alrededor de 5 minutos por cada movimiento (con mi código en C), así que, teniendo en cuenta que el Ajedrez no es un juego que vaya tener mucho éxito entre el público MSXero y que lo hago como un reto personal, opté por cambiar el sistema al análisis lógico de la posición base (que es mucho más divertido) y así, si algún día decido hacer algo mejor e incrementar la profundidad de análisis, ya tengo asegurado que lo que el engine finalmente va a valorar es bastante fiable.

 
... y bueno, creo que voy a cortar ya, con este tema me animo y no se parar  Grin
« Última modificación: 16 de Octubre de 2011, 06:24:09 pm por Jos'b » En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #6 : 16 de Octubre de 2011, 07:00:00 pm »

Me quedo picuet ante tanto nivel Shocked. Yo no sabría ni cómo empezar a plantearme un motor de esas características. Bravo, Jos'b!
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
nanochess
Karoshi Lover
***
Mensajes: 141


Programando algo buenísimo :)


WWW
« Respuesta #7 : 16 de Octubre de 2011, 11:05:06 pm »

Bien hecho  Wink , lo más importante es que ya tienes funcionando tu programa y ahora puedes mejorarlo.
En línea

Mira mis juegos MSX/Colecovision/Atari/Intellivision http://nanochess.org/retro_es.html, y sígueme en Twitter http://twitter.com/nanochess
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #8 : 17 de Octubre de 2011, 08:18:17 am »

Mola mucho la idea de poder enfrentar tu juego contra el que ha hecho otra persona  Smiley

Mucho ánimo y a ver si queda un juego bien chulo! Wink
« Última modificación: 17 de Octubre de 2011, 08:19:50 am por Imanok » En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #9 : 18 de Octubre de 2011, 07:44:25 am »

 Cheesy

Gracias por los ánimos.

Y chulo va a quedar, por lo menos por fuera   Roll Eyes,  por dentro ya veremos  Grin
En línea
Konamito
Karoshi Excellent Member
******
Mensajes: 1446



WWW Email
« Respuesta #10 : 19 de Octubre de 2011, 10:26:57 am »

Yo apenas me he enterado de lo que has comentado (soy un negado en ajedrez) pero me alegra de que consigas que dos scripts jueguen uno contra el otro.

Un saludo.
En línea

MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #11 : 19 de Octubre de 2011, 07:19:44 pm »

Mola el proyecto.

Yo jugaba al Master Chess (cassette, DRO?) Y no estaba mal. Tardar en pensar.. dependia del nivel (creo recordar..) Lo que si pasaba es que si tardaba mucho podias "presionar" a la maquina pulsando RETURN y entonces hacia la jugaba que hubiera calculado hasta entonces. Era un poco chanchullo, pero si tenias prisa o ibas perdiendo.. Tongue

Asi que podrias hacer algo asi. Poner varios niveles de dificultad. El que no le importe que la maquina se pegue rato pensando, que elija el modo chungo. Ahora bien, si ya lo tienes hecho asi y eso va a ser complicado de modificar, ni te calientes. Tal como estan las cosas bastante es con jugar. Yo ya no tengo paciencia, las ultimas partidas al ajedrez que he hecho, con un juego para GP2X, me ganaba Sad Asi que no he vuelto a jugar xD
En línea

--

Cindy Lauper She Bops!
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #12 : 20 de Octubre de 2011, 04:09:03 pm »

Yo apenas me he enterado de lo que has comentado (soy un negado en ajedrez) pero me alegra de que consigas que dos scripts jueguen uno contra el otro.
Espero que este jueguecillo sirva para animarte a echar alguna patida  Cheesy

Mola el proyecto.
Gracias

Yo jugaba al Master Chess (cassette, DRO?) Y no estaba mal. Tardar en pensar.. dependia del nivel (creo recordar..) Lo que si pasaba es que si tardaba mucho podias "presionar" a la maquina pulsando RETURN y entonces hacia la jugaba que hubiera calculado hasta entonces. Era un poco chanchullo, pero si tenias prisa o ibas perdiendo.. Tongue
Yo tambien he jugado con él, de hecho creo que hay varios juegos de ajedrez que usan el mismo motor. De todas formas prefiero Cyrus II y Colossus 4 Chess, el mejor de todos y que además tengo en cinta original. Hace tiempo que intento hacerme de una copia en disco para poder seguir jugando, pero desgraciadamente las que circulan por internet no rulan bien  Huh

Asi que podrias hacer algo asi. Poner varios niveles de dificultad. El que no le importe que la maquina se pegue rato pensando, que elija el modo chungo. Ahora bien, si ya lo tienes hecho asi y eso va a ser complicado de modificar, ni te calientes. Tal como estan las cosas bastante es con jugar. Yo ya no tengo paciencia, las ultimas partidas al ajedrez que he hecho, con un juego para GP2X, me ganaba Sad Asi que no he vuelto a jugar xD
Bueno poner niveles no es ni fácil ni dificil, es plantearme de nuevo el juego. Desgraciadamente la rutina que genera los movimientos legales está preparada para generar solamente los movimientos pseudo-legales, sin incluir los jaques, basicamente por dos razones, puedo usarla para calcular la movilidad (evitando que el ordenador busque el jaque de forma desesperada) y la segunda y más importante, porque al incluir los jaques la rutina se hace muy lenta. Esto que parece una chorrada me impide que al recorrer el árbol de variantes pueda detectar algún mate o posición de tablas en alguna jugada intermedia (que de otra forma se podría detectar simplemente viendo si los movimientos generados son igual a cero). Si no se puede mover, o está en mate o es tablas  Grin

Así que, a tres meses vista de la fecha límite de la DEV, no quiero plantearme la reprogramación de gran parte del código (con los problemas de testeo que siempre suelen surgir) y tirar 'palante' tal como está (que no es poco) y centrarme en mejorar algunos defectillos que aún tiene. Y si el año que viene seguimos vivos como comunidad MSX Grin, quizas intente mejorarlo o meterme en algún que otro proyectillo.


En línea
Konamito
Karoshi Excellent Member
******
Mensajes: 1446



WWW Email
« Respuesta #13 : 20 de Octubre de 2011, 04:34:49 pm »

Yo apenas me he enterado de lo que has comentado (soy un negado en ajedrez) pero me alegra de que consigas que dos scripts jueguen uno contra el otro.
Espero que este jueguecillo sirva para animarte a echar alguna patida  Cheesy

Lo haré Wink
En línea

msxnake
Karoshi Fan
**
Mensajes: 86


Email
« Respuesta #14 : 20 de Octubre de 2011, 09:20:21 pm »

  Cuando yo programé el mío, el tema del enroque era lo que me daba mas pereza. Lo dejé justo para el final. Las escepciones que puede tener un enroque me liaron un poco. Allí utilicé una variable para asegurarme que el rey no se había movido antes, y tenía que calcular si estaba en posición de jaque (un poco rollo todo). Además encima tenemos el enroque largo y el corto para variar.
  Implementé una rutina que hacía que se enfrentara a si mismo pero con identidades distintas... por ejemplo el tema de mover los peones, o el tema del valor del alfil o caballo, atacar el centro, etc.
  Cuando ya tenía el tema gráfico muy logrado, empezé a re-programarlo para optimizar el tiempo de respuesta pero al final me cansé del proyecto y lo abandoné.
En línea
Páginas: [1] 2
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!