private static ulong GetPieceValue(PieceOfColor poc, ushort boardIndexOfPiece) { Debug.Assert(boardIndexOfPiece < 64); var kindOfPiece = poc.GetPieceHashValue(); var pieceOffset = 64 * kindOfPiece + boardIndexOfPiece; return(Piece[pieceOffset]); }
private static ulong GetPieceValues(Board board) { ulong acc = 0; for (var color = 0; color < 2; color++) { for (var piece = 0; piece < 6; piece++) { var piecePlacement = board.Occupancy[color][piece]; if (piecePlacement != 0) { foreach (var index in piecePlacement.GetSetBits()) { var poc = new PieceOfColor((Piece)piece, (Color)color); acc ^= GetPieceValue(poc, index); } } } } return(acc); }
/// <summary> /// Gets a piece and it's color from a character. /// </summary> /// <param name="p"></param> /// <returns></returns> public static PieceOfColor GetPieceOfColor(char p) { var poc = new PieceOfColor(GetPiece(p), char.IsUpper(p) ? Color.White : Color.Black); return(poc); }