📄 values.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 + -