Skip to content

feat: implement pawn promotion with move generation and validation#1

Merged
Mgrdich merged 2 commits intomainfrom
pawn-promotion
Jan 5, 2026
Merged

feat: implement pawn promotion with move generation and validation#1
Mgrdich merged 2 commits intomainfrom
pawn-promotion

Conversation

@Mgrdich
Copy link
Owner

@Mgrdich Mgrdich commented Jan 5, 2026

No description provided.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements pawn promotion functionality for the chess engine, allowing pawns to be promoted to Queen, Rook, Bishop, or Knight when reaching the 8th rank (for White) or 1st rank (for Black). This completes Slice 8 of the chess engine foundation specification.

Key Changes

  • Updated move generation to create 4 separate promotion moves (Q, R, B, N) for each pawn reaching the promotion rank
  • Added validation in MakeMove() to require a promotion piece when a pawn reaches the promotion rank
  • Implemented promotion logic in applyMove() to replace the pawn with the promoted piece

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
internal/engine/moves.go Added promotion logic to generatePawnMoves() for both forward moves and captures, generating 4 moves per promotion scenario
internal/engine/board.go Added promotion validation in MakeMove() and promotion execution in applyMove()
internal/engine/moves_test.go Added comprehensive test suite covering promotion move generation, all 4 promotion types, captures, error cases, and both colors
context/spec/001-chess-engine-foundation/tasks.md Marked Slice 8 tasks as completed

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Mgrdich Mgrdich merged commit 8fc17c8 into main Jan 5, 2026
1 check passed
@Mgrdich Mgrdich deleted the pawn-promotion branch January 5, 2026 14:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants