Skip to content

Commit

Permalink
fixed bug and change min depth to 5
Browse files Browse the repository at this point in the history
  • Loading branch information
mbluemer committed Apr 29, 2017
1 parent 2108fe2 commit 0b12a63
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 9 deletions.
1 change: 1 addition & 0 deletions include/BitBoard.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ class BitBoard
vmup actions() const;
bup result(mup &move) const;
void printState() const;
std::string toString() const;
};

#endif
2 changes: 1 addition & 1 deletion include/MinimaxSearch.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ typedef std::unique_ptr<Move> mup;
class MinimaxSearch
{
private:
static const int MIN_DEPTH = 3;
static const int MIN_DEPTH = 5;
static const int MAX_DEPTH = 9;
Heuristic heuristic;

Expand Down
40 changes: 33 additions & 7 deletions src/BitBoard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,18 +125,32 @@ BitBoard BitBoard::boardMove(BitBoard &board, uint32_t piece, uint32_t moveTo) c
int diff = std::abs((double)pieceLoc - moveLoc);
int avg = ((pieceLoc + moveLoc) / 2);
if (board.m_isBlacksTurn) {
if (diff == 2 || diff == 14) white &= ~(1<<avg);
if (diff == 2 || diff == 14) {
white &= ~(1<<avg);
kings &= ~(1<<avg);
}
black = (black | moveTo) & ~piece;
kings |= (black & blackKingSpots);
wasKinged = moveTo & blackKingSpots;
if (!(piece & kings) && (moveTo & blackKingSpots)) {
kings |= moveTo;
wasKinged = true;
}
} else {
if (diff == 2 || diff == 14) black &= ~(1<<avg);
if (diff == 2 || diff == 14) {
black &= ~(1<<avg);
kings &= ~(1<<avg);
}
white = (white | moveTo) & ~piece;
kings |= (white & whiteKingSpots);
wasKinged = moveTo & whiteKingSpots;
if (!(piece & kings) && (moveTo & whiteKingSpots)) {
kings |= moveTo;
wasKinged = true;
}
}

if (piece & kings) kings = moveTo | (kings & ~piece);
// if you're a king
if (piece & kings) {
kings &= ~piece; // make sure piece's spot is no longer a king
kings |= moveTo; // set piece's new spot as a king;
}

return BitBoard(black, white, kings, board.m_isBlacksTurn, wasKinged);
}
Expand Down Expand Up @@ -259,3 +273,15 @@ void BitBoard::printState() const
std::cout<<"-"<<pieceToString(19)<<"-"<<pieceToString(13)<<"-"<<pieceToString(7)<<"-"<<pieceToString(1)<<std::endl;
std::cout<<pieceToString(18)<<"-"<<pieceToString(12)<<"-"<<pieceToString(6)<<"-"<<pieceToString(0)<<"-"<<std::endl;
}

std::string BitBoard::toString() const
{
return "-"+pieceToString(11)+"-"+pieceToString(5)+"-"+pieceToString(31)+"-"+pieceToString(25)+"\n"+
pieceToString(10)+"-"+pieceToString(4)+"-"+pieceToString(30)+"-"+pieceToString(24)+"-"+"\n"+
"-"+pieceToString(3)+"-"+pieceToString(29)+"-"+pieceToString(23)+"-"+pieceToString(17)+"\n"+
pieceToString(2)+"-"+pieceToString(28)+"-"+pieceToString(22)+"-"+pieceToString(16)+"-"+"\n"+
"-"+pieceToString(27)+"-"+pieceToString(21)+"-"+pieceToString(15)+"-"+pieceToString(9)+"\n"+
pieceToString(26)+"-"+pieceToString(20)+"-"+pieceToString(14)+"-"+pieceToString(8)+"-"+"\n"+
"-"+pieceToString(19)+"-"+pieceToString(13)+"-"+pieceToString(7)+"-"+pieceToString(1)+"\n"+
pieceToString(18)+"-"+pieceToString(12)+"-"+pieceToString(6)+"-"+pieceToString(0)+"-"+"\n";
}
2 changes: 1 addition & 1 deletion src/MinimaxSearch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ double MinimaxSearch::alphaBeta(bup &board, double alpha, double beta, int depth
bool MinimaxSearch::shouldStop(bup &board, int depth)
{
// always return at some max depth regardless
if (depth == MAX_DEPTH) return true;
if (depth >= MAX_DEPTH) return true;

bool jumpAvailable = heuristic.jumpeablePieces() != 0;

Expand Down

0 comments on commit 0b12a63

Please sign in to comment.