Example #1
0
 private void UnReplacePawn(IPiece piece, IPiece pawn)
 {
     if (ToMove == Side.Black)
     {
         for (int i = 0; i < whitePieceList.Length; ++i)
         {
             if (whitePieceList[i] == piece)
             {
                 whitePieceList[i] = pawn;
                 pawn.ForceSquare(piece.HomeSquare);
                 ZKey ^= pawn.ZKey;
                 break;
             }
         }
     }
     else
     {
         for (int i = 0; i < blackPieceList.Length; ++i)
         {
             if (blackPieceList[i] == piece)
             {
                 blackPieceList[i] = pawn;
                 pawn.ForceSquare(piece.HomeSquare);
                 ZKey ^= pawn.ZKey;
                 break;
             }
         }
     }
 }
Example #2
0
        private void ReplacePawn(IPiece pawn, IPiece iPiece)
        {
            if (ToMove == Side.White)
            {
                for (int i = 0; i < whitePieceList.Length; ++i)
                {
                    if (whitePieceList[i] == pawn)
                    {
                        iPiece.ForceSquare(pawn.HomeSquare);
                        ZKey ^= iPiece.ZKey;
                        whitePieceList[i] = iPiece;
                        break;
                    }
                }
            }
            else
            {
                for (int i = 0; i < blackPieceList.Length; ++i)
                {
                    if (blackPieceList[i] == pawn)
                    {
                        iPiece.ForceSquare(pawn.HomeSquare);
                        ZKey ^= iPiece.ZKey;
                        blackPieceList[i] = iPiece;
                        break;
                    }
                }
            }

            promoted.Push(pawn);
        }