Make the AI opponent skeleton playable (single-player mode)

Abierto
#54 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
javascript
Área
game-dev

Línea de trabajo

Start with js/ai.js and js/game.js, especially the listed move generation and search methods, then read docs/ARCHITECTURE.md. The proposal spans legal move generation, search, UI controls, and responsive play, with a Web Worker question still open. Done means a player can choose a side, start a game against the computer, and the computer always makes legal moves while the UI stays responsive.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement severity: medium

Summary

The app supports only two players on one device. js/ai.js holds an AI skeleton, but it is not loaded and cannot produce a move.

Where

  • js/ai.js:132-139 (_getAllLegalMoves returns []), js/ai.js:76-86 (findBestMove therefore resolves null), js/ai.js:151-161 (_minimax returns 0)
  • js/config.js:13, js/config.js:26 (AI_DIFFICULTY: 'easy' does not match the EASY/MEDIUM/HARD keys at js/ai.js:9-13)
  • index.html:65-71 (script not loaded), js/game.js:313-325 (generateAllLegalMoves)

Proposal

  1. Make move generation and apply/unapply take a board argument so search can run on a copy (#31).
  2. Ship a first version that plays a random legal move, then a material-greedy one-ply move using the existing _evaluatePosition.
  3. Add minimax with alpha-beta at depth 2 to 3.
  4. UI: a "Play vs computer" toggle with side and difficulty selectors; lock input while the AI is thinking; Undo takes back two plies in AI mode. Normalise the difficulty key casing.

Open question: depth 4 on the main thread may stall the UI. A Web Worker needs the engine code to be DOM-free, which game.js is not today.

Who benefits

Solo visitors to the hosted page, who currently have no one to play against.

Acceptance criteria

  • A player can start a game against the computer and pick a side
  • The computer always plays a legal move
  • The UI stays responsive while it thinks

Getting started

  • Relevant files: js/ai.js, js/game.js, js/config.js, index.html
  • How to run tests: npm install, then npm test and npm run lint
  • Related docs: docs/ARCHITECTURE.md, .github/CONTRIBUTING.md

Filed by repo-audit/full-audit at 8a2c86c. Severity: medium. Effort: L. audit-key: enhancement|js/ai.js|ChessAI._getAllLegalMoves

Lenguaje dominante
JavaScript
Estrellas
4
Forks
2
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de TMHSDigital/Static_Chess

Todos los issues de TMHSDigital/Static_Chess

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.