All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netsensia.rivalchess.engine.eval.PieceValue.kt Maven / Gradle / Ivy

There is a newer version: 36.0.0
Show newest version
package com.netsensia.rivalchess.engine.eval

import com.netsensia.rivalchess.consts.*

private const val INDEX_PAWN = 0
private const val INDEX_KNIGHT = 1
private const val INDEX_BISHOP = 2
private const val INDEX_ROOK = 3
private const val INDEX_QUEEN = 4
private const val INDEX_KING = 5

const val DEFAULT_VALUE_PAWN = 100
const val DEFAULT_VALUE_KNIGHT = 390
const val DEFAULT_VALUE_BISHOP = 400
const val DEFAULT_VALUE_ROOK = 595
const val DEFAULT_VALUE_QUEEN = 1175
const val DEFAULT_VALUE_KING = 30000

var pieceValues = intArrayOf(
        DEFAULT_VALUE_PAWN,
        DEFAULT_VALUE_KNIGHT,
        DEFAULT_VALUE_BISHOP,
        DEFAULT_VALUE_ROOK,
        DEFAULT_VALUE_QUEEN,
        DEFAULT_VALUE_KING)

const val ALLOW_PIECE_VALUE_MODIFICATIONS = false

fun pieceValue(bitboardType: Int): Int {
    return if (ALLOW_PIECE_VALUE_MODIFICATIONS) when (bitboardType) {
        BITBOARD_WP, BITBOARD_BP -> pieceValues[INDEX_PAWN]
        BITBOARD_WN, BITBOARD_BN -> pieceValues[INDEX_KNIGHT]
        BITBOARD_WB, BITBOARD_BB -> pieceValues[INDEX_BISHOP]
        BITBOARD_WR, BITBOARD_BR -> pieceValues[INDEX_ROOK]
        BITBOARD_WQ, BITBOARD_BQ -> pieceValues[INDEX_QUEEN]
        BITBOARD_WK, BITBOARD_BK -> pieceValues[INDEX_KING]
        else -> 0
    } else when (bitboardType) {
        BITBOARD_WP, BITBOARD_BP -> DEFAULT_VALUE_PAWN
        BITBOARD_WN, BITBOARD_BN -> DEFAULT_VALUE_KNIGHT
        BITBOARD_WB, BITBOARD_BB -> DEFAULT_VALUE_BISHOP
        BITBOARD_WR, BITBOARD_BR -> DEFAULT_VALUE_ROOK
        BITBOARD_WQ, BITBOARD_BQ -> DEFAULT_VALUE_QUEEN
        BITBOARD_WK, BITBOARD_BK -> DEFAULT_VALUE_KING
        else -> 0
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy