Aquí tienen el conocido juego de las damas. Tiene como opción la posibilidad de jugar humano-máquina, máquina-máquina, giro de tablero y varios niveles (beginer, intermediate, expert).
▻★★★ Blog sobre el lenguaje de programación delphi, incluye software, tutoriales, aplicaciones, videos, código fuente, trucos (about delphi, tips, tutorials, applications, source code, advanced programs, code snippets )
Juego de damas avanzado
Aquí tienen el conocido juego de las damas. Tiene como opción la posibilidad de jugar humano-máquina, máquina-máquina, giro de tablero y varios niveles (beginer, intermediate, expert).
Juego de ajedrez
Este es un nuevo juego de ajedrez avanzado programado en Delphi que incorpora un algoritmo de cálculo de posiciones bastante bueno, aún en los niveles de juego básicos el programa tiene bastante fuerza.
Permite seleccionar el bando con el quieres jugar, tiene diferentes niveles de profundidad de cálculo de posiciones, posee una biblioteca de aperturas muy básica pero creo que suficiente para lo que pretende el programa y un diseño de tablero modificable por el usuario.
Autor: Montero-Ribas
Licencia: GNU GPL
Descargar codigo fuente
Relacionado:
http://delphimagic.blogspot.com/2008/11/ajedrez-con-delphi-chess-with-delphi.html
Ajedrez con Delphi - Chess with Delphi
Para los apasionados del fascinante juego del ajedrez, aquí tenéis un componente que os permitirá programarlo. El software cumple por supuesto las reglas básicas del juego y además contempla el enroque, comer al paso, etc...
También permite ver el tablero desde el punto de vista del oponente, mostrar / ocultar coordenadas y cambiar el diseño de las piezas.
Otra de las buenas características que tiene, es que se puede modificar la profundidad de búsqueda de la mejor jugada con el fin de hacerlo más "inteligente".
Para descargarlo pulsar en el siguiente enlace (incluye el código fuente)
El archivo ejecutable está en la carpeta EXAMPLE->PLAYER.EXE
Juego del Tetris
Para los aficionados a los videojuegos, aquí les muestro el famoso juego del Tetris realizado con Delphi 10.4.1 usando Firemonkey, lo que hace que se pueda ejecutar en Windows, Android y IOS.
El nombre «tetris» deriva del étimo griego «tetra», que significa «cuatro», y hace referencia a la cantidad de cuadros que componen las piezas.
Su autor es Alekséi Pázhitnov
Tetris comienza a ganar popularidad cuando Vadim Gerasimov, un joven de dieciséis años que trabajaba en la Academia de Ciencias, portó el juego a IBM PC. Desde ahí se distribuye gratuitamente a Hungría, donde es programado para Apple II y Commodore 64 por programadores húngaros.
Tetris ha sido históricamente uno de los videojuegos más versionados y es, junto a las Torres de Hanói, el predilecto por los programadores noveles de juegos. Lucharon por robarse la idea y licenciarla Atari y Nintendo, lográndolo finalmente este último gracias a Henk Rogers. Tetris fue el juego que acompañaría a su novedosa consola portátil Game Boy
en su debut, lo que popularizó tanto Tetris como la consola por todo el mundo.
En 1991, Alekséi Pázhitnov emigra a Estados Unidos y, cinco años después, en 1996 funda su propia compañía, Tetris Company, junto con Henk Rogers y se apropia de los derechos de autor.
Volviendo al programa en Delphi, este se desarrolló durante una transmisión en vivo en Twitch el 11 y 18 de abril de 2021.
Si no tiene Delphi para compilar y probar el juego, puede descargar el programa para:
Para ver cómo se ha desarrollado este software, puede consultar las reposiciones de las sesiones de codificación en Twitch:
- en Serial Streamer con cientos de horas de codificación de software y videojuegos de la página del proyecto Tetris Like ,
- en VOD en Vimeo ondemande .
TEMAS PENDIENTES DE PROGRAMAR
- administrar la tecla ESC en el escritorio para salir del programa
- administrar la tecla HARDWARE BACK en Android
- administrar la pausa en caso de pérdida de enfoque de la aplicación en tabletas y teléfonos inteligentes
- administrar el botón de pausa en las plataformas de escritorio
El autor de este programa es: Patrick Prémartin (MVP Embarcadero)
Página de descarga: https://github.com/DeveloppeurPascal/TetrisLike
Utilizar el motor de ajedrez Stockfish con Delphi
Hoy veremos cómo usar el motor de ajedrez Stockfish desde un programa Delphi.
Pero antes hay que conocer qué es un motor de ajedrez: Un motor de ajedrez es una aplicación informática que ayuda a jugar al ajedrez. Sirve para calcular las jugadas posibles, según las reglas del ajedrez, y proponer las mejores.
Los hay de diferentes niveles de fuerza, pero quizás Stockfish, con un nivel de 3400 puntos sea uno de los más avanzados que existen actualmente
El mejor es AlphaZero, desarrollado por DeepMind, que con sólo 4 horas de autoentrenamiento consiguió derrotar a StockFish, en un match a 100 partidas, ganando 28 y empatando 72.
Desde nuestro punto de vista como programadores el motor de ajedrez es una caja negra, no tenemos porqué saber qué hace internamente, lo único que tenemos que hacer es enviarle una instrucción en forma de comando de texto y obtener y tratar con nuestro programa Delphi la salida que nos proporciona.
Esta comunicación se realiza mediante la interfaz universal de ajedrez (UCI) que es un protocolo de comunicación abierto. En el siguiente link tienen las características de este protocolo.
Inicialmente tenemos que descargar el motor de ajedrez stockfish que se hace desde su propia página, hay versiones para Linux, Windows, Android y Mac
Este motor es opensource y en el propio zip de descarga en la carpeta "src" se encuentra su código por si quieren ver cómo funciona internamente.
https://stockfishchess.org/download/
Una vez descargado el fichero lo renombraremos como stockfish.exe
Ahora necesitamos un programa que permita enviar comandos al motor y que se encargue de recibir el resultado que genera.
En nuestro caso voy a utilizar el componente tConsoleIO de Andrey Sevast'yanov que hace un pipe de la entrada y de la salida.
Inicialmente se creó para Delphi 7, pero existe un update para Delphi XE2, que funciona perfectamente hasta Delphi 10.4.2, que es el que yo he utilizado.
Lo primero que tenemos que hacer es una vez que hemos descargado y descomprimido el update para Delphi XE2 instalamos el componente tConsoleIO, para ello abrimos Delphi y desde el menú File / Open abrimos el archivo "MuConsole.dpk"
Hacemos clic con el botón derecho del ratón sobre el ítem MuConsole.bpl y pulsamos INSTALL, una vez terminado el proceso tendremos el componente tConsoleIO listo para ser utilizado en nuestros programas.
Dentro del update para Delphi XE2, tenemos un programa de prueba llamado TestConsoleIO.exe (con su código fuente) que nos servirá para probar la comunicación con el motor de ajedrez.
Lo primero que haremos antes de ejecutar el programa es mover el motor stockfish.exe a la carpeta donde se encuentra el programa TestConsoleIO.exe, después lo ejecutamos y escribimos en la caja de texto Application su nombre para que quede de la siguiente forma:
Y pulsamos el botón "RunBtn"
Una vez que hemos iniciado la comunicación con el motor ya podremos enviarle órdenes desde la caja de texto "Command".
Por ejemplo.
Si escribimos uci y pulsamos el botón SendBtn, veremos las opciones de configuración de stockfish.
Regularmente conviene ir enviado al motor el comando isready, para comprobar si no se ha perdido la conexión y en ese caso nos tiene que devolver el texto readyok si todo es correcto
Ejemplos de órdenes:
setoption name hash value 1024 - Modifica el tamaño de hash
setoption name threads value 2 - Cambia el número de hilos a 2
d - Muestra un display con el tablero de ajedrez
go - Calcula una nueva jugada
stop - Para el proceso de cálculo de nuevas jugadas tan pronto como sea posible
go movetime 1000 - Calcula una nueva jugada en 1000 msegs
position startpos moves g1f3 - mueve el caballo de g1 a la casilla f3
position startpos - inicializa el tablero
Como ejemplo la comunicación UCI entre dos jugadores sería así:
968 >HUMANO: isready
996 <HUMANO: readyok
997 <HUMANO: position startpos moves g1f3
1072 >STOCKFISH: isready
1073 <STOCKFISH: readyok
1073 >STOCKFISH: go movetime 1000
1075 <STOCKFISH: info depth 1 seldepth 0 score cp 1 time 0 nodes 0 pv d7d5
1076 <STOCKFISH: info time 0 nodes 0 nps 0 cpuload 0
1077 <STOCKFISH: info hashfull 0
1078 <STOCKFISH: bestmove d7d5
1078 >HUMANO: position startpos moves g1f3 d7d5
1079 >HUMANO: isready
1106 <HUMANO: readyok
1226 <HUMANO: position startpos moves g1f3 d7d5 d2d4
1227 >STOCKFISH: position startpos moves g1f3 d7d5 d2d4
1228 >STOCKFISH: isready
1229 <STOCKFISH: readyok
1229 >STOCKFISH: go movetime 1000
1230 <STOCKFISH: info depth 1 seldepth 0 score cp 1 time 0 nodes 0 pv g8f6
1231 <STOCKFISH: info time 0 nodes 0 nps 0 cpuload 0
1232 <STOCKFISH: info hashfull 0
1233 <STOCKFISH: bestmove g8f6
1233 >HUMANO: position startpos moves g1f3 d7d5 d2d4 g8f6
1234 >HUMANO: isready
1245 <HUMANO: readyok
1311 <HUMANO: position startpos moves g1f3 d7d5 d2d4 g8f6 c2c4
Enlaces:
Juego de ajedrez por ordenador
Simulación del movimiento de los electrones en un campo electrico
Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...
-
Aquí tienen cómo se envía un stream o un archivo con Indy10 dentro de una red de ordenadores . Incluye el procedimiento principal en el Cl...
-
Seguidamente os dejo una lista bastante amplia de funciones escritas en Delphi que se utilizan cuando estamos programando una aplicación q...
-
Los códigos QR son una forma eficiente de almacenar y acceder a información. Las ventajas de usarlos son: Facilidad de uso : Los códigos Q...


