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

📄 transpositiontable.h

📁 这是使用 C++ 写的棋子游戏
💻 H
字号:
// TranspositionTable.h: interface for the CTranspositionTable class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TRANSPOSITIONTABLE_H__C6292E32_89E6_46D7_8A85_E335AD8C4BBA__INCLUDED_)
#define AFX_TRANSPOSITIONTABLE_H__C6292E32_89E6_46D7_8A85_E335AD8C4BBA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Define.h"

//定义了枚举型的数据类型,精确,下边界,上边界
enum ENTRY_TYPE{exact,lower_bound,upper_bound};

//哈希表中元素的结构定义
typedef struct HASHITEM
{
    LONGLONG checksum;    //64位校验码
    ENTRY_TYPE entry_type;//数据类型
    short depth;          //取得此值时的层次
    short eval;           //节点的值
}HashItem;

//置换表类
class CTranspositionTable  
{
public:
    CTranspositionTable();
    virtual ~CTranspositionTable();

public:
    void EnterHashTable(ENTRY_TYPE entry_type,short eval,short depth,int TableNo);
                                                                    //将当前节点的值存入哈希表
    int LookUpHashTable(int alpha, int beta, int depth,int TableNo);//查询哈希表中当前节点数据
    void Hash_UnMakeMove(CHESSMOVE* move,BYTE nChessID,BYTE CurPosition[10][9]);  
                                                                    //撤销所给走法的哈希值,还原成走过之前的
    void Hash_MakeMove(CHESSMOVE* move,BYTE CurPosition[10][9]);    //根据所给走法,增量生成新的哈希值
    void CalculateInitHashKey(BYTE CurPosition[10][9]);             //计算给定棋盘的哈希值
    void InitializeHashKey();                                       //初始化随机数组,创建哈希表

protected:
    LONGLONG Rand64();//产生64位的随机数
    LONG Rand32();    //产生32位的随机数

public: 
    UINT m_nHashKey32[15][10][9];      //32位随机数组,用以生成32位哈希值
    ULONGLONG m_ulHashKey64[15][10][9];//64位随机数组,用以生成64位哈希值
    HashItem *m_pTT[10];               //置换表头指针
    UINT m_HashKey32;                  //32位哈希值
    LONGLONG m_HashKey64;              //64位哈希值
};

#endif // !defined(AFX_TRANSPOSITIONTABLE_H__C6292E32_89E6_46D7_8A85_E335AD8C4BBA__INCLUDED_)

⌨️ 快捷键说明

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