Example #1
0
        static Zobrist()
        {
            IRKiss rnd = new RKiss(DefaultRandomSeed);

            for (var side = EPlayer.White; side < EPlayer.PlayerNb; ++side)
            {
                for (var pieceType = EPieceType.Pawn; pieceType < EPieceType.PieceTypeNb; ++pieceType)
                {
                    var piece = pieceType.MakePiece(side);
                    for (var square = ESquare.a1; square <= ESquare.h8; square++)
                    {
                        ZobristPst[piece.AsInt(), (int)square] = rnd.Rand();
                    }
                }
            }

            for (var i = 0; i < ZobristCastling.Length; i++)
            {
                ZobristCastling[i] = rnd.Rand();
            }

            for (var i = 0; i < ZobristEpFile.Length; i++)
            {
                ZobristEpFile[i] = rnd.Rand();
            }

            ZobristSide   = rnd.Rand();
            ZobristNoPawn = rnd.Rand();
        }
Example #2
0
        static Zobrist()
        {
            IRKiss rnd = new RKiss(DefaultRandomSeed);

            for (var i = 0; i < ZobristPst.Length; i++)
            {
                ZobristPst[i] = new ulong[64];
            }

            Span <PieceTypes> Pts = stackalloc PieceTypes[]
            { PieceTypes.Pawn, PieceTypes.Knight, PieceTypes.Bishop, PieceTypes.Rook, PieceTypes.Queen, PieceTypes.King };

            for (var side = Players.White; side < Players.PlayerNb; ++side)
            {
                foreach (var pieceType in Pts)
                {
                    var piece = pieceType.MakePiece(side);
                    for (var square = Squares.a1; square <= Squares.h8; square++)
                    {
                        ZobristPst[piece.AsInt()][(int)square] = rnd.Rand();
                    }
                }
            }

            for (var i = 0; i < ZobristCastling.Length; i++)
            {
                ZobristCastling[i] = rnd.Rand();
            }

            for (var i = 0; i < ZobristEpFile.Length; i++)
            {
                ZobristEpFile[i] = rnd.Rand();
            }

            ZobristSide   = rnd.Rand();
            ZobristNoPawn = rnd.Rand();
        }