From e4c3be3b28ffcf93b1f83aa075c89b77f102e704 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 14 Aug 2026 10:17:20 +0200 Subject: adding a create move helper function --- src/board/board.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ src/board/board.hpp | 2 ++ 2 files changed, 44 insertions(+) diff --git a/src/board/board.cpp b/src/board/board.cpp index 9d0ef47..3b1383a 100644 --- a/src/board/board.cpp +++ b/src/board/board.cpp @@ -10,6 +10,48 @@ int PositionToIndex(Position i) { return (i.rank * 8) + i.file; } +uint16_t CreateMove(uint8_t from, uint8_t to, PieceType promotion) { + if (from >= 64 || to >= 64) { + std::cout << "expected a valid chess piece position 0-63"; + assert(false); + } + uint16_t move = 0; + bool firstPromotionFlag = false; + bool secondPromotionFlag = false; + switch (promotion) { + case NONEPIECE: + case KNIGHT: + firstPromotionFlag = false; + secondPromotionFlag = false; + break; + case QUEEN: + firstPromotionFlag = true; + secondPromotionFlag = false; + break; + case ROOK: + firstPromotionFlag = false; + secondPromotionFlag = true; + break; + case BISHOP: + firstPromotionFlag = true; + secondPromotionFlag = true; + break; + default: + std::cout << "unexpected promotion type"; + assert(false); + exit(1); + } + if (firstPromotionFlag) { + move |= (1 << 1); + } + if (secondPromotionFlag) { + move |= (1 << 0); + } + move |= (from << 2); + move |= (to << 8); + return move; +}; + PieceType getPromotionTypeFromMove(uint16_t move) { bool firstFlag = (move & (1 << 1)) != 0; bool secondFlag = (move & (1 << 0)) != 0; diff --git a/src/board/board.hpp b/src/board/board.hpp index 8ef3e56..b27a9d1 100644 --- a/src/board/board.hpp +++ b/src/board/board.hpp @@ -38,8 +38,10 @@ struct Position { * flag F for from position T for to position, and 00 for empty ones. */ +uint16_t CreateMove(uint8_t from, uint8_t to, PieceType promotion = NONEPIECE); PieceType getPromotionTypeFromMove(uint16_t move); uint8_t getFromValueFromMove(uint16_t move); +uint8_t getToValueFromMove(uint16_t move); struct Move { Position From; -- cgit v1.2.3