Exemplo n.º 1
0
 /**
  * @param BoardWalker   $walker
  * @param MoveInterface $lastMove
  */
 private function walkEnPassant(BoardWalker $walker, MoveInterface $lastMove = null)
 {
     $lastEnemyPiece = $lastMove ? $walker->getBoard()->getSquare($lastMove->getTo())->getPiece() : null;
     if ($lastMove === null || $lastEnemyPiece === null || $lastEnemyPiece->getType() !== PieceInterface::TYPE_PAWN) {
         return;
     }
     $leftToPosition = $walker->peek(BoardWalker::DIRECTION_LEFT, 1, null, true, false);
     $rightToPosition = $walker->peek(BoardWalker::DIRECTION_RIGHT, 1, null, true, false);
     if ($leftToPosition !== null) {
         if (abs(BoardHelper::getRowFromPosition($lastMove->getFrom()) - BoardHelper::getRowFromPosition($leftToPosition)) !== 2) {
             return;
         }
         if ($lastMove->getTo() === $leftToPosition) {
             // en passant left
             $walker->forwardLeft(1, false)->restart();
         }
     }
     if ($rightToPosition !== null) {
         if (abs(BoardHelper::getRowFromPosition($lastMove->getFrom()) - BoardHelper::getRowFromPosition($rightToPosition)) !== 2) {
             return;
         }
         if ($lastMove->getTo() === $rightToPosition) {
             // en passant left
             $walker->forwardRight(1, false)->restart();
         }
     }
 }
Exemplo n.º 2
0
 public function testGetBoard()
 {
     $this->assertInstanceOf('CL\\Windmill\\Model\\Board\\Board', $this->boardWalker->getBoard());
 }