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

未关闭
#54 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
javascript
领域
game-dev

调研方向

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.

由索引模型根据 Issue 内容生成。

描述

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

主要语言
JavaScript
星标
4
派生
2
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

TMHSDigital/Static_Chess 的其他 Issue

查看 TMHSDigital/Static_Chess 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。