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

Aperta
#54 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
javascript
Ambito
game-dev

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

Lingua principale
JavaScript
Stelle
4
Fork
2
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di TMHSDigital/Static_Chess

Tutte le issue di TMHSDigital/Static_Chess

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.