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

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

?? mychessview.cpp

?? 一個用MFC做的象棋游戲,可以聯網雙人對下,
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		   {
			   m_bMessFrom=false;
			   return;
		   }
           if (0==GetDocument()->m_nSelected)//表示A準備選擇了這個棋子了
           {
			   if (pCurrentChess)
			   {
				   if (pCurrentChess->m_uRoleID<=16)//剛好選中的子就是A方的
				   {
					   GetDocument()->m_nSelected=1;//表示A方已經選擇了棋子了
					   pCurrentChess->ShowIAmHere(&dc);
					    ::PlaySound("res\\select.wav",NULL,SND_FILENAME|SND_ASYNC);
					   GetDocument()->m_pOldRole=pCurrentChess;//保存這個棋子以決定下一次有效單擊該怎么做
				   }
				   else
				   {
					   //do nothing//
				   }
			   }
           }
		   else if(1==GetDocument()->m_nSelected)//表示A已經選中了一個棋子了
		   {

			   if (pCurrentChess&&pCurrentChess->m_uRoleID<=16)//表示下一步點的是自己家的子,這個時候只進行選中切換
			   {
				    CChessMan::m_stcChosenID=pCurrentChess->m_uRoleID;
				   GetDocument()->m_pOldRole->InvalidateMyRect(&dc);
				   GetDocument()->m_cpPaper.Draw(&dc);
				  GetDocument()->m_chessMap.Draw(&dc);
				  
				    GetDocument()->m_pOldRole=pCurrentChess;
					::PlaySound("res\\select.wav",NULL,SND_FILENAME|SND_ASYNC);
				   //InvalidateRect(NULL,true);

					
			   }
			   else
			   {
				   if (GetDocument()->m_chessMap.IfManInMidOfHead(GetDocument()->m_pOldRole->uRow,GetDocument()->m_pOldRole->uCol))
				   {
					   if (nPosX!=GetDocument()->m_pOldRole->uCol)////這里是用來判斷兩個將之間只有一個子的情況
					   {
						   AfxMessageBox(_T("對不起只能上下移動"));
						   return;
					   }
				   }
				   
				  /*
				   if (GetDocument()->m_pOldRole->m_uRoleID==16)////判斷將的下一步是不是可以走,如果不可以走的話就提示不可以走的
				  				   {
				  					   bool bLegal=GetDocument()->m_chessMap.IfHeadCanGo(GetDocument()->m_pOldRole,point,1);
				                          if (!bLegal)
				                          {
				                              AfxMessageBox(_T("這個地方太危險,不能走的"));
				  							return ;
				                          }
				  				   }*/
				  			 
				   
				   bool bIfLegal=GetDocument()->m_pOldRole->IfNextPosLegal(point);//返回true表示下一步是合法的
				   UINT uOldRow,uOldCol;
				   
				   uOldRow=GetDocument()->m_pOldRole->uRow;
				   uOldCol=GetDocument()->m_pOldRole->uCol;///保存即將移動的棋子的原來的位置
				   if(bIfLegal)
				   {
					 /*
					   if (!GetDocument()->m_chessMap.IfHeadSafe(GetDocument()->m_pOldRole,nPosY,nPosX))
					 					   {
					 						   AfxMessageBox(_T("你走了你的將就不安全了,不能走的"));
					 						   return ;
					 					   }*/
					 
					   if (GetDocument()->m_pOldRole->m_uRoleID==16)////判斷將的下一步是不是可以走,如果不可以走的話就提示不可以走的
					   {
						   bool bLegal=GetDocument()->m_chessMap.IfHeadCanGo(GetDocument()->m_pOldRole,point,1);
						   if (!bLegal)
						   {
							   AfxMessageBox(_T("將和將是不可以直接面對面的"));
							   return ;
						   }
					   }
					   //GetDocument()->m_pOldRole->GetRect(rect);
                      
					   bool bResult= GetDocument()->m_pOldRole->NextStep(pCurrentChess,nPosY,nPosX);
					   if (true==bResult)//表示A方已經下了
					   {
						   StSaveInfo HelpSaveInfo;
						   if (GetDocument()->m_chessMap.TheStateOfAllChess[nPosY][nPosX]!=NULL)
						   {
							   HelpSaveInfo.uTargetId=GetDocument()->m_chessMap.TheStateOfAllChess[nPosY][nPosX]->m_uRoleID;
						   } 
						   else
						   {
							   HelpSaveInfo.uTargetId=0;
						   }
						  // GetDocument()->m_chessMap.ResetStatePos(GetDocument()->m_pOldRole->uRow,GetDocument()->m_pOldRole->uCol,NULL);
						   GetDocument()->m_chessMap.ResetStatePos(uOldRow,uOldCol,NULL);

						   GetDocument()->m_chessMap.m_nSteps++;

						   HelpSaveInfo.uRoleId=GetDocument()->m_pOldRole->m_uRoleID;
						   HelpSaveInfo.uOldRow=uOldRow;
						   HelpSaveInfo.uOldCol=uOldCol;
						   HelpSaveInfo.uNewRow=nPosY;
						   HelpSaveInfo.uNewCol=nPosX;

						   GetDocument()->m_CSave.push(HelpSaveInfo);//更新CSave
						   GetDocument()->m_CSave.SaveChess();

						   if(pCurrentChess&&pCurrentChess->m_uRoleID==32)
						   {
							   ::PlaySound("res\\gamewin.wav",NULL,SND_FILENAME|SND_ASYNC);
							   AfxMessageBox(_T("A wins the game"));

							   CMainFrame *pMainFrame=(CMainFrame*)AfxGetMainWnd();
							   CClientDC dc=CClientDC(this);
							   pMainFrame->Timer1->SetToZero(&dc,0);
							   pMainFrame->Timer2->SetToZero(&dc,300);
							   setJISHIToZero=true;
							   ::AfxGetMainWnd()->KillTimer(1);
							   ::AfxGetMainWnd()->KillTimer(2);

							   m_bIfLButtonDownMe=true;//默認表示是自己的單擊
							   m_bIfACanGo=true;
							   m_TalkDlg=false;
							   m_bIfStart=false;
							   m_bHeStart=false;
							   GetDocument()->m_chessMap.Clear();
							   UINT ifSave;
							   ifSave=MessageBox("Do you want to save? Yes/No?","Save the File",MB_YESNO);
							   if (ifSave==IDYES)
							   {
								   OnFileSaveas();
								   GetDocument()->OnNewDocument();
								   InvalidateRect(NULL,true);
							   }
							   else
							   {
								   GetDocument()->OnNewDocument();
								   InvalidateRect(NULL,true);
							   }	
							   return ;
						   }
                            if (!pCurrentChess)
                            {
								::PlaySound("res\\go.wav",NULL,SND_FILENAME|SND_ASYNC);
                            }
							else
							{
								::PlaySound("res\\eat.wav",NULL,SND_FILENAME|SND_ASYNC);
							}
						   //AfxMessageBox(_T("A wins the game"));
						   GetDocument()->m_chessMap.ResetStatePos(nPosY,nPosX,GetDocument()->m_pOldRole);
						   theArr.Set(uOldRow,uOldCol,0);
						   theArr.Set(nPosY,nPosX,1);
						   //theArr.Show();
						
						  // InvalidateRect(NULL,true);
						// GetDocument()->m_chessMap.Show();
						  // GetDocument()->m_cpPaper.Draw(&dc);
						   //GetDocument()->m_chessMap.Draw(&dc);
						   //GetDocument()->m_pOldRole->Draw(&dc);
						   GetDocument()->m_nWhoPlayNow=2;//輪到B下了
						   CChessMan::m_stcChosenID=-1;
						   GetDocument()->m_nSelected=0;
						//   m_bIfAFinished=true;
						   GetDocument()->m_pOldRole->InvalidateMyRect(&dc,uOldRow,uOldCol);///局部重繪
						   GetDocument()->m_cpPaper.Draw(&dc);
						   GetDocument()->m_chessMap.Draw(&dc);
						   m_bIfACanGo=false;
						   ::AfxGetMainWnd()->KillTimer(1);
						   ::AfxGetMainWnd()->SetTimer(2,1000,NULL);
						   CString myStr;
						   myStr.Format("已走步數: %d",GetDocument()->m_chessMap.m_nSteps);
						   pDC->TextOut(0,0,myStr);
						   //str.Format(_T("nPosX: %d,nPosY %d,ID %d"),GetDocument()->m_pOldRole->uRow,GetDocument()->m_pOldRole->uCol,GetDocument()->m_pOldRole->m_uRoleID);
						   //AfxMessageBox(str);
					   }
				   }


			   }
			   
              
		   }
		   
	   }
	   else if(2==GetDocument()->m_nWhoPlayNow)//表示是B方下了
	   {
		   
		   if (!m_bMessFrom)
		   {
			   return;
		   }
		   m_bMessFrom=false;
		   if (0==GetDocument()->m_nSelected)//表示B準備選擇了這個棋子了
		   {
			   if (pCurrentChess)
			   {
				   if (pCurrentChess->m_uRoleID>=17)//剛好選中的子就是B方的
				   {
					   GetDocument()->m_nSelected=2;//表示B方已經選擇了棋子了
					   pCurrentChess->ShowIAmHere(&dc);
					   ::PlaySound("res\\select.wav",NULL,SND_FILENAME|SND_ASYNC);
					   GetDocument()->m_pOldRole=pCurrentChess;//保存這個棋子以決定下一次有效單擊該怎么做
				   }
				   else
				   {
					   //do nothing//
				   }
			   }
		   }
		   else if(2==GetDocument()->m_nSelected)//表示B已經選中了一個棋子了
		   {

			   if (pCurrentChess&&pCurrentChess->m_uRoleID>=17)//表示下一步點的是自己家的子,這個時候只進行選中切換
			   {

				   CChessMan::m_stcChosenID=pCurrentChess->m_uRoleID;
				   GetDocument()->m_pOldRole->InvalidateMyRect(&dc);
				   GetDocument()->m_cpPaper.Draw(&dc);
				   GetDocument()->m_chessMap.Draw(&dc);
				   GetDocument()->m_pOldRole=pCurrentChess;
				   //InvalidateRect(NULL,true);
				   
				   ::PlaySound("res\\select.wav",NULL,SND_FILENAME|SND_ASYNC);
			   }
			   else  
			   {
				   if (GetDocument()->m_chessMap.IfManInMidOfHead(GetDocument()->m_pOldRole->uRow,GetDocument()->m_pOldRole->uCol))
				   {
					   if (nPosX!=GetDocument()->m_pOldRole->uCol)////這里是用來判斷兩個將之間只有一個子的情況
					   {
						   AfxMessageBox(_T("對不起只能上下移動"));
						   return;
					   }
				   }
				  /*
				   if (GetDocument()->m_pOldRole->m_uRoleID==32)////判斷將的下一步是不是可以走,如果不可以走的話就提示不可以走的
				  				   {
				  					   bool bLegal=GetDocument()->m_chessMap.IfHeadCanGo(GetDocument()->m_pOldRole,point,2);
				  					   if (!bLegal)
				  					   {
				  						   AfxMessageBox(_T("這個地方太危險,不能走的"));
				  						   return ;
				  					   }
				  				   }*/
				  
				   UINT uOldRow,uOldCol;
				   uOldRow=GetDocument()->m_pOldRole->uRow;
				   uOldCol=GetDocument()->m_pOldRole->uCol;
				   bool bIfLegal=GetDocument()->m_pOldRole->IfNextPosLegal(point);//返回true表示下一步是合法的
				   if(bIfLegal)
				   {
					   /*
					   if (!GetDocument()->m_chessMap.IfHeadSafe(GetDocument()->m_pOldRole,nPosY,nPosX))
					   					   {
					   						   AfxMessageBox(_T("你走了你的將就不安全了,不能走的"));
					   						   return ;
					   					   }*/
					   
					   if (GetDocument()->m_pOldRole->m_uRoleID==32)////判斷將的下一步是不是可以走,如果不可以走的話就提示不可以走的
					   {
						   bool bLegal=GetDocument()->m_chessMap.IfHeadCanGo(GetDocument()->m_pOldRole,point,2);
						   if (!bLegal)
						   {
							   AfxMessageBox(_T("將和將是不可以直接面對面的"));
							   return ;
						   }
					   }
					   //GetDocument()->m_pOldRole->GetRect(rect);
					   bool bResult= GetDocument()->m_pOldRole->NextStep(pCurrentChess,nPosY,nPosX);
					   if (true==bResult)//表示B方已經下了
					   {
						   StSaveInfo HelpSaveInfo;
						   if (GetDocument()->m_chessMap.TheStateOfAllChess[nPosY][nPosX]!=NULL)
						   {
							   HelpSaveInfo.uTargetId=GetDocument()->m_chessMap.TheStateOfAllChess[nPosY][nPosX]->m_uRoleID;
						   } 
						   else
						   {
							   HelpSaveInfo.uTargetId=0;
						   }
						   //GetDocument()->m_chessMap.ResetStatePos(GetDocument()->m_pOldRole->uRow,GetDocument()->m_pOldRole->uCol,NULL);
						   GetDocument()->m_chessMap.ResetStatePos(uOldRow,uOldCol,NULL);

						   GetDocument()->m_chessMap.m_nSteps++;

						   HelpSaveInfo.uRoleId=GetDocument()->m_pOldRole->m_uRoleID;
						   HelpSaveInfo.uOldRow=uOldRow;
						   HelpSaveInfo.uOldCol=uOldCol;
						   HelpSaveInfo.uNewRow=nPosY;
						   HelpSaveInfo.uNewCol=nPosX;

						   GetDocument()->m_CSave.push(HelpSaveInfo);
						   GetDocument()->m_CSave.SaveChess();

						   if(pCurrentChess&&pCurrentChess->m_uRoleID==16)
						   {
							   ::PlaySound("res\\gamewin.wav",NULL,SND_FILENAME|SND_ASYNC);
								AfxMessageBox(_T("B wins the game"));

								CMainFrame *pMainFrame=(CMainFrame*)AfxGetMainWnd();
								CClientDC dc=CClientDC(this);
								pMainFrame->Timer1->SetToZero(&dc,0);
								pMainFrame->Timer2->SetToZero(&dc,300);
								setJISHIToZero=true;
								::AfxGetMainWnd()->KillTimer(1);
								::AfxGetMainWnd()->KillTimer(2);

								m_bIfLButtonDownMe=true;//默認表示是自己的單擊
								m_bIfACanGo=true;
								m_TalkDlg=false;
								m_bIfStart=false;
								m_bHeStart=false;
								GetDocument()->m_chessMap.Clear();
								UINT ifSave;
								ifSave=MessageBox("Do you want to save? Yes/No?","Save the File",MB_YESNO);
								if (ifSave==IDYES)
								{
									OnFileSaveas();
									GetDocument()->OnNewDocument();
									InvalidateRect(NULL,true);
								}
								else
								{
									GetDocument()->OnNewDocument();
									InvalidateRect(NULL,true);
								}	
								return;
						   }
						   if (!pCurrentChess)
						   {
							   ::PlaySound("res\\go.wav",NULL,SND_FILENAME|SND_ASYNC);
						   }
						   else
						   {
							   ::PlaySound("res\\eat.wav",NULL,SND_FILENAME|SND_ASYNC);
						   }
						   GetDocument()->m_chessMap.ResetStatePos(nPosY,nPosX,GetDocument()->m_pOldRole);
						   //InvalidateRect(NULL,true);
						   theArr.Set(uOldRow,uOldCol,0);
						   theArr.Set(nPosY,nPosX,2);
						   
						   // GetDocument()->m_cpPaper.Draw(&dc);
						   //GetDocument()->m_chessMap.Draw(&dc);
						   //GetDocument()->m_pOldRole->Draw(&dc);
						   GetDocument()->m_nWhoPlayNow=1;//輪到A下了
						   CChessMan::m_stcChosenID=-1;
						   GetDocument()->m_nSelected=0;
						   GetDocument()->m_pOldRole->InvalidateMyRect(&dc,uOldRow,uOldCol);///局部重繪
						   GetDocument()->m_cpPaper.Draw(&dc);
						   GetDocument()->m_chessMap.Draw( &dc);
						   ::AfxGetMainWnd()->SetTimer(1,1000,NULL);
						   ::AfxGetMainWnd()->KillTimer(2);
						   
						   CString myStr;
						   myStr.Format("已走步數: %d",GetDocument()->m_chessMap.m_nSteps);
						   pDC->TextOut(0,0,myStr);
						   //str.Format(_T("nPosX: %d,nPosY %d"),GetDocument()->m_pOldRole->uRow,GetDocument()->m_pOldRole->uCol);
						   //AfxMessageBox(str);
					   }
				   }


			   }


		   }
	   }
   //}
	   m_bIfLButtonDownMe=true;
	   }
	CView::OnLButtonDown(nFlags, point);
	delete pDC;
}

void CMyChessView::OnHelpConect()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲电影视频在线| 99精品热视频| 欧美喷潮久久久xxxxx| 欧美zozo另类异族| 精品影院一区二区久久久| 欧美三级欧美一级| 亚洲日穴在线视频| 97se亚洲国产综合自在线不卡 | 国产欧美日韩激情| 久草在线在线精品观看| 久久精品欧美日韩| 国产精品一线二线三线精华| 国产欧美一区二区精品久导航| 精彩视频一区二区| 久久久高清一区二区三区| 午夜精品视频一区| 777亚洲妇女| 美女在线视频一区| 亚洲精品在线免费播放| 亚洲成av人片一区二区| 正在播放亚洲一区| 久久精品国产亚洲一区二区三区| 欧美视频一区在线观看| 麻豆91小视频| 国产偷国产偷精品高清尤物| 91国产丝袜在线播放| 亚洲成人免费av| 在线视频综合导航| 精品亚洲成a人| 国产午夜精品理论片a级大结局 | 亚洲综合色区另类av| 色欧美日韩亚洲| 亚洲精品写真福利| 日韩手机在线导航| 成人免费的视频| 秋霞午夜av一区二区三区| 久久新电视剧免费观看| 成人福利视频在线| 免费欧美高清视频| 久久久久久**毛片大全| 欧美揉bbbbb揉bbbbb| 久久精品免费观看| ㊣最新国产の精品bt伙计久久| 欧美一级高清大全免费观看| 韩国女主播成人在线| 欧美激情一区二区三区全黄| 欧美精品xxxxbbbb| 国产麻豆一精品一av一免费| 亚洲一区二区美女| 2024国产精品| 欧美影院一区二区| av午夜一区麻豆| 日本亚洲视频在线| 亚洲电影在线免费观看| 日韩一级高清毛片| 99re成人精品视频| 国产成人免费高清| 午夜影院久久久| 亚洲激情五月婷婷| 欧美国产激情一区二区三区蜜月| 欧美日韩中文一区| 91国偷自产一区二区三区观看| 国产乱子伦视频一区二区三区 | 欧美亚洲综合网| 成人久久18免费网站麻豆| 日韩电影网1区2区| 国产日韩欧美精品在线| 欧美变态凌虐bdsm| 欧美一a一片一级一片| 色综合久久综合网欧美综合网 | 国产精品传媒在线| 久久久精品黄色| 777久久久精品| 国产成人自拍在线| 日韩美女天天操| 成年人国产精品| 在线综合+亚洲+欧美中文字幕| 亚洲国产精品综合小说图片区| 亚洲免费观看在线观看| 久久亚洲精品国产精品紫薇| 欧美日韩中文精品| 制服丝袜亚洲播放| 欧美日韩一区小说| 欧美二区在线观看| 欧美写真视频网站| 成人短视频下载| 国产成人夜色高潮福利影视| 蜜桃一区二区三区四区| 精品一区二区三区免费播放| 调教+趴+乳夹+国产+精品| 三级一区在线视频先锋| 亚洲精品成人悠悠色影视| 国产精品伦理一区二区| 国产精品久久福利| 国产精品天美传媒沈樵| 中文久久乱码一区二区| 久久精品网站免费观看| 精品国产a毛片| 国产欧美一区二区精品忘忧草| 精品福利一区二区三区免费视频| 2023国产精华国产精品| 久久久噜噜噜久久中文字幕色伊伊 | 91免费版在线| 欧美在线你懂的| 欧美日韩精品欧美日韩精品一综合| 99久免费精品视频在线观看| 成人高清在线视频| 色婷婷香蕉在线一区二区| 欧美日韩一区二区在线视频| 欧美私模裸体表演在线观看| www.日韩精品| 欧美区在线观看| 欧美成人伊人久久综合网| 国产日本亚洲高清| 专区另类欧美日韩| 一区二区久久久久| 奇米影视一区二区三区小说| 青青草91视频| 国内久久精品视频| 91丨九色丨尤物| 色综合久久综合网| 久久久天堂av| 国产精品福利影院| 日本特黄久久久高潮| 狠狠色狠狠色综合系列| 国产精品资源站在线| 91免费国产在线| 91麻豆精品国产91| 亚洲色图欧洲色图| 日日夜夜精品免费视频| 99久久综合精品| 欧美美女黄视频| 精品人伦一区二区色婷婷| 亚洲人成网站色在线观看| 天天综合天天做天天综合| 国产成人免费在线观看| 欧美调教femdomvk| 久久这里只有精品视频网| 亚洲女同一区二区| 捆绑调教一区二区三区| 在线观看日韩国产| 久久九九影视网| 久久精品国产久精国产爱| 成人免费视频视频| 精品视频123区在线观看| 国产欧美一区二区精品性色| 夜夜嗨av一区二区三区| 99精品视频免费在线观看| 91麻豆精品91久久久久同性| 亚洲精品国产a久久久久久| 久久精品99久久久| 成年人国产精品| 久久日一线二线三线suv| 国产欧美精品国产国产专区| 亚洲va国产天堂va久久en| 粉嫩欧美一区二区三区高清影视 | 91老师国产黑色丝袜在线| 欧美大白屁股肥臀xxxxxx| 亚洲女爱视频在线| 男人操女人的视频在线观看欧美| 欧美人狂配大交3d怪物一区| 国产精品剧情在线亚洲| 国模一区二区三区白浆| 精品视频免费在线| 五月激情综合网| 91啦中文在线观看| 久久日韩粉嫩一区二区三区 | 日本韩国一区二区三区视频| 久久久久久久久久久电影| 亚洲精品网站在线观看| 日本久久一区二区| 亚洲欧洲另类国产综合| 风间由美一区二区三区在线观看 | 激情五月播播久久久精品| 99久久免费视频.com| 国产精品全国免费观看高清| 老色鬼精品视频在线观看播放| 欧美成人精品福利| 日韩av一区二区三区四区| 欧美日韩一区高清| 亚洲国产综合在线| 91老师片黄在线观看| 一区二区高清免费观看影视大全| www.激情成人| 亚洲一区在线视频| 欧美在线短视频| 亚洲综合色网站| 欧美日韩免费一区二区三区视频| 日韩欧美中文字幕一区| 国产在线精品免费| 久久久久97国产精华液好用吗| 国产suv精品一区二区883| 国产色产综合色产在线视频| 99热这里都是精品| 亚洲精品v日韩精品| 欧美色偷偷大香| 亚洲va欧美va天堂v国产综合| 97精品国产露脸对白| 亚洲一区二区三区爽爽爽爽爽| 欧美撒尿777hd撒尿|