Skip to content

AlexLopEx03/Ajedrez

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EN English version of this readme

Ajedrez

Juego de ajedrez contra IA con dificultad regulable.

🌐 Web del proyecto: https://juegoajedrez.vercel.app

Proyecto personal de código abierto por AlexLopEx03 bajo licencia AGPLv3.0 📜


Tecnologías utilizadas

Vue Vuetify

Tip

  • Vue: Framework de frontend de JavaScript, con un enfoque progresivo y declarativo.

  • Vuetify: Librería de componentes de UI para Vue, basada en Material Design.

Otras librerías y dependencias:

  • Chess.js: Librería para el manejo de lógica interna de ajedrez, gestiona el estado de la partida y gran parte de las validaciones.
  • Pinia: Librería de Vue para el manejo de estados globales.
  • Vite: Herramienta de desarrollo y empaquetador web ultrarápido, creado por los autores de Vue.
  • Vite-plugin-pwa: Herramienta de Vite para facilitar la creación de Progressive Web Apps (PWA's).

Important

Este proyecto utiliza Stockfish como IA para controlar las piezas rivales.

Stockfish es uno de los motores de ajedrez mas fuertes del mundo, desarrollado en C++ como proyecto de código abierto de forma comunitaria desde el año 2008 hasta ahora y sigue activo.

Enlace del repositorio oficial de Stockfish


Note

Para hacer uso de Stockfish en el navegador he empleado el proyecto de Stockfish.js, una tecnología hecha con WebAssembly que hace de puente entre el navegador web con JavaScript y el resultado del C++ compilado de Stockfish.

Enlace del repositorio de Stockfish.js


Aquí tienes un ejemplo de código para ejecutar Stockfish.js, que está envuelto en un Web Worker:

¿Qué es un web worker? Un Web Worker es una tecnología de JavaScript que permite ejecutar tareas en segundo plano en el navegador, de forma paralela al hilo principal de la web.

Se usan principalmente para tareas de procesamiento intensivo, sin que afecten negativamente al rendimiento de la web ni bloqueen la interfaz de usuario.

// Fragmento de JavaScript para usar el Web Worker de Stockfish.js

// Inicializar el Web Worker
const stockfish = new Worker('./stockfish/stockfish.js')


// Comunicarse con el Web Worker mediante mensajes
let dificultad = 8
stockfish.postMessage(`setoption name Skill Level value ${dificultad}`)


// El Web Worker podrá o no enviar respuestas según lo que procese

// Aquí recogeríamos los movimientos que nos envíe stockfish en sus mensajes
stockfish.onmessage = (event) => {
    if(event.data.startsWith('bestmove')){
        console.log(event.data) // -> devolvería 'bestmove a2a4' por ejemplo
    }
}


  • Versión PWA disponible:

Si tienes interés en probar el ajedrez fuera del navegador y sin conexión a internet, puedes descargar la versión PWA de la web.


Cualquier duda o comentario acerca del proyecto puedes dirigirte a la sección de Discussions.

About

Juego de ajedrez contra IA

Topics

Resources

License

Stars

Watchers

Forks