Extract a DOM-free rules core from makeMove and move generation
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- JavaScript
- Star
- 4
- Fork
- 2
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của TMHSDigital/Static_Chess
-
enhancement good first issue severity: medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
TMHSDigital/Static_Chess#53 ·
-
documentation good first issue severity: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
TMHSDigital/Static_Chess#49 ·
-
documentation good first issue severity: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
TMHSDigital/Static_Chess#48 ·
-
documentation severity: medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
TMHSDigital/Static_Chess#47 ·
-
documentation good first issue severity: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
TMHSDigital/Static_Chess#46 ·
Tất cả issue của TMHSDigital/Static_Chess
Issue tương tự
-
good first issue tests
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Download a leaderboard as CSVĐang mởenhancement good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
growilabs/growi#12246 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
TMHSDigital/Free-Game-Dev-Assets#301 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 79/100