Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Napoleon - search.h

search.h

Caricato da: Crybot
Scarica il programma completo

  1. #ifndef SEARCH_H
  2. #define SEARCH_H
  3. #include "defines.h"
  4. #include "board.h"
  5. #include "move.h"
  6. #include "constants.h"
  7. #include "movegenerator.h"
  8. #include "constants.h"
  9. #include "stopwatch.h"
  10. #include "console.h"
  11. #include <cstring>
  12.  
  13. namespace Napoleon
  14. {
  15.     enum SearchTask { Think, Infinite, Stop, Quit };
  16.     static const int rMargin[] = { 0, Constants::Piece::PieceValue[PieceType::Knight],  Constants::Piece::PieceValue[PieceType::Rook] };
  17.  
  18.     class Board;
  19.     namespace Search
  20.     {
  21.         extern const int AspirationValue;
  22.         extern bool MoveTime;
  23.         extern SearchTask Task;
  24.         extern StopWatch Timer;
  25.         extern int ThinkTime;
  26.         extern int Time[2];
  27.         extern int moveScores[Constants::MaxMoves];
  28.         extern int history[2][4096];
  29.         extern int nodes;
  30.         extern Move killerMoves[Constants::MaxPly][2];
  31.  
  32.         std::string GetInfo(Board&, Move, int, int, int);
  33.         std::string GetPv(Board&, Move, int);
  34.  
  35.         void StartThinking(Board&);
  36.         void StopThinking();
  37.         Move iterativeSearch(Board&);
  38.         int searchRoot(int, int, int, Move&, Board&);
  39.  
  40.         int search(int, int, int, Board&);
  41.         int quiescence(int, int, Board&);
  42.  
  43.         void setScores(Move[], Board&, int, int);
  44.         void pickMove(Move[], int, int);
  45.         void orderCaptures(Move[], Board&, int, int);
  46.  
  47.         int futilityMargin(int);
  48.         int razorMargin(int);
  49.     }
  50.  
  51.     inline int Search::futilityMargin(int depth)
  52.     {
  53.         return rMargin[depth];
  54.     }
  55.     inline int Search::razorMargin(int depth)
  56.     {
  57.         return (50 + 25*(depth-1));
  58.     }
  59. }
  60.  
  61. #endif // SEARCH_H