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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? global.cpp

?? 一個人工智能的國際象棋游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************
Author: S. Senthil kumar
File: Global.cpp
Purpose:    For storing global information

******************************************************/

#include "OneMove.h"
#include "LastMove.h"
#include "Global.h"
#include "MusicPlayer.h"
#include "SearchAgent.h"
#include "myframe.h"
#include "TransTableEntry.h"
#include "TranspositionTable.h"
#include "myapp.h"


int end_of_game=0;		//Boolean variable to indicate playing of game
int drawthinking=0;		//Boolean variable to indicate whether thinking for a draw or just a normal move
int autoplay=0;			//Boolean variable to indicate bg music autoplay turned on/off
int sndenable=0;		//Boolean variable to indicate whether sounds for events enabled
CString defdir;			//Default directory for music files. Current Directory+"sounds"
CString deflevel;		//Default level

int computer_color=BLACK;	//Default Computer playing color
int search_depth=5;			//Default search depth (level: Intermediate)
int WHITEBASE=0;			//White pieces at top of board
int BLACKBASE=7;			//Black pieces at bottom
CString GetMusicDirectory();	//Retrieves Current Directory+"sounds"
int CheckCheck(int board[8][8],int target,int whilethinking=0);
UINT StartSearch(LPVOID param);
UINT Ponder(LPVOID param);
UINT RandomMusicPlay(LPVOID PARAM);
void AssignDefaults(int sndenable,int autoplay,CString deflevel,CString defdir,int ws,int blacks);
CStatusBarCtrl statusbar;		//Statusbar of window

volatile int timeover=0;	//Not used
volatile int searching=0;	//To indicate whether searching for move. Used to disable certain menu items
int debug=0;				//Flag variable
CWinThread * ponder_thread=NULL;	//Pondering thread handle
int pondering=0;					//Flag variable whether pondering
int threadrunning=0;				//Not used
int firsttime=1;					//First move. To play hardcoded pawn move
int movecount;						//Total moves played.

int whiteking_stalemate=0;			//Whether white king is under check currently. To check occurrence of stalemate
int blackking_stalemate=0;			//Whether black king is under check currently. To check occurrence of stalemate
int music_play=1;					//To control display of menuitem Play/Stop music

int BOARDSIZE=sizeof(int)*64;		//Boardsize. Used in memcpy()

extern COLORREF WHITESQUARE;		//Whitesquare color
extern COLORREF BLACKSQUARE;		//Blacksquare color

TranspositionTable table;			//Global Transpositiontable storing best moves for boards


char *filearray[50];				//Filearray used for Playing bg music
int count=0;						//Just a loop variable
		
volatile int keep_music_playing=1;	//Controlling bg music thread. Thread stops if set to 0
myapp a;							//CWinApp object.



CString GetMusicDirectory()
{
	char *buf=new char[defdir.GetLength()];
	::GetShortPathName(defdir,buf,defdir.GetLength());
	
	return (CString)buf;
}
	
/*Thread plays random files from GetMusicDirectory+"sounds"*/
UINT RandomMusicPlay(LPVOID PARAM)
{
		
	CString type;
	char lpszReturnString[10];
	while (keep_music_playing)
	{
		//Getting a random filename from filearray
		srand((unsigned int)time(NULL));
		int val=rand()%count;
		CString selectedfile=filearray[val];
		selectedfile.MakeUpper();
	
		//Getting file extension
		int dotposn=selectedfile.ReverseFind('.');
		if (dotposn!=-1)
		{
			CString ext=selectedfile.Mid((dotposn+1),3);
			//Setting type according to extension
			if (ext=="WAV")
			{
				type="waveaudio";
			}
			else if(ext=="RMI" || ext=="MID")
			{
				type="sequencer";
			}
			else if(ext=="CDA")
			{
				type="cdaudio";
			}
			statusbar.SetText((CString)"Playing "+selectedfile,2,0);	
			
			//Generating commandstring
			CString commandstring="open "+GetMusicDirectory()+"\\"+selectedfile+" type "+type+" alias aria";
			//Opening and playing using mciSendString()
			int retval=mciSendString(commandstring,lpszReturnString, lstrlen(lpszReturnString), NULL);
			mciSendString("play aria",lpszReturnString, lstrlen(lpszReturnString), NULL);
			strcpy(lpszReturnString,"playing");
			
			//Polling to see whether system is playing the file. Breaks from the loop on end of file.
			while(1)
			{
				mciSendString("status aria mode",lpszReturnString,10,NULL);
				if (strcmp(lpszReturnString,"playing")!=0)
				{
					break;
				}
			}
			//Closing the resource.
			mciSendString("close aria",lpszReturnString,lstrlen(lpszReturnString),NULL);
			statusbar.SetText((CString)"Finished Playing "+selectedfile,2,0);
			//Go back to top to select another file.
		}
		
		
		
	}
	
	statusbar.SetText((CString)"Stopped Playing Music",2,SBT_NOBORDERS);	


	return 0;
}



/*
int CheckMate(int board[8][8])
{
	debug=1;
	SearchAgent s(0,board,2,13850,-13850);
	char buf[255];
	debug=0;
	MessageBox(NULL,itoa(s.RetVal,buf,10),"",0);
	if (s.RetVal>=5000)
	{
		MessageBox(NULL,"White Won","End of Game",0);
		end_of_game=1;
		return 1;
	}
	return 0;	
}
*/

//Function to check whether target is in range of attack from another piece. Currently used by CheckForCheckMate for checking for a check against the king.
int InPieceRange(int board[8][8],int target)
{
	int i,j,k;
	int currentx,currenty;
	int found=0;
	int check=0;int checkmate=1;
	
	//Get the board position of the target.
	for (i=0;i<8 && !found;i++)
	{
		for (j=0;j<8;j++)
		{
			if (board[i][j]==target)
			{
				found=1;
				break;
			}
		}
	}
	i--;
	currenty=i;
	currentx=j;
	
	if (target==WHITE_KING)
	{
		//Checking along column, straight top
		for (k=i-1;k>=0;k--)
			{
				if (board[k][j]<10 && board[k][j]!=0)
				{
					
					break;
				}
				else
				{
					if (  board[k][j]>10)
					{
						if ((board[k][j]==BLACK_KING) && k==i-1) return 1;
						else if (board[k][j]==BLACK_ROOK || board[k][j]==BLACK_QUEEN)
						{
						
							return 1;
						}
						else
						{
							break;
						}
						
					}
					
				}

				
			}
		//Checking along column, straight down
		for (k=i+1;k<8;k++)
			{
				if (board[k][j]<10 && board[k][j]!=0)
				{
					
					break;
				}
				else
				{
					if (  board[k][j]>10)
					{
						if ((board[k][j]==BLACK_KING) && k==i+1) return 1;
						else if (board[k][j]==BLACK_ROOK || board[k][j]==BLACK_QUEEN)
						{
							
							return 1;
						}
						else
						{
							break;
						}
						
					}
					
				}
			}
			//Checking along row, along the right
			for (k=j+1;k<8;k++)
			{
				if (board[i][k]<10 && board[i][k]!=0)
				{
					
					break;
				}
				else
				{
					if (  board[i][k]>10)
					{
						if ((board[i][k]==BLACK_KING) && k==j+1) return 1;
						else if (board[i][k]==BLACK_ROOK || board[i][k]==BLACK_QUEEN)
						{
							
							return 1;
						}
						else
						{
							break;
						}
						
					}
					
				}
			}
			//Checking along row, along the left.
			for (k=j-1;k>=0;k--)
			{
				if (board[i][k]<10 && board[i][k]!=0)
				{
					break;
				}
				else
				{
					if (  board[i][k]>10)
					{
						if ((board[i][k]==BLACK_KING) && k==j-1) return 1;
						else if (board[i][k]==BLACK_ROOK || board[i][k]==BLACK_QUEEN)
						{
							//MessageBox("First"+(CString)itoa(k,buf,10));	
							return 1;
						}
						else
						{
							break;
						}
						
					}
					
					
				}
				
			}
			
			int m;
			//Now search diagnols.
			for (k=i-1,m=j-1;k>=0 && m>=0;k--,m--)
			{
				if (board[k][m]<10 && board[k][m]!=0)
				{
					break;
				}
				else
				{
					if (board[k][m]>10)
					{
						
						if ((board[k][m]==BLACK_KING) && k==i-1 && m==j-1) return 1;
						else if (board[k][m]==BLACK_QUEEN || board[k][m]==BLACK_BISHOP)
						{
							return 1;
						}
						else
						{
							break;
						}
						
					}
					
				}
			}
			for (k=i-1,m=j+1;k>=0 && m<8 ;k--,m++)
			{
				if (board[k][m]<10 && board[k][m]!=0)
				{
					break;
				}
				else
				{
					if (board[k][m]>10)
					{
						if ((board[k][m]==BLACK_KING) && k==i-1 && m==j+1) return 1;
						else if (board[k][m]==BLACK_QUEEN || board[k][m]==BLACK_BISHOP)
						{
							return 1;
						}
						else
						{
							break;
						}
						
					}
						
				}
			}
			
			for (k=i+1,m=j+1;k<8 && m<8;k++,m++)
			{
				
				if (board[k][m]<10 && board[k][m]!=0)
				{
					break;
				}
				else
				{
					if (board[k][m]>10)
					{
						if ((board[k][m]==BLACK_KING) && k==i+1 && m==j+1) return 1;
						else if (board[k][m]==BLACK_PAWN)
						{
							if ((k==i+1) && (m==j+1))
							{
								return 1;
							}
						}
						else if (board[k][m]==BLACK_QUEEN || board[k][m]==BLACK_BISHOP)
						{
							return 1;
						}
						else
						{
							break;
						}
			
					}
					
				}

			}
			for (k=i+1,m=j-1;k<8 && m>=0;k++,m--)
			{
				if (board[k][m]<10 && board[k][m]!=0)
				{
					break;
				}
				else
				{
					if (board[k][m]>10)
					{
						if ((board[k][m]==BLACK_KING) && k==i+1 && m==j-1) return 1;
						else if (board[k][m]==BLACK_PAWN)
						{
							if (k==i+1 && m==j-1)
							{
								return 1;
							}
						}
						else if (board[k][m]==BLACK_QUEEN || board[k][m]==BLACK_BISHOP)
						{
							return 1;
						}
						else
						{
							break;
						}
			
					}
						
				}
			}
			if ( (i<7 && j<6 && board[i+1][j+2]==BLACK_KNIGHT) || ((i>0 && j<6) && board[i-1][j+2]==BLACK_KNIGHT) || ((i<6 && j<7) &&board[i+2][j+1]==BLACK_KNIGHT) || ((i<6 && j>0) && board[i+2][j-1]==BLACK_KNIGHT))
			{
				return 1;
			}
			if (((i<7 && j>1) && board[i+1][j-2]==BLACK_KNIGHT) || ((i>0 && j>1) && board[i-1][j-2]==BLACK_KNIGHT) || ((i>1 && j>0) && board[i-2][j-1]==BLACK_KNIGHT) || ((i>1 && j<7) && board[i-2][j+1]==BLACK_KNIGHT))
			{
				return 1;
			}
			
			return 0;
				
		}
		
		//Same for Black King. Opponent piece only differs.
		else
		{
			for (k=i-1;k>=0;k--)
			{
				if (board[k][j]>10)
				{
					break;
				}
				else
				{
					if (  board[k][j]<10)
					{
						if ((board[k][j]==WHITE_KING) && k==i-1 ) return 1;
						if (board[k][j]==WHITE_ROOK || board[k][j]==WHITE_QUEEN)
						{
						
							return 1;
						}
						if (board[k][j]!=0)	
						break;
					}
					
				
				}

				
			}
		for (k=i+1;k<8;k++)
			{
				if (board[k][j]>10)
				{
					
					break;
				}
				else
				{
					if (  board[k][j]<10)
					{
						if ((board[k][j]==WHITE_KING) && k==i+1 ) return 1;
						if (board[k][j]==WHITE_ROOK || board[k][j]==WHITE_QUEEN)
						{
							
							return 1;
						}
					if (board[k][j]!=0)	
						break;		
					
					}
					
				}
			}
			for (k=j+1;k<8;k++)
			{
				if (board[i][k]>10)
				{
					
					break;
				}
				else
				{
					if (  board[i][k]<10)
					{
						if ((board[i][k]==WHITE_KING) && k==j+1 ) return 1;
						if (board[i][k]==WHITE_ROOK || board[i][k]==WHITE_QUEEN)
						{
							
							return 1;
						}
						
						if (board[i][k]!=0)	
						break;
					}
					
				}

			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色.com| 国产 日韩 欧美大片| 精品污污网站免费看| 亚洲图片一区二区| 欧美日韩免费观看一区三区| 亚洲一区二区三区四区五区黄| 欧美视频你懂的| 麻豆成人免费电影| 欧美国产97人人爽人人喊| 成a人片国产精品| 亚洲五码中文字幕| 26uuu国产日韩综合| 99久久99久久精品免费观看 | 色婷婷综合久久久中文字幕| 一区二区三区视频在线看| 91精品一区二区三区久久久久久 | 欧美va亚洲va| 波多野结衣中文字幕一区二区三区 | 成人国产精品免费网站| 亚洲精品免费一二三区| 5月丁香婷婷综合| 国产凹凸在线观看一区二区| 亚洲欧美偷拍另类a∨色屁股| 欧美精品亚洲一区二区在线播放| 韩国av一区二区三区| 亚洲精品成人少妇| 日韩精品中文字幕在线不卡尤物| a在线欧美一区| 日本视频一区二区三区| 日韩理论在线观看| 日韩一区二区三区视频在线 | 一本大道久久a久久综合婷婷| 日韩国产精品久久久久久亚洲| 国产精品久久久久久久久免费桃花 | 国产成人鲁色资源国产91色综| 日韩理论片一区二区| 精品国精品国产| 欧洲亚洲精品在线| 国产精品18久久久久| 午夜欧美视频在线观看| 国产精品无遮挡| 欧美电影免费提供在线观看| 一本大道综合伊人精品热热| 国产成人亚洲综合色影视| 性做久久久久久免费观看| 综合久久综合久久| 国产亚洲精品bt天堂精选| 日韩一区二区在线观看视频播放| a级精品国产片在线观看| 九九视频精品免费| 香蕉久久一区二区不卡无毒影院| 18欧美乱大交hd1984| 久久精品亚洲麻豆av一区二区| 欧美一卡在线观看| 欧美系列一区二区| 91丨porny丨国产| 成人综合婷婷国产精品久久蜜臀 | 成人一区二区三区| 精品无人码麻豆乱码1区2区| 日精品一区二区三区| 一区二区三区视频在线看| 亚洲欧洲99久久| 中文字幕不卡的av| 欧美精品一区二区三区四区| 日韩一区二区麻豆国产| 欧美日韩精品一区视频| 在线观看91视频| 色婷婷国产精品| 在线观看日韩av先锋影音电影院| 色综合天天在线| 色综合天天性综合| 色婷婷狠狠综合| 欧美最猛黑人xxxxx猛交| 欧美在线观看视频在线| 91福利视频久久久久| 91黄色在线观看| 欧美在线观看视频一区二区| 欧美日韩午夜精品| 56国语精品自产拍在线观看| 日韩一区二区三区视频在线观看| 日韩欧美久久一区| 久久色中文字幕| 亚洲国产成人一区二区三区| 国产精品丝袜一区| 亚洲日本一区二区| 亚洲一区在线视频| 日本va欧美va欧美va精品| 精品综合免费视频观看| 国产成人精品影视| 99久久久久久| 欧美视频完全免费看| 7777精品伊人久久久大香线蕉的 | 国产精品国产精品国产专区不蜜| 国产精品乱码久久久久久| 国产精品不卡视频| 性感美女久久精品| 久久精品国产一区二区| 国产麻豆精品在线观看| www.日韩大片| 精品污污网站免费看| 欧美mv日韩mv国产网站| xf在线a精品一区二区视频网站| 欧美国产一区视频在线观看| 亚洲免费大片在线观看| 午夜久久久影院| 国产一区二区三区蝌蚪| 97久久精品人人做人人爽50路| 欧美性欧美巨大黑白大战| 91精品国产aⅴ一区二区| 久久嫩草精品久久久精品| 亚洲天堂网中文字| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产乱色国产精品免费视频| 91久久国产综合久久| 精品剧情v国产在线观看在线| 中文字幕亚洲一区二区av在线| 亚洲国产成人va在线观看天堂| 精品在线观看视频| 91麻豆免费在线观看| 日韩亚洲欧美综合| 亚洲色图欧洲色图婷婷| 久久精品国产秦先生| 日本韩国视频一区二区| 日韩美一区二区三区| 亚洲视频一区在线观看| 国内国产精品久久| 欧美日韩久久一区二区| 国产欧美一区二区精品秋霞影院 | 国产精品小仙女| 欧美日韩情趣电影| 最新国产の精品合集bt伙计| 九九精品视频在线看| 欧美色网一区二区| 亚洲欧美一区二区久久| 国产福利一区二区三区视频在线| 欧美久久久久久久久中文字幕| 中文字幕一区二区三区色视频| 九九九久久久精品| 91精品婷婷国产综合久久性色| 亚洲欧美福利一区二区| 国产精品一级片在线观看| 日韩欧美一区在线| 亚洲午夜av在线| 欧美在线你懂得| 亚洲三级在线观看| 高清久久久久久| 国产婷婷色一区二区三区| 麻豆精品在线看| 7777精品伊人久久久大香线蕉经典版下载 | 麻豆成人久久精品二区三区小说| 色av成人天堂桃色av| 中文成人综合网| 国产999精品久久久久久绿帽| 精品国产免费一区二区三区四区| 天天综合色天天综合色h| 欧美午夜精品久久久| 亚洲精品成人悠悠色影视| 成人黄色a**站在线观看| 国产色婷婷亚洲99精品小说| 激情亚洲综合在线| 精品电影一区二区| 久久草av在线| 日韩色视频在线观看| 日产欧产美韩系列久久99| 欧美美女喷水视频| 无吗不卡中文字幕| 欧美剧情电影在线观看完整版免费励志电影 | 欧美人狂配大交3d怪物一区| 香蕉久久一区二区不卡无毒影院 | 日本少妇一区二区| 日韩欧美亚洲另类制服综合在线| 日本aⅴ免费视频一区二区三区 | 国产精品久久99| zzijzzij亚洲日本少妇熟睡| 国产精品色一区二区三区| 丁香啪啪综合成人亚洲小说| 国产精品美女视频| 91在线免费看| 一区二区三区日韩精品| 欧美亚洲动漫精品| 男男gaygay亚洲| 国产亚洲欧洲997久久综合 | 成人av在线资源| 一区二区国产视频| 91精品久久久久久久久99蜜臂| 美女视频第一区二区三区免费观看网站| 日韩欧美国产一区二区三区| 国产激情偷乱视频一区二区三区 | 欧美日韩一区三区四区| 亚洲国产成人av网| 日韩欧美国产1| 成人免费看片app下载| 亚洲精品免费在线观看| 欧美一区二区三区四区视频| 国产在线播放一区二区三区 | 伊人色综合久久天天人手人婷| 欧美日韩国产高清一区二区| 狠狠色2019综合网| 亚洲欧美视频在线观看视频| 欧美一级高清片|