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 - knight.cpp

knight.cpp

Caricato da: Crybot
Scarica il programma completo

  1. #include "knight.h"
  2. #include "compassrose.h"
  3. #include "movedatabase.h"
  4. #include "utils.h"
  5. #include "board.h"
  6.  
  7. namespace Napoleon
  8. {
  9.     BitBoard Knight::GetAllTargets(BitBoard knights, Board& board)
  10.     {
  11.         BitBoard targets = MoveDatabase::KnightAttacks[(Utils::BitBoard::BitScanForward(knights))];
  12.         return targets & ~board.GetPlayerPieces();
  13.     }
  14.  
  15.     BitBoard Knight::GetKnightAttacks(BitBoard knights)
  16.     {
  17.         BitBoard west, east, attacks;
  18.         east = CompassRose::OneStepEast(knights);
  19.         west = CompassRose::OneStepWest(knights);
  20.         attacks = (east | west) << 16;
  21.         attacks |= (east | west) >> 16;
  22.         east = CompassRose::OneStepEast(east);
  23.         west = CompassRose::OneStepWest(west);
  24.         attacks |= (east | west) << 8;
  25.         attacks |= (east | west) >> 8;
  26.  
  27.         return attacks;
  28.     }
  29. }