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

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

?? myframe.h

?? 一個人工智能的國際象棋游戲
?? H
字號:
/****************************************************
Author: S. Senthil kumar
Class Name: myframe
Purpose:    Main GUI as well as encapsulates the Chess Board

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



class myframe:public CFrameWnd
{

	/*Structure which represents Game Data
	  Used for opening and saving the game
	*/
	
	struct Game
	{
		int Board[8][8];		//The Board
		int WhoseTurn;		    //The player to start playing
		int movecount;          //Total No. of Moves
		int Base;               //Position of White pieces (top or bottom of the board)
		int computer_color;		//Which color the computer is playing	
		/*Structure encapsulating castling information
		*/ 
		
		struct CastlingInfoStruct
		{
			int kingmoved;
			int kingrookmoved;
			int queenrookmoved;
		}CastlingInfo;
	};

	
	
	
	
	
	int playing;					//Whether game is being played
	CFont chessfont;				//Font to display chess pieces
	CMenu menu;						//Menu Display
	int board[8][8];				//The Main Chess Board
	int piece;						//The Current piece selected
	int destpiece;					//Piece which might have been cut by the current piece
	CListBox movelist;				//Listbox to display moves in Algebraic Notation
	CEdit whitepieces;				//EditBox to display Cut White pieces
	CEdit blackpieces;				//EditBox to display Cut Black pieces
	CEdit help;						//EditBox to display Help on Castling
	int blackkingmoved;				//Boolean variable to check if black king has been moved
	int whitekingmoved;				//Boolean variable to check if white king has been moved
	int king_blackrook;				//Boolean variable to check if black rook on King side has been moved
	int queen_blackrook;			//Boolean variable to check if black rook on Queen side has been moved
	int king_whiterook;				//Boolean variable to check if white rook on King side has been moved
	int queen_whiterook;			//Boolean variable to check if white rook on Queen side has been moved
	int x;							//Multi use variable
	LastMove undo;					//Structure which stores the last move. Used by unmakemove()
	int count;
	int style;						//Internal variable to display chess squares in correct color
	int startsquare[2],endsquare[2];	//Used to store starting and ending positions of a chess move.	
	int lastmoved;					//Used to store who moved last. (White or Black).
	int white_cutpiece;				//Used to store white piece which has been cut
	int black_cutpiece;				//Used to store black piece which has been cut
	int castling_move;				//Whether last move was a castling move.
	int enable_menus;				//Boolean variable to enable or disable menus while computer is thinking
	int music_play;					//Boolean variable To start or stop background music
	CString castlecondition;		//Internal variable to identify whether castling can be done
public:
	myframe();						//Constructor
	void StartGame();				//Starts a new Game
	void SaveGame();				//Saves current Game
	void OpenGame();				//Opens a game from Disk
	void Exit();					//To exit to Windows
	
	
	DECLARE_MESSAGE_MAP();
	void OnCreate(LPCREATESTRUCT l);					//Message Handler
	void OnPaint();										//Message Handler
	void OnLButtonDown(UINT nflags,CPoint point);		//Message Handler
	void OnLButtonUp(UINT nflags,CPoint point);			//Message Handler
	void OnMouseMove(UINT flags,CPoint point);			//Message Handler
	void myframe::OnDrawItem(int nid,LPDRAWITEMSTRUCT s);
	void about();										//Displays about dialog box
	
	/*Initialize board arrangement and display board.
	Arguments:
		count: Variable which indicates whether this is the first OnPaint message or just refreshing messages	
	*/
	void initializeBoard(int count,CDC *p);				
	
	
	//Moves piece in board array
	void movePieceInRealBoard();
	
	
	/*Moves piece in Display
	Arguments:
		undercheck: Indicates whether user's King is under check.
		x,y,a,b	  : Used only when undercheck=1. Used for returning piece back to original position.(because king is still under check)
	*/
	void movePieceInViewBoard(int undercheck,int x=0,int y=0,int a=0,int b=0);
	
	
	//Returns character corresponding to piece. Used for displaying the pieces using Chess font
	char *pieceName(int piece);
	
	
	/*Arranges pieces other than the pawn.
	  Arguments:
		p:     ClientDC for displaying the pieces on board
		color: Color to display pieces
	*/
	void ArrangeOtherPieces(CDC *p,int color);
	
	
	
	/*Checks whether move made is valid. Master function
      Arguments: None
	*/
	int validmove();
	
	/*Undoes a move
	Arguments: None
	*/
		
	
	
	void unmakemove();
	
	/*Returns piece at destination
	Arguments: x and y of destination square
	*/
	int NoOtherPiece(int destx,int desty);
	
	
	
	/*Finds max and min of two numbers*/
	int Max(int x,int y);
	int Min(int x,int y);
	//int CheckMate();
	
	
	//void CheckForCheckMate(int board[8][8]);
	//int CheckCheck(int target);
	
	
	/*ValidMove_xxx  Functions which check the validity of moves of each piece
	  Arguments:
			startx,starty:Starting square
			destx,desty, :Ending square
	*/
	
	
	int ValidMove_Pawn(int startx,int starty,int destx,int desty);
	int ValidMove_King(int startx,int starty,int destx,int desty);
	int ValidMove_Queen(int startx,int starty,int destx,int desty);
	int ValidMove_Bishop(int startx,int starty,int destx,int desty);
	int ValidMove_Knight(int startx,int starty,int destx,int desty);
	int ValidMove_Rook(int startx,int starty,int destx,int desty);
	
	
	
	/*Displays piece cut in the edit box
	  Arguments:
		piece: Id of the piece cut
	*/
	void DisplayCutPiece(int piece);
	
	
	//int GenerateAllMoves(int color);
	
	
	
	//Starts the thinking of the computer. Driver function
	void ComputerPlay();
	//int InPieceRange(int target);
	//void ProtectKing();
	
	
	
	/*Reverses Move if found illegal. (Moving illegal piece when castling).
	Arguments: None
	*/
	void ReverseMove();
	
	
	
	/*Redraws the board.
	  Arguments:
	      CDC *p: Optional. Uses it if given.
	*/
	void Refresh(CDC *p=NULL);
	//int IsTimeOver();

	
	//Thread which starts the computer thinking
	friend UINT StartSearch(LPVOID param);
	
	//Thread which starts the pondering
	friend UINT Ponder(LPVOID param);
	
	
	
	/*Checks the appropriate menu item in the Level menu
	  Arguments:None
	*/
	void SetCheck(CCmdUI *item);
	
	
	
	/*Actually sets the level of play. Changes search_depth;
	Arguments:
	  id: Resource id of menu item clicked
	*/
	void SetLevel(int id);
	
	
	
	/*Shows help*/
	void debug_show();
	
	
	
	/*Rotates board consecutively
	  Arguments: None
	*/
	   
	void RotateBoard();
	
	
	
	/*Disables or enables menu item according to enable_menus*/
	void disenable(CCmdUI *item);
		
	
	/*Function which displays Options Dialog box*/
	void ShowOptions();
	
	
	/*Actual Function which starts or stops music*/
	void ControlMusic();
	
	
	/*Function which shows stop or play music as appropriate*/
	void ShowHideMusicPlay(CCmdUI *item);
	
	
	/*Castle the king. Only implements the castling
	Arguments:
		x:				piece Id 
		startx,starty:	starting square
		destx,desty		:destination square
	*/
	int Castle(int x,int startx,int starty,int destx,int desty);
	
	
	/*Checks whether Castling is possible. Only implements the checking part
	Arguments:
		
		startx,starty:	starting square
		destx,desty		:destination square
	*/
	int CanCastle(int startx,int starty,int destx,int desty);

	
	
	/*Function which checks appropriate board size menu item */
	void SetSelectedSize(CCmdUI *item);
	
	
	
	/*Actually sets the board size and refreshes the whole screen.*/
	void SetBoardSize(int id);
	
	
	
	/*Saves castling information in the game structure*/
	int CanCastle_Save(Game *game);
	
	
	
	/*Displays the help edit box on clicking How to castle*/
	void ShowCastleHelp();
	
	
	
	/*Starts the computer thinking on proposal of draw*/
	void ConsiderDraw();
	
	
	/*Handles resignation*/
	void OpponentResigned();
	
	
	/*Responds to Refresh menu item by calling Refresh(NULL)*/
	void RefreshBoard();





};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区精华| 另类小说图片综合网| 视频一区视频二区中文字幕| 国内精品伊人久久久久av影院| 99久久精品免费看| 2019国产精品| 蜜桃在线一区二区三区| 色狠狠av一区二区三区| 国产精品污污网站在线观看| 免费人成网站在线观看欧美高清| 色综合中文字幕国产| 久久精品人人做人人爽97| 日本不卡在线视频| 在线看一区二区| 亚洲欧洲中文日韩久久av乱码| 韩国av一区二区三区| 日韩情涩欧美日韩视频| 亚洲成人自拍偷拍| 91黄视频在线观看| 国产精品卡一卡二| 国产成人综合亚洲网站| 久久精品亚洲精品国产欧美 | 狠狠色狠狠色综合系列| 欧美影视一区在线| 亚洲精选在线视频| 91蜜桃视频在线| 亚洲人成在线观看一区二区| 成人免费视频视频| 国产精品毛片无遮挡高清| 国产一区二区福利视频| 欧美电影精品一区二区| 免费成人结看片| 日韩午夜在线观看视频| 精品亚洲成a人| 日韩三级视频中文字幕| 韩国女主播成人在线观看| 欧美精品一区二区三区一线天视频| 蜜臀99久久精品久久久久久软件| 国产丝袜在线精品| 成人av电影在线观看| 中文字幕佐山爱一区二区免费| 99久久国产综合精品色伊| 欧美三级电影在线观看| aaa国产一区| 精品播放一区二区| 韩日欧美一区二区三区| 亚洲国产精品精华液2区45| av一二三不卡影片| 亚洲一线二线三线久久久| 欧美日韩中文字幕一区二区| 日日夜夜精品视频天天综合网| 制服丝袜一区二区三区| 国产精品91一区二区| 国产精品丝袜一区| 欧美色网站导航| 麻豆精品久久久| 国产女主播一区| 欧美色综合网站| 狠狠色狠狠色综合日日91app| 欧美国产一区视频在线观看| 色国产精品一区在线观看| 三级成人在线视频| 中文字幕乱码亚洲精品一区| 欧洲中文字幕精品| 麻豆91在线观看| 亚洲欧美一区二区三区久本道91 | 久久99久久久久| 国产清纯白嫩初高生在线观看91 | 国产98色在线|日韩| 亚洲裸体xxx| 欧美成人精品高清在线播放| 粉嫩av一区二区三区| 国产精品1区2区3区在线观看| 一区二区三区在线免费| 日韩精品一区二区三区视频播放 | 久久精品久久精品| 亚洲裸体xxx| 久久久精品黄色| 欧美日韩国产综合一区二区| 国产老肥熟一区二区三区| 婷婷成人激情在线网| 欧美国产精品一区二区| 日韩精品中午字幕| 欧美日韩1234| 色婷婷综合激情| 岛国一区二区三区| 久久国内精品视频| 午夜久久久久久久久久一区二区| 国产精品久久久久久久午夜片| 日韩午夜激情电影| 欧美日韩一区二区三区视频| 99久久99久久精品免费看蜜桃 | 日韩影院在线观看| 亚洲美女免费视频| 国产精品久久久久aaaa| 亚洲精品一区在线观看| 91精品国产一区二区三区蜜臀| 91在线视频播放地址| 国产成人免费视频一区| 激情久久五月天| 秋霞电影网一区二区| 日日嗨av一区二区三区四区| 亚洲精品欧美在线| 亚洲精品菠萝久久久久久久| 亚洲国产精品成人综合色在线婷婷| 日韩视频国产视频| 日韩精品在线看片z| 9191久久久久久久久久久| 欧美日韩在线一区二区| 欧美又粗又大又爽| 91丨九色porny丨蝌蚪| 99久久综合国产精品| 大尺度一区二区| 成人黄动漫网站免费app| 成人精品国产福利| av资源站一区| 91丨九色丨蝌蚪丨老版| 色婷婷亚洲婷婷| 欧美色精品在线视频| 久久婷婷一区二区三区| 精品国产一区二区三区忘忧草| 精品久久久久久最新网址| www成人在线观看| 中文字幕精品—区二区四季| 国产女主播视频一区二区| 国产精品麻豆视频| 亚洲一区二区三区在线看| 日本网站在线观看一区二区三区| 蜜臀99久久精品久久久久久软件| 久草在线在线精品观看| 国产成人免费av在线| 91一区二区三区在线观看| 在线视频一区二区三区| 欧美电影一区二区三区| 精品日韩99亚洲| 国产精品国产精品国产专区不蜜| 亚洲图片欧美激情| 婷婷开心久久网| 国内外成人在线| 91老师片黄在线观看| 91麻豆精品国产91久久久使用方法 | 欧美电影在哪看比较好| 欧美成人午夜电影| 国产精品福利影院| 亚洲成在人线在线播放| 国产精品综合网| 色香色香欲天天天影视综合网| 7777精品久久久大香线蕉| 久久精品一区二区三区av| 亚洲精品视频一区| 久久成人免费网站| 99久久99久久久精品齐齐| 91麻豆精品91久久久久同性| 国产欧美一区二区精品忘忧草| 亚洲综合成人网| 丁香亚洲综合激情啪啪综合| 欧美午夜精品久久久久久超碰 | 日韩欧美国产麻豆| 亚洲欧洲中文日韩久久av乱码| 麻豆一区二区三| 欧美伦理影视网| 国产精品美女久久久久久2018| 亚洲国产cao| 99re成人精品视频| 日韩精品一区二区三区视频| 亚洲夂夂婷婷色拍ww47| 国产精品亚洲综合一区在线观看| 欧美色窝79yyyycom| 国产精品久久久久久久浪潮网站| 日本v片在线高清不卡在线观看| av一区二区三区黑人| 亚洲精品在线免费观看视频| 亚瑟在线精品视频| 99久久精品情趣| 亚洲国产精品传媒在线观看| 麻豆成人综合网| 欧美人牲a欧美精品| 亚洲欧洲综合另类| 成人免费高清在线| 国产日韩欧美精品一区| 蜜臀精品一区二区三区在线观看| 色噜噜久久综合| 国产精品电影院| 国产成人丝袜美腿| 久久久影院官网| 久热成人在线视频| 欧美一区二区精美| 日本大胆欧美人术艺术动态| 欧美日韩久久久一区| 亚洲国产三级在线| 欧美性猛交xxxx黑人交| 中文字幕一区二区三区在线观看| 国产美女在线精品| 久久亚洲一级片| 国产精品小仙女| 国产欧美精品日韩区二区麻豆天美| 久久成人精品无人区| 精品国产欧美一区二区| 久久99国产精品麻豆| 2023国产精品自拍|