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

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

?? 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一区二区三区免费野_久草精品视频
国产亚洲福利社区一区| 久久精品国产精品亚洲综合| 成人午夜av影视| 欧美一级夜夜爽| 午夜精品免费在线观看| av爱爱亚洲一区| 中文字幕不卡一区| 成人一级视频在线观看| 日韩午夜在线观看| 午夜日韩在线电影| 色欧美片视频在线观看在线视频| 中文字幕一区免费在线观看| 成人一区二区三区| 亚洲三级在线免费观看| 色综合天天综合给合国产| 亚洲欧美另类在线| 国产精品资源在线观看| 久久午夜老司机| 国产二区国产一区在线观看| 中文字幕不卡在线| 91老师片黄在线观看| 国产精品视频一二三区| 岛国av在线一区| 亚洲欧洲色图综合| 色婷婷精品大视频在线蜜桃视频| 亚洲美女电影在线| 在线观看欧美精品| 一区二区三区自拍| 欧美卡1卡2卡| 激情偷乱视频一区二区三区| 国产丝袜欧美中文另类| 99re成人精品视频| 亚洲第一电影网| 日韩精品综合一本久道在线视频| 韩国理伦片一区二区三区在线播放| 2020国产精品| 99久久99久久久精品齐齐| 亚洲一区二区偷拍精品| 3d动漫精品啪啪| 国产不卡在线播放| 亚洲最大成人网4388xx| 日韩欧美一级在线播放| 成人性生交大片免费看中文 | 国产午夜亚洲精品羞羞网站| 91色综合久久久久婷婷| 午夜精品一区二区三区电影天堂| 日韩一区二区三区免费看 | 青青草成人在线观看| 国产欧美一区二区精品性色| 色88888久久久久久影院野外| 亚洲一区二区中文在线| 久久免费视频色| 欧美伊人精品成人久久综合97| 男男视频亚洲欧美| 亚洲色图清纯唯美| 欧美日韩综合在线免费观看| 国产成人亚洲精品狼色在线| 一区二区三区日本| 精品福利av导航| 国产一区二区91| 婷婷国产v国产偷v亚洲高清| 欧美激情一区二区三区四区| 欧美综合一区二区| 国产成人精品一区二区三区网站观看| 亚洲一区二区三区四区的| 国产亚洲午夜高清国产拍精品| 在线亚洲高清视频| 国产99久久精品| 美美哒免费高清在线观看视频一区二区| 亚洲欧美怡红院| 欧美群妇大交群中文字幕| 成人性色生活片| 国产一区二三区| 亚洲国产成人高清精品| 亚洲免费毛片网站| 久久午夜羞羞影院免费观看| 在线不卡一区二区| 在线观看一区二区视频| 色综合中文字幕国产 | 91免费观看在线| 免费高清视频精品| 亚洲高清在线精品| 亚洲国产精品一区二区www在线| 欧美国产丝袜视频| 国产欧美日韩精品在线| 欧美成人精精品一区二区频| 欧美午夜片在线看| 色天天综合久久久久综合片| 成人av在线网| 免费看精品久久片| 天天色天天爱天天射综合| 亚洲成av人影院在线观看网| 亚洲女同ⅹxx女同tv| 亚洲丝袜制服诱惑| 中文字幕在线不卡视频| 国产精品视频yy9299一区| 日韩你懂的电影在线观看| 国产a级毛片一区| 日韩影院精彩在线| 男人操女人的视频在线观看欧美| 久久精品国产精品亚洲精品| 国产乱对白刺激视频不卡| 99久久精品免费看国产| 欧美日韩在线观看一区二区| 欧美大度的电影原声| 国产女同互慰高潮91漫画| 一区二区三区欧美日韩| 首页国产丝袜综合| 国产乱人伦精品一区二区在线观看| 成人久久久精品乱码一区二区三区 | 色综合久久综合中文综合网| 在线91免费看| 国产亚洲女人久久久久毛片| 亚洲免费观看在线视频| 免费看欧美女人艹b| 成人av网址在线| 欧美高清视频在线高清观看mv色露露十八| 欧美一二三区在线观看| 国产精品女上位| 日本系列欧美系列| av电影一区二区| 日韩精品一区二区三区中文不卡 | 亚洲一区欧美一区| 久久精品国产秦先生| eeuss鲁一区二区三区| 欧美人与禽zozo性伦| 国产精品国产三级国产aⅴ入口 | 亚洲色图清纯唯美| 久久精品国产精品青草| 91影院在线免费观看| 精品福利一区二区三区| 一区二区三区产品免费精品久久75| 美女网站在线免费欧美精品| 91啪亚洲精品| 久久人人97超碰com| 天涯成人国产亚洲精品一区av| 国产成人无遮挡在线视频| 欧美理论片在线| 亚洲欧美日韩久久精品| 韩国成人福利片在线播放| 欧美日韩三级一区二区| 自拍视频在线观看一区二区| 久久66热re国产| 欧美日本在线播放| 亚洲免费观看高清完整版在线观看 | 欧美激情一区二区三区蜜桃视频 | 亚洲高清免费视频| 99国产精品久久久久久久久久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 成人精品高清在线| 一区二区三区精品| 懂色av一区二区三区免费观看 | 国产精品久久久久久久久图文区| 日韩国产精品久久| 欧美日精品一区视频| 一区二区三区精品| 欧美专区日韩专区| 亚洲精品亚洲人成人网在线播放| 成人av免费在线播放| 久久久久久久综合狠狠综合| 国产精品羞羞答答xxdd| 久久久99精品免费观看| 国产传媒日韩欧美成人| 国产午夜一区二区三区| 成人激情开心网| 亚洲欧洲av一区二区三区久久| 成人午夜激情片| 国产精品毛片无遮挡高清| 成人一区二区三区视频在线观看| 中文字幕国产一区二区| 大陆成人av片| 亚洲天堂免费看| 91免费看视频| 日韩中文字幕亚洲一区二区va在线| 精品视频色一区| 日韩av在线播放中文字幕| 3atv一区二区三区| 免费在线一区观看| 久久综合色婷婷| 成人毛片在线观看| 亚洲蜜桃精久久久久久久| 欧美在线视频你懂得| 青青青伊人色综合久久| 精品美女一区二区| 成人午夜免费视频| 亚洲精品乱码久久久久久久久| 欧美撒尿777hd撒尿| 久久精品国产精品亚洲综合| 欧美激情一区二区在线| 色8久久人人97超碰香蕉987| 日本中文字幕一区二区视频| 欧美电影免费提供在线观看| 在线播放一区二区三区| 美女一区二区三区在线观看| 久久久影视传媒| 色呦呦一区二区三区| 偷拍亚洲欧洲综合| 久久久精品国产免费观看同学| av影院午夜一区| 午夜在线成人av|