亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transpositiontable.cpp

?? 中國象棋人機博弈的書籍!PC游戲編程.安裝程序!
?? CPP
字號:
// COPYRIGHT NOTES
// ---------------
// This source code is a part of chess which is an example of <Game Programing guide>.
// You may use, compile or redistribute it as part of your application 
// for free. 
// You cannot redistribute sources without the official agreement of the author. 
// If distribution of you application which contents code below was occured, place 
// e-mail <hidebug@hotmail.com> on it is to be appreciated.
// This code can be used WITHOUT ANY WARRANTIES on your own risk.
// 
// Spring Wang <hidebug@hotmail.com>

// ---------------
// 版權聲明
// ---------------
// 本文件所含之代碼是《人機博弈程序設計指南》的范例程序中國象棋的一部分
// 您可以免費的使用, 編譯 或者作為您應用程序的一部分。 
// 但,您不能在未經作者書面許可的情況下分發此源代碼。 
// 如果您的應用程序使用了這些代碼,在您的應用程序界面上 
// 放入 e-mail <hidebug@hotmail.com> 是令人欣賞的做法。
// 此代碼并不含有任何保證,使用者當自承風險。
// 
// 王小春 <hidebug@hotmail.com>

// TranspositionTable.cpp: implementation of the CTranspositionTable class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "chess.h"
#include "TranspositionTable.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
LONGLONG rand64(void)
{

    return rand() ^ ((LONGLONG)rand() << 15) ^ ((LONGLONG)rand() << 30) ^

        ((LONGLONG)rand() << 45) ^ ((LONGLONG)rand() << 60);

}
LONG rand32(void)
{

    return rand() ^ ((LONG)rand() << 15) ^ ((LONG)rand() << 30);

}

CTranspositionTable::CTranspositionTable()
{
	InitializeHashKey();
}

CTranspositionTable::~CTranspositionTable()
{
	delete m_pTT[0];
	delete m_pTT[1];
}

void CTranspositionTable::InitializeHashKey()
{
	int i,j,k;
	
	srand( (unsigned)time( NULL ));
	
	for (i = 0; i < 15; i++)
		for (j = 0; j < 10; j++)
			for (k = 0; k < 9; k++)
			{
				m_nHashKey32[i][j][k] = rand32();
				m_ulHashKey64[i][j][k] = rand64();
			}

	m_pTT[0] = new HashItem[1024*1024];
	m_pTT[1] = new HashItem[1024*1024];
}
void CTranspositionTable::CalculateInitHashKey(BYTE CurPosition[10][9])
{
	int j,k,nChessType;
	m_HashKey32 = 0;
	m_HashKey32 = 0;
	for (j = 0; j < 10; j++)
		for (k = 0; k < 9; k++)
		{
			nChessType = CurPosition[j][k];
			if (nChessType != NOCHESS)
			{
				m_HashKey32 = m_HashKey32 ^ m_nHashKey32[nChessType][j][k]; 
				m_HashKey64 = m_HashKey64 ^ m_ulHashKey64[nChessType][j][k]; 
			}
		}
}

void CTranspositionTable::Hash_MakeMove(CHESSMOVE* move, BYTE CurPosition[10][9])
{
	BYTE nToID, nFromID;
	nFromID = CurPosition[move->From.y][move->From.x];
	nToID = CurPosition[move->To.y][move->To.x];

	m_HashKey32 = m_HashKey32 ^ m_nHashKey32[nFromID][move->From.y][move->From.x]; 
	m_HashKey64 = m_HashKey64 ^ m_ulHashKey64[nFromID][move->From.y][move->From.x]; 

	if (nToID != NOCHESS)
	{
		m_HashKey32 = m_HashKey32 ^ m_nHashKey32[nToID][move->To.y][move->To.x]; 
		m_HashKey64 = m_HashKey64 ^ m_ulHashKey64[nToID][move->To.y][move->To.x]; 
	}
	
	m_HashKey32 = m_HashKey32 ^ m_nHashKey32[nFromID][move->To.y][move->To.x]; 
	m_HashKey64 = m_HashKey64 ^ m_ulHashKey64[nFromID][move->To.y][move->To.x]; 
}

void CTranspositionTable::Hash_UnMakeMove(CHESSMOVE* move, BYTE nChessID, BYTE CurPosition[10][9])
{
	BYTE nToID;
	nToID = CurPosition[move->To.y][move->To.x];
	
	m_HashKey32 = m_HashKey32 ^ m_nHashKey32[nToID][move->From.y][move->From.x]; 
	m_HashKey64 = m_HashKey64 ^ m_ulHashKey64[nToID][move->From.y][move->From.x]; 

	m_HashKey32 = m_HashKey32 ^ m_nHashKey32[nToID][move->To.y][move->To.x]; 
	m_HashKey64 = m_HashKey64 ^ m_ulHashKey64[nToID][move->To.y][move->To.x]; 
	
	if (nChessID)
	{
		m_HashKey32 = m_HashKey32 ^ m_nHashKey32[nChessID][move->To.y][move->To.x]; 
		m_HashKey64 = m_HashKey64 ^ m_ulHashKey64[nChessID][move->To.y][move->To.x]; 
	}
}

int CTranspositionTable::LookUpHashTable(int alpha, int beta, int depth,int TableNo)
{
	int x;
	HashItem * pht;

	x = m_HashKey32 & 0xFFFFF;
	pht = &m_pTT[TableNo][x];

    if (pht->depth >= depth && pht->checksum == m_HashKey64)
	{
		switch (pht->entry_type) 
		{
		case exact: 
			return pht->eval;
		case lower_bound:
			if (pht->eval >= beta)
				return (pht->eval);
			else 
				break;
		case upper_bound:
			if (pht->eval <= alpha)
				return (pht->eval);
			else 
				break;
        }
	}

	return 66666;
}
void CTranspositionTable::EnterHashTable(ENTRY_TYPE entry_type, short eval, short depth,int TableNo)
{
	int x;
	HashItem * pht;

	x = m_HashKey32 & 0xFFFFF;//二十位哈希地址
	pht = &m_pTT[TableNo][x];

	pht->checksum = m_HashKey64;
	pht->entry_type = entry_type;
	pht->eval = eval;
	pht->depth = depth;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美挠脚心视频网站| 免费人成在线不卡| av资源网一区| 中文字幕一区二| 一本色道**综合亚洲精品蜜桃冫| 中文字幕综合网| 色女孩综合影院| 日本成人在线不卡视频| 精品伦理精品一区| 成人综合婷婷国产精品久久免费| 国产精品久久看| 欧美日韩高清一区| 精品亚洲欧美一区| 中文字幕一区不卡| 欧美撒尿777hd撒尿| 免费欧美高清视频| 久久精品水蜜桃av综合天堂| 91影院在线观看| 日韩av电影免费观看高清完整版 | 欧美日本不卡视频| 美腿丝袜一区二区三区| 国产亚洲午夜高清国产拍精品| 91欧美一区二区| 人禽交欧美网站| 国产精品区一区二区三区| av一区二区不卡| 天堂一区二区在线| 91丨国产丨九色丨pron| 精品国产免费人成电影在线观看四季 | 日本中文在线一区| 久久婷婷国产综合国色天香 | 一区二区国产视频| 欧美精品一区二区在线播放 | 成人综合在线网站| 精品一区二区免费| 中文字幕日韩一区二区| 6080亚洲精品一区二区| 成人午夜av电影| 视频一区国产视频| 国产精品久久毛片av大全日韩| 欧美精品v日韩精品v韩国精品v| 国产寡妇亲子伦一区二区| 亚洲成人av中文| 国产精品电影一区二区| 欧美一区二区视频观看视频| 粉嫩aⅴ一区二区三区四区五区 | 国产精品国产三级国产专播品爱网| 一本到三区不卡视频| 捆绑变态av一区二区三区| 午夜欧美在线一二页| 国产精品你懂的在线| 精品久久国产字幕高潮| 欧美三级中文字| 91欧美一区二区| 成人综合日日夜夜| 国产一区二区三区国产| 免费人成在线不卡| 石原莉奈在线亚洲三区| 亚洲影视在线播放| 国产精品久久精品日日| 久久九九久精品国产免费直播| 欧美一区二区三区在| 欧美影视一区二区三区| 91丨九色丨尤物| 成人动漫视频在线| 国产成人aaaa| 国产91对白在线观看九色| 另类小说色综合网站| 日韩vs国产vs欧美| 欧美日韩一区二区欧美激情| 日韩和欧美一区二区三区| 久久你懂得1024| 精品少妇一区二区三区在线播放 | 久久久五月婷婷| 日韩美一区二区三区| 制服丝袜av成人在线看| 在线成人av网站| 欧美日本乱大交xxxxx| 欧美性淫爽ww久久久久无| 欧美日韩一区二区电影| 在线观看免费视频综合| 欧美日韩另类一区| 91精品综合久久久久久| 日韩一级成人av| 精品国产伦一区二区三区观看方式 | 中文在线资源观看网站视频免费不卡| 色中色一区二区| gogo大胆日本视频一区| 国产目拍亚洲精品99久久精品| 欧美一区二区三区婷婷月色| 欧美一级黄色大片| 26uuu成人网一区二区三区| 国产三级一区二区| 国产精品网站在线播放| 亚洲欧美日韩中文播放| 午夜精品久久久久久久久久| 免费一级片91| 国产成人综合在线播放| 91日韩在线专区| 在线不卡中文字幕播放| 国产亚洲精品久| 亚洲精品ww久久久久久p站| 日韩中文字幕一区二区三区| 久久成人综合网| 9l国产精品久久久久麻豆| 色94色欧美sute亚洲线路一久| 欧美日韩一本到| 久久精品一区二区三区不卡| 中文字幕在线观看一区| 一区二区日韩av| 国内精品久久久久影院色| aaa亚洲精品一二三区| 91精品久久久久久蜜臀| 久久这里都是精品| 亚洲天堂网中文字| 欧美高清一级片在线| 亚洲精品一区二区三区精华液| 国产精品不卡一区| 国产精品自拍av| 一本色道久久加勒比精品| 26uuu精品一区二区| 亚洲一区二区三区在线看| 九九视频精品免费| 色综合久久中文字幕综合网 | 欧美日韩免费观看一区二区三区| 日韩精品最新网址| 亚洲日本电影在线| 狠狠色狠狠色综合系列| 欧美在线观看一区| 国产亚洲欧美日韩在线一区| 婷婷成人激情在线网| 福利一区在线观看| 欧美一区二区三区男人的天堂| 综合在线观看色| 国产中文字幕一区| 这里只有精品视频在线观看| 亚洲日韩欧美一区二区在线| 国产精品69毛片高清亚洲| 日韩av高清在线观看| 4438x亚洲最大成人网| 久久综合色8888| 亚洲精品乱码久久久久| 国产成人综合在线观看| 欧美电影免费观看高清完整版| 亚洲欧美经典视频| 国产91精品免费| 精品国产乱码久久久久久久久| 亚洲国产视频在线| 99久久精品国产一区二区三区| 欧美v国产在线一区二区三区| 亚洲一区二区视频在线| 成人一区二区三区| 欧美精品一区二区久久久| 日产精品久久久久久久性色| 在线免费观看日韩欧美| 亚洲欧美成人一区二区三区| 成人精品鲁一区一区二区| 久久久久久久性| 国产一区二区三区久久久| 日韩欧美中文字幕一区| 日本麻豆一区二区三区视频| 欧美日韩一区二区三区在线| 亚洲一区免费观看| 欧美综合一区二区三区| 亚洲综合色丁香婷婷六月图片| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 亚洲国产日韩一级| 六月丁香婷婷久久| 欧美日韩久久久久久| 樱桃国产成人精品视频| 色欲综合视频天天天| 一区二区在线观看免费| 色老汉av一区二区三区| 亚洲猫色日本管| 欧美午夜在线一二页| 亚洲国产精品视频| 欧美乱熟臀69xxxxxx| 免费观看91视频大全| 26uuu亚洲| 懂色av一区二区三区免费看| 国产精品黄色在线观看| 日本高清成人免费播放| 亚洲国产精品人人做人人爽| 欧美日本高清视频在线观看| 青娱乐精品视频| 国产清纯白嫩初高生在线观看91 | 91精品国产美女浴室洗澡无遮挡| 午夜伦理一区二区| 日韩欧美中文字幕精品| 青娱乐精品在线视频| 国产一区二区三区蝌蚪| 一区二区免费在线| 日韩一区二区三区在线观看| 日本一区二区电影| 99免费精品在线| 一个色综合av| 欧美一区二区视频观看视频| 国产精品一二三四五| 一区二区三区四区在线免费观看 | 色伊人久久综合中文字幕|