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

Ouverte
#54 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
javascript
Domaine
game-dev

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
JavaScript
Étoiles
4
Forks
2
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de TMHSDigital/Static_Chess

Toutes les issues de TMHSDigital/Static_Chess

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.