- moves[i].score = H.move_ordering_score(pos.piece_on(move_from(m)), m);
- }
-}
-
-void MovePicker::score_qcaptures() {
-
- // Use MVV/LVA ordering
- for (int i = 0; i < numOfMoves; i++)
- {
- Move m = moves[i].move;
- if (move_promotion(m))
- moves[i].score = QueenValueMidgame;
- else
- moves[i].score = int(pos.midgame_value_of_piece_on(move_to(m)))
- -int(pos.type_of_piece_on(move_from(m)));
- }
-}
-
-
-/// find_best_index() loops across the moves and returns index of
-/// the highest scored one. There is also a second version that
-/// lowers the priority of moves that attack the same square,
-/// so that if the best move that attack a square fails the next
-/// move picked attacks a different square if any, not the same one.
-
-int MovePicker::find_best_index() {
-
- assert(movesPicked < numOfMoves);
-
- int bestIndex = movesPicked, bestScore = moves[movesPicked].score;
-
- for (int i = movesPicked + 1; i < numOfMoves; i++)
- if (moves[i].score > bestScore)
- {
- bestIndex = i;
- bestScore = moves[i].score;
- }
- return bestIndex;
-}
-
-int MovePicker::find_best_index(Bitboard* squares, int values[]) {
-
- assert(movesPicked < numOfMoves);
-
- int hs;
- Move m;
- Square to;
- int bestScore = -10000000, bestIndex = -1;
-
- for (int i = movesPicked; i < numOfMoves; i++)
- {
- m = moves[i].move;
- to = move_to(m);
-
- if (!bit_is_set(*squares, to))
- {
- // Init at first use
- set_bit(squares, to);
- values[to] = 0;
- }
-
- hs = moves[i].score - values[to];
- if (hs > bestScore)
- {
- bestIndex = i;
- bestScore = hs;
- }