Extract a DOM-free rules core from makeMove and move generation
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Refatoração
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- javascript
Direção de pesquisa
Read js/game.js at makeMove (143-276) and move generation (334-461), then check how js/ai.js uses _getAllLegalMoves (132-139). Start by adding the listed undo, SAN, and perft tests; run them with npm test. Done means moves apply to a board copy without DOM access, special-move edits share one implementation, and the stated perft counts pass.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
makeMove is about 130 lines mixing rule execution, the undo snapshot, notation, game-end detection, rendering, sound and persistence, all against module-level state. Move generation and check detection read the same globals. Special-move rules therefore exist in three places that must change together.
Where
js/game.js:143-276(makeMove)js/game.js:334-461(generateLegalMovesForPiece, including a hand-copied simulation of en passant and castling at:414-444)js/game.js:5-20(module state and DOM lookups at load)js/ai.js:132-139(_getAllLegalMovesreturns[])
Impact
js/game.js is the most-changed source file. The ordering dependencies inside makeMove produced #24, and the generator and canCastle disagreeing produced #22. Two roadmap features are blocked by this shape: a promotion choice needs the move to pause for a dialog, and an AI search needs to apply moves to a board copy without touching the DOM, sound or storage.
Suggested fix
Tests first: undo round trips, SAN for capture, check, mate, castle and en passant, and perft counts from the start position (20, 400, 8902 at depths 1 to 3).
- Extract a pure
applyMove(state, from, to, promotion)that returns the new board, king positions, en passant target and move record.makeMovecalls it and keeps the UI work. - Extract the UI tail (render, status, history, sound, save) into its own function.
- Pass
promotionas a parameter, defaulting to queen. - Change
generateLegalMovesForPieceandcanCastleto take a state object, defaulting to the globals so callers keep working. - Replace the hand-rolled simulation at
:414-444withapplyMove.
Each step leaves the app working.
Acceptance criteria
- Legal moves can be generated and a move applied on a board copy with no DOM
- Special-move board edits live in one place
- Perft counts pass
Getting started
- Relevant files:
js/game.js,js/ai.js - How to run tests:
npm install, thennpm testandnpm run lint - Related docs:
docs/ARCHITECTURE.md,.github/CONTRIBUTING.md
Filed by repo-audit/full-audit at 8a2c86c. Severity: medium. Effort: L. audit-key: tech-debt|js/game.js|makeMove
- Linguagem predominante
- JavaScript
- Estrelas
- 4
- Forks
- 2
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de TMHSDigital/Static_Chess
-
enhancement good first issue severity: medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
TMHSDigital/Static_Chess#53 ·
-
documentation good first issue severity: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
TMHSDigital/Static_Chess#49 ·
-
documentation good first issue severity: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
TMHSDigital/Static_Chess#48 ·
-
documentation severity: medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
TMHSDigital/Static_Chess#47 ·
-
documentation good first issue severity: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
TMHSDigital/Static_Chess#46 ·
Todas as issues de TMHSDigital/Static_Chess
Issues semelhantes
-
good first issue tests
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
growilabs/growi#12246 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
TMHSDigital/Free-Game-Dev-Assets#301 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 79/100