From 72a0ec8ff3367348aca0aa6675d9e6d4c76aaa69 Mon Sep 17 00:00:00 2001 From: Mark Bluemer Date: Tue, 18 Apr 2017 08:34:13 -0400 Subject: [PATCH] Move generation complete --- include/BitBoard.h | 2 ++ src/BitBoard.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/include/BitBoard.h b/include/BitBoard.h index b398753..7c632b0 100644 --- a/include/BitBoard.h +++ b/include/BitBoard.h @@ -72,12 +72,14 @@ class BitBoard int const getIndex(uint32_t piece); void addJumps(std::vector &moves); + void addNormalMoves(std::vector &moves); void generateAllJumps(BitBoard board, Move move, uint32_t piece, std::vector &moves); BitBoard boardMove(BitBoard &board, uint32_t piece, uint32_t moveTo); std::vector generateImmediateJumps(uint32_t piece); void addNewMove(uint32_t start, uint32_t end, std::vector &moves); public: + BitBoard(); BitBoard(uint32_t black, uint32_t white, uint32_t kings); std::string const player(); diff --git a/src/BitBoard.cpp b/src/BitBoard.cpp index addc157..f3cd033 100644 --- a/src/BitBoard.cpp +++ b/src/BitBoard.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "Move.h" #include "BitBoard.h" @@ -44,6 +45,38 @@ void BitBoard::addJumps(std::vector &moves) } } +void BitBoard::addNormalMoves(std::vector &moves) { + uint32_t notOcc = ~(m_whitePieces|m_blackPieces); + for (int i = 0; i < 32; ++i) { + uint32_t piece; + if (m_isBlacksTurn) { + piece = m_blackPieces & 1< &moves) { if (move.isEmpty()) move.addMove(getIndex(piece)); // Add start position @@ -131,6 +164,8 @@ void BitBoard::addNewMove(uint32_t start, uint32_t end, std::vector &moves /* Public functions */ +BitBoard::BitBoard() {}; + BitBoard::BitBoard(uint32_t black, uint32_t white, uint32_t kings) : m_blackPieces(black), m_whitePieces(white), m_kings(kings) { @@ -146,6 +181,9 @@ std::vector const BitBoard::actions() { std::vector moves; addJumps(moves); + if (moves.empty()) { + addNormalMoves(moves); + } return moves; }