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

📄 move_list.cpp

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

// includes

#include "move_list.h"
#include "move.h"

// functions

// list_is_ok()

bool list_is_ok(const list_t *list)
    {
    if(list == NULL)
        return false;

    if(list->size < 0 || list->size >= 256)
        return false;

    return true;
    }

// list_remove()

void list_remove(list_t *list, int pos)
    {

    int i;

    for ( i = pos; i < list->size - 1; i++ )
        {
        list->move[i] = list->move[i + 1];
        list->value[i] = list->value[i + 1];
        }

    list->size--;
    }

// list_copy()

void list_copy(list_t *dst, const list_t *src)
    {

    int i;

    dst->size = src->size;

    for ( i = 0; i < src->size; i++ )
        {
        dst->move[i] = src->move[i];
        dst->value[i] = src->value[i];
        }
    }

// list_sort()

void list_sort(list_t *list)
    {

    int size;
    int i, j;
    int move, value;

    // init

    size = list->size;
    list->value[size] = -32768;

    // insert sort (stable)

    for ( i = size - 2; i >= 0; i-- )
        {

        move = list->move[i];
        value = list->value[i];

        for ( j = i; value < list->value[j + 1]; j++ )
            {
            list->move[j] = list->move[j + 1];
            list->value[j] = list->value[j + 1];
            }

        list->move[j] = move;
        list->value[j] = value;
        }
    }

// list_contain()

bool list_contain(const list_t *list, int move)
    {

    int i;

    for ( i = 0; i < list->size; i++ )
        {
        if(list->move[i] == move)
            return true;
        }

    return false;
    }

// list_note()

void list_note(list_t *list)
    {

    int i, move;

    for ( i = 0; i < list->size; i++ )
        {
        move = list->move[i];
        list->value[i] = -move_order(move);
        }
    }

// list_filter()

void list_filter(list_t *list, board_t *board, move_test_t test, bool keep)
    {

    int pos;
    int i, move, value;

    pos = 0;

    for ( i = 0; i < LIST_SIZE(list); i++ )
        {

        move = LIST_MOVE(list, i);
        value = LIST_VALUE(list, i);

        if((*test)(move,board) == keep)
            {
            list->move[pos] = move;
            list->value[pos] = value;
            pos++;
            }
        }

    list->size = pos;
    }

// end of list.cpp

⌨️ 快捷键说明

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