⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 values.cpp

📁 超强国际象棋引擎
💻 CPP
字号:
// value.cpp

// includes

#include "config.h"
#include "piece.h"
#include "search.h"
#include "util.h"
#include "values.h"

// variables

int value_piece[256];

// functions

// value_init()

void value_init()
    {
    int piece;

    // value_piece[]

    for ( piece = 0; piece < 256; piece++ )
        value_piece[piece] = -1;

    value_piece[0] = 0;        // needed?
    value_piece[(1 << 4)] = 0; // needed?

    value_piece[((1 << 2) | (1 << 0))] = 100;
    value_piece[((1 << 4) | (1 << 0))] = 325;
    value_piece[((1 << 5) | (1 << 0))] = 325;
    value_piece[((1 << 6) | (1 << 0))] = 500;
    value_piece[(((1 << 5) | (1 << 6)) | (1 << 0))] = 1000;
    value_piece[((1 << 7) | (1 << 0))] = 10000;

    value_piece[((1 << 3) | (1 << 1))] = 100;
    value_piece[((1 << 4) | (1 << 1))] = 325;
    value_piece[((1 << 5) | (1 << 1))] = 325;
    value_piece[((1 << 6) | (1 << 1))] = 500;
    value_piece[(((1 << 5) | (1 << 6)) | (1 << 1))] = 1000;
    value_piece[((1 << 7) | (1 << 1))] = 10000;
    }

// value_is_ok()

bool value_is_ok(int value)
    {
    if(value < -30000 || value > +30000)
        return false;

    return true;
    }

// range_is_ok()

bool range_is_ok(int min, int max)
    {
    if(!value_is_ok(min))
        return false;

    if(!value_is_ok(max))
        return false;

    if(min >= max)
        return false; // alpha-beta-like ranges cannot be null

    return true;
    }

// value_is_mate()

bool value_is_mate(int value)
    {
    if(value < -(30000 - 256) || value > +(30000 - 256))
        return true;

    return false;
    }

// value_to_trans()

int value_to_trans(int value, int height)
    {
    if(value < -3000)
        {
        if(value < -(30000 - 256))
            value -= height;

        else if(value > -(30000 - 256))
            value -= 40 *height;
        }
    else if(value > +3000)
        {
        if(value > (30000 - 256))
            value += height;

        else if(value < +3000)
            value += 40 *height;
        }

    return value;
    }

// value_from_trans()

int value_from_trans(int value, int height)
    {
    if(value < -3000)
        {
        if(value < -(30000 - 256))
            value += height;

        else if(value > -(30000 - 256))
            value += 40 *height;
        }
    else if(value > +3000)
        {
        if(value > (30000 - 256))
            value -= height;

        else if(value < (30000 - 256))
            value -= 40 *height;
        }

    return value;
    }

// value_to_mate()

int value_to_mate(int value)
    {

    int dist;

    if(value < -(30000 - 256))
        {
        dist = (30000 + value) / 2;

        return -dist;
        }
    else if(value > +(30000 - 256))
        {

        dist = (30000 - value + 1) / 2;

        return +dist;
        }

    return 0;
    }

// end of value.cpp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -