Una kuestion..

Started by Hola, November 06, 2018, 09:50:23 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Hola

Hola a todos, estos dias me ha venido una cuestion..., es posible incrustar un engine de ajedrez en un programa hecho en bennu? o a lo mejor es un delirio. Mm.., como Winboard, que es un programa donde tienes el tablero , las piezas pero para que funcione cargas un engine que juegue ajedrez como Crafty. Bueno, esa es mi pregunta.
Salu2

panreyes

Siempre puedes crear un módulo nuevo para BennuGD en C o convertir el código del engine que comentas a código BennuGD.

Seguro que se puede, aunque sea muy difícil xD

Arcontus

No conocía Winboard hasta que lo comentaste, pero por lo que he estado viendo, aquí tienes un ejemplo de controlador para usar (habrías de adaptarlo): http://www.open-aurec.com/wbforum/viewtopic.php?f=24&t=51739
Por lo que veo es una app en C, y personalmente lo que haría es crear una librería para utilizar sus funciones desde Bennu vía "red" a localhost. Es decir, modificar el driver de ejemplo para que escuche conexiones localhost y reciba las ordenes (mover, nueva partida, etc,...) y envíe las acciones del tablero (ficha tal movida a c4) al programa y desde Bennu (si es que quieres usar bennu) haría la lógica del programa.
Algo así como el patrón MVC: https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador , donde la vista sería el Winboard y el controlador tu programa en bennu.

Y en una segunda versión podrías cambiar lo de localhost para añadir la posibilidad de partidas en red/Internet.

Yo lo haría así, pero no soy un especialista en estas cosas...
De todas maneras, siempre he pensado que un juego de ajedrez en condiciones no debe de ser nada sencillo de programar,...
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

l1nk3rn3l

#3
 :)
hOLA ColeGas

bueno , nosotros nos planteamos la misma duda, pero por motivos de tiempo
no se llevo a cabo...

cual fue la solucion planteada y evitar problemas en cada plataforma...  bueno
hacer el engine de chess en el mismo bennu, pero como , bueno usando un motor
pequeno como estos

http://home.hccnet.nl/h.g.muller/progress.html
http://www.nanochess.org/chess3.html
https://github.com/DanielWhite94/iota

Como todo juego de tablero usa
+ busqueda alpha beta o minimo maximo para encontrar la mejor jugada
+ cumple reglas fide
+ tiene nivel elo 1800 a 2000
+ si quieres q se ponga dificil , subele al nivel de profundidad de busqueda, por lo general esta en 5 subele a 15 para q piense mas XD
   (easy 2, medium 5, hard 10, nightmare 20)


asi q puedes usar la comunicacion  q usa estos motores para usarlo internamente
en tu propio motor de chess 100% codigo bennu

para darte una idea DEEP BLUE de ibm tiene elo 2700 a 2800 aprox..
los mejores chess engine de la actualidad tienen entre 3000 y 4000 elo rating

con un motor mini como el q te pase perfectamente puede jugar con el
profesor de ajedrez de tu universidad .... XD XD

pero si estamos hablando de un juego lo q prima es la diversión
y poder ganarle a la IA  de vez en cuando , asi q no t vayas por un motor como Stockfish, Houdini o Komodo...

si usas estos micro motores puedes reutilizarlo en motores DIV como DIVGO en html o PIXTUDIO en android XD

Si deseas compartir el resultado  logrado en bennu seria Genial... Buen dia   ;D



http://chessforeva.appspot.com/C0_MicroMax.htm

Hola

Gracias por responder prontamente. l1nk3rn3l me interesa tu respuesta y he visitado esos links..., dices de hacer el engine en bennugd (uso bennugd), pero noto que esos motores estan hechos en C o algo asi, a lo mejor no capte bien lo que me quisiste decir con lo siguiente:
Quoteasi q puedes usar la comunicacion  q usa estos motores para usarlo internamente
en tu propio motor de chess 100% codigo bennu
Agradezco tu tiempo.

l1nk3rn3l

#5
Bennugd o DIV usan sintaxis C , asi q perfectamente lo puedes adaptar a Bennu
ya que por lo general estos motores máximo tienen 100 lineas de código... y tienen buena documentacion....

1. hay q poner en comentarios la linea del printf ya q bennu no tiene esa funcion
2. remplazar los { } por begin y end

un ejemplo ....

D(k,q,l,e,J,Z,E,z,n)    /* recursive minimax search, k=moving side, n=depth*/
int k,q,l,e,J,Z,E,z,n;  /* (q,l)=window, e=current eval. score, E=e.p. sqr.*/
{   
   ***************************
}

lo remplazas por

function D(k,q,l,e,J,Z,E,z,n)    /* recursive minimax search, k=moving side, n=depth*/
begin   
   ***************************
end





el codigo  en javascript de los micro motores esta mas entendible ya que no usa punteros


En este ejemplo portaron el micromax al Javascript  usando un GUI muy chulo... (click derecho ver codigo fuente)
http://chessforeva.appspot.com/C0_MicroMax.htm


aqui va el toledo chess en javascript (click derecho ver codigo fuente)
http://nanochess.org/toledo_javascript_chess_1.html

en algunas instrucciones confusas podrás pedir ayuda en el foro...


;D