From 15cdcd8a70960081d5bbdb7f1be99e88d7e85bdb Mon Sep 17 00:00:00 2001 From: Markku Velinen Date: Wed, 12 May 2010 00:38:51 +0300 Subject: [PATCH] Fixed AI vs AI deadlock. Decreased the frame rate while no animations are playing. Did some minor optimizations to the AI. --- bin/NALCG.exe | Bin 283648 -> 284160 bytes src/ais/daniel/aiadapter.cpp | 7 +++++-- src/ais/daniel/aidaniel.cpp | 7 +------ src/ais/daniel/aidaniel.h | 1 - src/ais/daniel/movementgenerator.cpp | 18 +++++++++--------- src/ais/daniel/position.cpp | 34 +++++++++++++++++----------------- src/view/viewframelistener.cpp | 6 ++++++ 7 files changed, 38 insertions(+), 35 deletions(-) rewrite bin/NALCG.exe (65%) diff --git a/bin/NALCG.exe b/bin/NALCG.exe dissimilarity index 65% index 03be788d413107b1aab998c28ac0b0740937bf46..408c89932e31424662b9cb83e0297bc7da99d88d 100644 GIT binary patch delta 74613 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%0DnlOo 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 + int mv; + { + boost::mutex::scoped_lock l(mutex); + mv = ai->getNextMove(); + } if (moveAllowed) { diff --git a/src/ais/daniel/aidaniel.cpp b/src/ais/daniel/aidaniel.cpp index 1c408ce..23be51a 100644 --- a/src/ais/daniel/aidaniel.cpp +++ b/src/ais/daniel/aidaniel.cpp @@ -3,7 +3,7 @@ AIDaniel::AIDaniel(Position *p) : position(p), isInterrupted(false) { } -int AIDaniel::alphaBeta(Position *pos, int depth, int alpha, int beta, bool max) { +inline int AIDaniel::alphaBeta(Position *pos, int depth, int alpha, int beta, bool max) { if (isInterrupted) { return 0; @@ -70,11 +70,6 @@ int AIDaniel::getNextMove() { return bestMove; } - -Position* AIDaniel::getPosition() { - return position; -} - void AIDaniel::setPosition(Position *p) { delete position; position = p; diff --git a/src/ais/daniel/aidaniel.h b/src/ais/daniel/aidaniel.h index 00aabd4..d55f45f 100644 --- a/src/ais/daniel/aidaniel.h +++ b/src/ais/daniel/aidaniel.h @@ -19,7 +19,6 @@ class AIDaniel { public: AIDaniel(Position *p); int getNextMove(); - Position* getPosition(); void setPosition(Position *p); void interrupt(); ~AIDaniel(); diff --git a/src/ais/daniel/movementgenerator.cpp b/src/ais/daniel/movementgenerator.cpp index 3316295..2aee062 100644 --- a/src/ais/daniel/movementgenerator.cpp +++ b/src/ais/daniel/movementgenerator.cpp @@ -6,7 +6,7 @@ MovementGenerator::MovementGenerator() { } -void MovementGenerator::addLegalRookMoves(int i, int j) { +inline void MovementGenerator::addLegalRookMoves(int i, int j) { // Check to the left int x = j - 1; while (x >= 0) { @@ -56,7 +56,7 @@ void MovementGenerator::addLegalRookMoves(int i, int j) { } } -void MovementGenerator::addLegalBishopMoves(int i, int j) { +inline void MovementGenerator::addLegalBishopMoves(int i, int j) { // Check upwards to the left int x = j - 1; int y = i - 1; @@ -114,7 +114,7 @@ void MovementGenerator::addLegalBishopMoves(int i, int j) { } } -void MovementGenerator::addLegalKnightMoves(int i, int j) { +inline void MovementGenerator::addLegalKnightMoves(int i, int j) { int x = j - 2; int y = i - 1; if (x >= 0 && y >= 0 && (board[y][x] == ' ' || isPieceHostile(y, x)) && isKingSafe(i,j,y,x)) { @@ -151,7 +151,7 @@ void MovementGenerator::addLegalKnightMoves(int i, int j) { } } -void MovementGenerator::addLegalKingMoves(int i, int j) { +inline void MovementGenerator::addLegalKingMoves(int i, int j) { for (int y = i - 1; y <= i + 1; ++y) { for (int x = j - 1; x <= j + 1; ++x) { if (!(y == i && x == j)) { @@ -164,7 +164,7 @@ void MovementGenerator::addLegalKingMoves(int i, int j) { } } -void MovementGenerator::addLegalPawnMoves(int i, int j) { +inline void MovementGenerator::addLegalPawnMoves(int i, int j) { int x,y; // Check whether it's a white or a black pawn if (board[i][j] == 'p') { @@ -219,7 +219,7 @@ void MovementGenerator::addLegalPawnMoves(int i, int j) { } } -void MovementGenerator::addLegalCastlingMoves() { +inline void MovementGenerator::addLegalCastlingMoves() { if (whiteToMove) { if (board[7][4] == 'x' && board[7][7] == 't') { if (board[7][5] == ' ' && board[7][6] == ' ') { @@ -536,7 +536,7 @@ inline bool MovementGenerator::isKingSafe(int i1, int j1, int i2, int j2) { return true; } -bool MovementGenerator::isPieceHostile(int i, int j) { +inline bool MovementGenerator::isPieceHostile(int i, int j) { if (whiteToMove && board[i][j] > 'A' && board[i][j] < 'Z') { return true; } @@ -547,12 +547,12 @@ bool MovementGenerator::isPieceHostile(int i, int j) { } // Restore board to pre-move state -void MovementGenerator::restore(int i1, int j1, int i2, int j2, char memory) { +inline void MovementGenerator::restore(int i1, int j1, int i2, int j2, char memory) { board[i1][j1] = board[i2][j2]; board[i2][j2] = memory; } -std::string MovementGenerator::convertToStringCoordinates(int i1, int j1, int i2, int j2) { +inline std::string MovementGenerator::convertToStringCoordinates(int i1, int j1, int i2, int j2) { assert(false && "shouldn't be called"); std::string str; str.push_back(j1 + 'A'); diff --git a/src/ais/daniel/position.cpp b/src/ais/daniel/position.cpp index 03427c7..073e14b 100644 --- a/src/ais/daniel/position.cpp +++ b/src/ais/daniel/position.cpp @@ -30,7 +30,7 @@ Position::Position(MovementGenerator *mg, char b[8][8], bool white) : generator( } // Is the game over -bool Position::testLeafNode() { +inline bool Position::testLeafNode() { // Checkmate or stalemate if (legalMoves.empty()) { return true; @@ -54,7 +54,7 @@ bool Position::testLeafNode() { return true; } -char Position::translate(char piece) { +inline char Position::translate(char piece) { switch(piece) { case 'T': return 'R'; @@ -72,7 +72,7 @@ char Position::translate(char piece) { return piece; } -int Position::pawnIsolationPenalty(int j, bool white) { +inline int Position::pawnIsolationPenalty(int j, bool white) { char p = 'P'; char e = 'E'; if (white) { @@ -109,7 +109,7 @@ int Position::pawnIsolationPenalty(int j, bool white) { return 20; } -int Position::pawnBackwardPenalty(int i, int j, bool white) { +inline int Position::pawnBackwardPenalty(int i, int j, bool white) { int y = i + 1; int x1 = j - 1; int x2 = j + 1; @@ -144,7 +144,7 @@ int Position::pawnBackwardPenalty(int i, int j, bool white) { return 10; } -int Position::pawnAdvancementBonus(int i, int j, bool white) { +inline int Position::pawnAdvancementBonus(int i, int j, bool white) { int advancement; if (white) { advancement = 6 - i; @@ -175,7 +175,7 @@ int Position::pawnAdvancementBonus(int i, int j, bool white) { return advancement * 3; } -int Position::pawnProximityToKingBonus(int i, int j, bool white) { +inline int Position::pawnProximityToKingBonus(int i, int j, bool white) { int bonus = 0; char p = 'P'; char e = 'E'; @@ -186,7 +186,7 @@ int Position::pawnProximityToKingBonus(int i, int j, bool white) { for (int y = i - 1; y <= i + 1; ++y) { for (int x = j - 1; x <= j + 1; ++x) { if (x >= 0 && x < 8 && y >= 0 && y < 8 && (board[y][x] == p || board[y][x] == e)) { - bonus += 10; + bonus += 6; } } } @@ -197,7 +197,7 @@ int Position::pawnProximityToKingBonus(int i, int j, bool white) { return bonus; } -int Position::centreBonus(int x) { +inline int Position::centreBonus(int x) { switch (x) { case 0: case 7: @@ -213,7 +213,7 @@ int Position::centreBonus(int x) { } } -int Position::bishopControlBonus(int i, int j, bool white) { +inline int Position::bishopControlBonus(int i, int j, bool white) { int bonus = 0; // Check upwards to the left int x = j - 1; @@ -286,7 +286,7 @@ downright: return bonus; } -int Position::rookControlBonus(int i, int j, bool white) { +inline int Position::rookControlBonus(int i, int j, bool white) { int bonus = 0; // Check to the left int x = j - 1; @@ -350,7 +350,7 @@ down: return bonus; } -int Position::xrayControlBonus(int i, int j, bool white) { +inline int Position::xrayControlBonus(int i, int j, bool white) { int bonus = 0; bool whiteSide = true; if (i < 4) { @@ -381,7 +381,7 @@ int Position::xrayControlBonus(int i, int j, bool white) { return bonus; } -void Position::reset() { +inline void Position::reset() { whiteToMove = true; isCheck = false; for (int i = 0; i < 8; ++i) { @@ -411,7 +411,7 @@ void Position::reset() { } } -void Position::move(int mv, int promotion) { +inline void Position::move(int mv, int promotion) { // Move the piece board[UNPACK_I2(mv)][UNPACK_J2(mv)] = board[UNPACK_I1(mv)][UNPACK_J1(mv)]; board[UNPACK_I1(mv)][UNPACK_J1(mv)] = ' '; @@ -518,7 +518,7 @@ void Position::move(int mv, int promotion) { isCheck = !generator->isKingSafe(0,0,0,0); } -void Position::print() { +inline void Position::print() { for (int i = 0; i < 8; ++i) { std::cout << " +---+---+---+---+---+---+---+---+" << std::endl; std::cout << 8 - i; @@ -531,7 +531,7 @@ void Position::print() { std::cout << " A B C D E F G H" << std::endl << std::endl; } -void Position::getBoard(char b[8][8], int *wkx, int *wky, int *bkx, int *bky) { +inline void Position::getBoard(char b[8][8], int *wkx, int *wky, int *bkx, int *bky) { for (int i = 0; i < 8; ++i) { for (int j = 0; j < 8; ++j) { if (board[i][j] == 'K' || board[i][j] == 'X') { @@ -658,11 +658,11 @@ int Position::evaluate() { return white - black; } -std::vector* Position::getLegalMoves() { +inline std::vector* Position::getLegalMoves() { return &legalMoves; } -MovementGenerator* Position::getMovementGenerator() { +inline MovementGenerator* Position::getMovementGenerator() { return generator; } diff --git a/src/view/viewframelistener.cpp b/src/view/viewframelistener.cpp index 2ba3e9d..ba4ed5e 100644 --- a/src/view/viewframelistener.cpp +++ b/src/view/viewframelistener.cpp @@ -2,6 +2,8 @@ #include "viewconstants.h" +#include + bool ViewFrameListener::frameStarted(const FrameEvent& evt) { if (!mContinue) @@ -53,6 +55,10 @@ bool ViewFrameListener::frameStarted(const FrameEvent& evt) bool ViewFrameListener::frameEnded(const FrameEvent& evt) { updateStats(); + if (!mAnimationManager.animationsRunning()) + { + boost::this_thread::sleep(boost::posix_time::milliseconds(10)); + } return true; } -- 2.11.4.GIT