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

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

?? cchessevaluate.h

?? 中國象棋人機對弈
?? H
?? 第 1 頁 / 共 2 頁
字號:
// CChessEvaluate.h


////////////////////// Type Define /////////////////////////////////////////////

typedef struct _relationtable{

	BYTE nCChessID ;
	int nUAttackCount ;
	int nUGuardCount ;
	BYTE UnderAttack[5];
	BYTE UnderGurad[5];

} RelationTable;



/////////////////// Data Define ////////////////////////////////////////////////

POINT PointList[20];		// 目標點隊列
int nPointCount;			// 目標點數目

RelationTable RelationOfMan[9][10];	// 關系表

const int MaxValue = 10000;	// 最大極值(最小極值為最大極值的負值)


//各子的基本價值(子力價值)
//								將, 士, 象, 馬, 車, 炮, 卒
const int BasicValues[15] = { 0,0, 250, 250, 300, 500, 300,  80, 
								0, 250, 250, 300, 500, 300,  80 };

//各子的機動性價值(每多一步走法所加的分)
//									將, 士, 象, 馬, 車, 炮, 卒
const int MobilityValues[8] = {  0,  0,   1,   1,  12,   6,   6,  15 };


//各子的控制區域價值(所在的位置的價值)
const int PositionValues[8][90] = {
	{
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0
	}, 
	{ // 帥
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		1, -8, -9,  0,  0,  0,  0,  0,  0,  0,
		5, -8, -9,  0,  0,  0,  0,  0,  0,  0,
		1, -8, -9,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0
	}, 
	{ // 士
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  3,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0
	}, 
	{ // 相  
		0,  0, -2,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  3,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
		0,  0, -2,  0,  0,  0,  0,  0,  0,  0
	}, 
	{ // 馬
		 0, -3,  5,  4,  2,  2,  5,  4,  2,  2,
		-3,  2,  4,  6, 10, 12, 20, 10,  8,  2,
		 2,  4,  6, 10, 13, 11, 12, 11, 15,  2,
		 0,  5,  7,  7, 14, 15, 19, 15,  9,  8,
		 2,-10,  4, 10, 15, 16, 12, 11,  6,  2,
		 0,  5,  7,  7, 14, 15, 19, 15,  9,  8,
		 2,  4,  6, 10, 13, 11, 12, 11, 15,  2,
		-3,  2,  4,  6, 10, 12, 20, 10,  8,  2,
		 0, -3,  5,  4,  2,  2,  5,  4,  2,  2
	}, 
	{ // 車
		-6,  5, -2,  4,  8,  8,  6,  6,  6,  6,
		 6,  8,  8,  9, 12, 11, 13,  8, 12,  8,
		 4,  6,  4,  4, 12, 11, 13,  7,  9,  7,
		12, 12, 12, 12, 14, 14, 16, 14, 16, 13,
		 0,  0, 12, 14, 15, 15, 16, 16, 33, 14,
		12, 12, 12, 12, 14, 14, 16, 14, 16, 13,
		 4,  6,  4,  4, 12, 11, 13,  7,  9,  7,
		 6,  8,  8,  9, 12, 11, 13,  8, 12,  8,
		-6,  5, -2,  4,  8,  8,  6,  6,  6,  6
	}, 
	{ // 炮
		0,  0,  1,  0, -1,  0,  0,  1,  2,  4,
		0,  1,  0,  0,  0,  0,  3,  1,  2,  4,
		1,  2,  4,  0,  3,  0,  3,  0,  0,  0,
		3,  2,  3,  0,  0,  0,  2, -5, -4, -5,
		3,  2,  5,  0,  4,  4,  4, -4, -7, -6,
		3,  2,  3,  0,  0,  0,  2, -5, -4, -5,
		1,  2,  4,  0,  3,  0,  3,  0,  0,  0,
		0,  1,  0,  0,  0,  0,  3,  1,  2,  4,
		0,  0,  1,  0, -1,  0,  0,  1,  2,  4
	}, 
	{ // 兵
		0,  0,  0, -2,  3, 10, 20, 20, 20,  0,
		0,  0,  0,  0,  0, 18, 27, 30, 30,  0,
		0,  0,  0, -2,  4, 22, 30, 45, 50,  0,
		0,  0,  0,  0,  0, 35, 40, 55, 65,  2,
		0,  0,  0,  6,  7, 40, 42, 55, 70,  4,
		0,  0,  0,  0,  0, 35, 40, 55, 65,  2,
		0,  0,  0, -2,  4, 22, 30, 45, 50,  0,
		0,  0,  0,  0,  0, 18, 27, 30, 30,  0,
		0,  0,  0, -2,  3, 10, 20, 20, 20,  0
	}
};


/////////////////// Function Prototype /////////////////////////////////////////

// 估值函數,返回對當前局面的估值。fWhoseTurn標志當前輪到哪一方走棋
int Eveluate( int fWhoseTurn );

// 將目標點加入PointList隊列
inline void AddPointToQueue( BYTE x, BYTE y );



////////////////// Programmer-Defined Function //////////////////////////////////

int Eveluate( int fWhoseTurn )
{
	int RedValues	= 0;	// 紅方總的分值
	int BlackValues	= 0;	// 黑方總的分值

	int nBasicVal[2]	= { 0 , 0 };	// 雙方的子力值
	int nMobilityVal[2]	= { 0 , 0 };	// 雙方的機動性值
	int nPositionVal[2]	= { 0 , 0 };	// 雙方的控制區域值
	int nRelationVal[2]	= { 0 , 0 };	// 雙方的關系值(攻擊或保護)

	BYTE nCChessID;
	BYTE nTargetType;
	int fSide;
	int nPosition;
	int i;
	bool bHaveHalf;


	//**** Reset RelationTable ****
	memset( RelationOfMan, 0, sizeof(RelationTable)*90 );

	int x, y;
	for( x = 0; x <= 8; x ++ )
		for( y = 0; y <= 9; y ++ )
		{
			if( CChessBoard[x][y] != 0 )
			{
				nCChessID = CChessBoard[x][y];
				fSide = SideOfMan[ nCChessID ];


//++++++++++++++求得棋子的基本價值以及它所占據的位置的價值+++++++++++++++++++++++++++++++++++++++++++++++
				nPosition = x * 10 + y * 9 ;

				if( fSide == RED )
				{
					nBasicVal[fSide]	+= BasicValues[nCChessID];
					nPositionVal[fSide]	+= PositionValues[nCChessID][nPosition];
				}
				else
				{
					nBasicVal[fSide]	+= BasicValues[nCChessID];
					nPositionVal[fSide]	+= PositionValues[nCChessID - 7][89 - nPosition];
				}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


				//求得棋子的所有目標位置(移動到的、攻擊的、保護的)
				nPointCount = 0;

				switch( nCChessID )
				{

				case RED_K:

					// 將帥碰面
					i = IsKingFaceToFace( x, y, fSide );
					if( i != -1 )
						AddPointToQueue( x, i );

					//向前
					if( y < 2 )
						AddPointToQueue( x, y + 1 );

					//向后
					if( y > 0 )
						AddPointToQueue( x, y - 1 );

					//向左
					if( x > 3 )
						AddPointToQueue( x - 1, y );

					//向右
					if( x < 5 )
						AddPointToQueue( x + 1, y );

					break;


				case BLACK_K:

					// 將帥碰面
					i = IsKingFaceToFace( x, y, fSide );
					if( i != -1 )
						AddPointToQueue( x, i );

					//向前
					if( y > 7 )
						AddPointToQueue( x, y - 1 );

					//向后
					if( y < 9 )
						AddPointToQueue( x, y + 1 );

					//向左
					if( x < 5 )
						AddPointToQueue( x + 1, y );

					//向右
					if( x > 3 )
						AddPointToQueue( x - 1, y );

					break;


				case RED_J:					// fall through
				case BLACK_J:

					//縱向
					for( i = y + 1; i <= 9; i ++ )
					{
						AddPointToQueue( x, i );

						if( HaveMan( x, i ) )
							break;
					}

					for( i = y - 1; i >= 0; i -- )
					{
						AddPointToQueue( x, i );

						if( HaveMan( x, i ) )
							break;
					}

					//橫向
					for( i = x - 1; i >= 0; i -- )
					{
						AddPointToQueue( i, y );

						if( HaveMan( i, y ) )
							break;
					}

					for( i = x + 1; i <= 8; i ++ )
					{
						AddPointToQueue( i, y );

						if( HaveMan( i, y ) )
							break;
					}

					break;


				case RED_M:					// fall through
				case BLACK_M:

					if( y <= 7 && ! HaveMan( x, y + 1 ) )
					{
						//11點方向(相對紅馬)
						if( x > 0 )
							AddPointToQueue( x - 1, y + 2 );

						//1點方向
						if( x < 8 )
							AddPointToQueue( x + 1, y + 2 );
					}

					if( x <= 6 && ! HaveMan( x + 1, y ) )
					{
						//2點方向
						if( y < 9 )
							AddPointToQueue( x + 2, y + 1 );

						//4點方向
						if( y > 0 )
							AddPointToQueue( x + 2, y - 1 );
					}

					if( y >= 2 && ! HaveMan( x, y - 1 ) )
					{		
						//5點方向
						if( x < 8 )
							AddPointToQueue( x + 1, y - 2 );

						//7點方向
						if( x > 0 )
							AddPointToQueue( x - 1, y - 2 );
					}

					if( x >= 2 && ! HaveMan( x - 1, y ) )
					{
						//8點方向
						if( y > 0 )
							AddPointToQueue( x - 2, y - 1 );

						//10點方向
						if( y < 9 )
							AddPointToQueue( x - 2, y + 1 );
					}

					break;


				case RED_P:				// fall through
				case BLACK_P:
					
					//縱向
					bHaveHalf = false;	//標志尚未發現中間子
					for( i = y + 1; i <= 9; i ++ )
					{
						if( ! bHaveHalf ) // 無中間子
						{
							if( ! HaveMan( x, i ) )
							{
								AddPointToQueue( x, i );
							}
							else // if( HaveMan( x, i ) )
							{
								bHaveHalf = true;
							}
						}
						else // 已有中間子
						{
							if( HaveMan( x, i ) )
							{
								AddPointToQueue( x, i );
								break;
							}
						}
					}

					bHaveHalf = false;	//標志尚未發現中間子
					for( i = y - 1; i >= 0; i -- )
					{
						if( ! bHaveHalf ) // 無中間子
						{
							if( ! HaveMan( x, i ) )
							{
								AddPointToQueue( x, i );
							}
							else // if( HaveMan( x, i ) )
							{
								bHaveHalf = true;
							}
						}
						else // 已有中間子
						{
							if( HaveMan( x, i ) )
							{
								AddPointToQueue( x, i );
								break;
							}
						}
					}


					//橫向
					bHaveHalf = false;	//標志尚未發現中間子
					for( i = x - 1; i >= 0; i -- )
					{
						if( ! bHaveHalf ) // 無中間子
						{
							if( ! HaveMan( i, y ) )
							{
								AddPointToQueue( i, y );
							}
							else // if( HaveMan( i, y ) )
							{
								bHaveHalf = true;
							}
						}
						else // 已有中間子
						{
							if( HaveMan( i, y ) )
							{
								AddPointToQueue( i, y );
								break;
							}
						}
					}
 
					bHaveHalf = false;	//標志尚未發現中間子
					for( i = x + 1; i <= 8; i ++ )
					{
						if( ! bHaveHalf ) // 無中間子
						{
							if( ! HaveMan( i, y ) )
							{
								AddPointToQueue( i, y );
							}
							else // if( HaveMan( i, y ) )
							{
								bHaveHalf = true;
							}
						}
						else // 已有中間子
						{
							if( HaveMan( i, y ) )
							{
								AddPointToQueue( i, y );
								break;
							}
						}
					}

					break;


				case RED_X:

					if( x == 0 )
					{
						if( ! HaveMan(1, 3) )
							AddPointToQueue( 2, 4 );

						if( ! HaveMan(1, 1) )
							AddPointToQueue( 2, 0 );
					}
					else if( x == 2 )
					{
						if( y == 4 )
						{
							if( ! HaveMan(1, 3) )
								AddPointToQueue( 0, 2 );

							if( ! HaveMan(3, 3) )
								AddPointToQueue( 4, 2 );
						}
						else // y == 0 
						{
							if( ! HaveMan(1, 1) )
								AddPointToQueue( 0, 2 );

							if( ! HaveMan(3, 1) )
								AddPointToQueue( 4, 2 );
						}	
					}
					else if( x == 4 )
					{
						if( ! HaveMan(3, 3) )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产原创一区二区三区| 色综合天天视频在线观看| 成人一二三区视频| 欧美另类z0zxhd电影| 中文av字幕一区| 奇米色一区二区| 在线观看中文字幕不卡| 日本一区二区三区dvd视频在线| 丝瓜av网站精品一区二区| 成人av电影免费在线播放| 日韩一级精品视频在线观看| 亚洲女同ⅹxx女同tv| 国产成人午夜99999| 欧美va亚洲va香蕉在线| 亚洲成年人网站在线观看| 99久久精品免费精品国产| 久久亚洲一区二区三区明星换脸| 亚洲国产欧美一区二区三区丁香婷| 成人涩涩免费视频| 国产午夜精品久久久久久久 | 成人av电影在线网| 亚洲人成小说网站色在线| 国产自产v一区二区三区c| 日韩美女在线视频| 视频一区在线视频| 欧美卡1卡2卡| 香蕉成人啪国产精品视频综合网 | 国产精品99久久久| 91精品国产91综合久久蜜臀| 亚洲v精品v日韩v欧美v专区 | 91免费在线播放| 国产亚洲精品aa午夜观看| 国产精品一区二区不卡| 国产视频视频一区| 丁香婷婷综合网| 国产精品国产三级国产aⅴ原创| 成年人午夜久久久| 亚洲精品一卡二卡| 欧美在线制服丝袜| 午夜精品影院在线观看| 欧美精品在线观看播放| 奇米精品一区二区三区四区| 欧美不卡一区二区三区四区| 国产资源精品在线观看| 中文字幕精品一区| 色久综合一二码| 午夜不卡在线视频| 日韩一区二区三区在线观看| 国产乱码一区二区三区| 欧美韩国日本综合| 日本道色综合久久| 免费在线观看不卡| 久久精品人人爽人人爽| 色婷婷av一区二区| 日韩在线卡一卡二| 久久精品人人做人人爽人人| 91在线视频网址| 日韩精品一区第一页| 久久综合色婷婷| 日本韩国欧美在线| 久久成人综合网| 中文字幕在线视频一区| 欧美天天综合网| 国产乱妇无码大片在线观看| 亚洲色图视频免费播放| 制服丝袜成人动漫| 国产suv一区二区三区88区| 一区二区三区免费网站| 日韩免费视频一区二区| 97精品久久久久中文字幕| 蜜臀av在线播放一区二区三区| 中文字幕精品一区二区精品绿巨人| 欧美色大人视频| 国产精品自拍毛片| 日韩专区中文字幕一区二区| 国产精品乱码一区二三区小蝌蚪| 欧美日本韩国一区二区三区视频 | 欧美三片在线视频观看| 国产乱码精品一区二区三区av| 亚洲一区二区三区四区在线免费观看| 精品国产成人系列| 欧美日韩电影在线| 91视频www| 国产成人在线视频免费播放| 性欧美疯狂xxxxbbbb| 国产精品久久777777| 欧美成人乱码一区二区三区| 色视频一区二区| 成人三级伦理片| 国产美女主播视频一区| 日韩精品欧美精品| 亚洲六月丁香色婷婷综合久久| 精品国产乱码久久久久久老虎| 欧美日韩中文字幕一区| 99视频精品全部免费在线| 国产伦精一区二区三区| 日韩av成人高清| 亚洲电影一级片| 亚洲三级电影网站| 日韩美女视频19| 中文字幕av资源一区| 国产亚洲欧美日韩俺去了| 欧美一级高清片| 欧美精品xxxxbbbb| 欧美日韩一区在线| 欧美在线观看一区| 91欧美一区二区| 91在线精品一区二区三区| 成人中文字幕在线| 粉嫩欧美一区二区三区高清影视| 国产精品影音先锋| 国产精品一区二区x88av| 久久99精品国产| 亚洲欧洲av一区二区三区久久| 91精品国产免费久久综合| 91免费观看视频在线| 不卡视频在线观看| 成人午夜视频在线| 成人夜色视频网站在线观看| 不卡电影免费在线播放一区| 成人免费视频国产在线观看| 成人福利视频在线| 色综合天天综合网国产成人综合天| 97国产一区二区| 91久久精品网| 91精品国产综合久久蜜臀 | 中文字幕不卡在线| 亚洲天堂2016| 亚洲成av人**亚洲成av**| 亚洲18女电影在线观看| 日本亚洲视频在线| 韩国欧美国产一区| 顶级嫩模精品视频在线看| 92精品国产成人观看免费| 欧美日韩午夜在线| 精品裸体舞一区二区三区| 92国产精品观看| 99综合影院在线| 在线视频你懂得一区二区三区| 欧美三区在线观看| 欧美xxxxx牲另类人与| 中文无字幕一区二区三区| 最新不卡av在线| 日韩精品久久久久久| 狠狠色伊人亚洲综合成人| 成人高清免费在线播放| 欧美日韩午夜在线| 国产三级精品三级在线专区| 亚洲主播在线播放| 精品中文字幕一区二区| eeuss鲁一区二区三区| 欧美日韩精品系列| 日本一区二区三区在线观看| 夜夜亚洲天天久久| 国产酒店精品激情| 欧美影视一区二区三区| 久久在线免费观看| 亚洲3atv精品一区二区三区| 成人自拍视频在线| 欧美一区二区三区在线观看视频| 国产精品网站在线播放| 日韩国产高清影视| 91网站在线播放| 337p日本欧洲亚洲大胆精品 | 久久综合色综合88| 亚洲国产三级在线| 国产精品亚洲一区二区三区妖精| 欧美在线不卡视频| 日本一区二区免费在线观看视频 | 日韩精品一区二区三区视频在线观看 | 欧美精品1区2区3区| 中文字幕一区二区三区蜜月| 狠狠色综合色综合网络| 9191成人精品久久| 夜夜精品浪潮av一区二区三区 | 成人免费视频播放| 日韩一级黄色大片| 亚洲高清免费在线| 91首页免费视频| 成人免费小视频| 成人的网站免费观看| 亚洲精品一线二线三线无人区| 偷拍一区二区三区四区| 色猫猫国产区一区二在线视频| 国产精品久久久久久久久免费桃花| 精品综合免费视频观看| 这里只有精品视频在线观看| 亚洲午夜国产一区99re久久| 色综合久久久久综合体桃花网| 国产精品女同互慰在线看 | 精品一区二区三区在线播放| 欧美日韩视频在线观看一区二区三区 | 一区二区三区丝袜| 91丨porny丨蝌蚪视频| 国产精品欧美久久久久一区二区| 国产不卡一区视频| 久久久久成人黄色影片| 精品亚洲成a人在线观看| 日韩一级黄色片| 国产在线视视频有精品|