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

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

?? client_game.cpp

?? 斗地主源碼
?? CPP
字號:
// Client_Game.cpp: implementation of the CClientGame class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "斗地主.h"

#include "Game.h"

#include "Link.h"
#include "My_DirectInput.h"
#include "my_directdraw.h"

#include "Playing_Cards.h"


#include "Draw_Item_Engine.h"
#include "Draw_Cards_Engine.h"

#include "Client_Game.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CClientGame::CClientGame()
{

}

CClientGame::~CClientGame()
{

}
//左邊玩家(電腦)思考,并決定要出的牌;
int CClientGame::LeftDoing()
{	
	if( m_nLordLock == 0 )
	{		
		if( m_nRoundCounter == 3 )  //說明已經出了牌;
		{
			//把已經出的牌回退;

			if(pLeftCards->m_nDiscardingCounter != 0)
				pDrawCards->LeftBacking();

			if(pCenterCards->m_nDiscardingCounter != 0)
				pDrawCards->CenterBacking();

			if(pRightCards->m_nDiscardingCounter != 0)
				pDrawCards->RightBacking();

			m_nRoundCounter = 0;   //新的一圈;
		}
		m_nRoundCounter++;
		return -1;
	}

	if( pRightCards->m_cDiscardingType.m_nTypeNum == 0 && 
		pCenterCards->m_cDiscardingType.m_nTypeNum == 0 )
	{
		m_nLordLock = -1;
	}
	
	//補丁,調整出牌顯示;
	int Temp_Discarding_Counter = 0;  //剛出的牌的數量;
	CCard Temp_Discarding[20];         //剛出的牌;

	pClientLink->Recv(Temp_Discarding,sizeof(CCard)*20);
	pClientLink->Recv(&Temp_Discarding_Counter,sizeof(int));
	pClientLink->Recv(&pLeftCards->m_cDiscardingType,sizeof(CCardsType));	

	if( m_nRoundCounter == 3 )  //說明已經出了牌;
	{
		//把已經出的牌回退;
		if(pLeftCards->m_nDiscardingCounter != 0)
			pDrawCards->LeftBacking();

		if(pCenterCards->m_nDiscardingCounter != 0)
			pDrawCards->CenterBacking();

		if(pRightCards->m_nDiscardingCounter != 0)
			pDrawCards->RightBacking();

		m_nRoundCounter = 0;   //新的一圈;
	}
	m_nRoundCounter++;

	for(int i=0;i<20;i++)
	{
		pLeftCards->m_cDiscarding[i] = Temp_Discarding[i];
	}
	pLeftCards->m_nDiscardingCounter = Temp_Discarding_Counter;

	//如果出牌數大于0;
	if( pLeftCards->m_cDiscardingType.m_nTypeNum == 4 )
	{
		m_nBombCounter++;//加分;
	}

	if( pLeftCards->m_cDiscardingType.m_nTypeNum != 0 )
	{
		pDrawCards->LeftDiscarding();
		::RedrawGame();
		if( pLeftCards->m_nCardsCounter == 0 )
		{
			//打印結束信息;
			AccountScore(0);
			::SetTimer(hWnd,0,0,NULL);   //開始游戲;
			return 0;
		}
	}
	else
	{
		//打印左邊玩家不要信息;
		pDraw->TextGDI("過牌!-",250,200,RGB(255,0,0),400,"華文新魏",lpddsprimary);
		if( m_nCurrentLord == 0 )
		{
			m_nLordLock = 0;
		}
		Sleep(300);
	}
	return 1;
}
//中間(本機)玩家出牌;
int CClientGame::CenterDoing()
{	
	if( m_nLordLock == 1 )
	{
		if( m_nRoundCounter == 3 )  //說明已經出了牌;
		{
			//把已經出的牌回退;
			if(pCenterCards->m_nDiscardingCounter != 0)
				pDrawCards->CenterBacking();

			if(pRightCards->m_nDiscardingCounter != 0)
				pDrawCards->RightBacking();

			if(pLeftCards->m_nDiscardingCounter != 0)
				pDrawCards->LeftBacking();

			m_nRoundCounter = 0;   //新的一圈;
		}
		m_nRoundCounter++;
		return -1;  //表示當前是地主,上次輪過牌,現在則不能出牌;
	}

	if( pLeftCards->m_cDiscardingType.m_nTypeNum == 0 &&
		pRightCards->m_cDiscardingType.m_nTypeNum == 0 )
	{
		m_nLordLock = -1;
	}

	//如果沒有選擇牌;
	if( pCardsMap->m_nUpCounter == 0 )
	{
		//當不是第一個出牌的時候才可以過牌;
		if( pLeftCards->m_cDiscardingType.m_nTypeNum != 0 || 
			pRightCards->m_cDiscardingType.m_nTypeNum != 0 )
		{
			pDraw->TextGDI("過牌!",470,400,RGB(255,0,0),400,"華文新魏",lpddsprimary);
			Sleep(300);

			if( m_nRoundCounter == 3 )  //說明已經出了牌;
			{
				//把已經出的牌回退;
				if(pCenterCards->m_nDiscardingCounter != 0)
					pDrawCards->CenterBacking();

				if(pRightCards->m_nDiscardingCounter != 0)
					pDrawCards->RightBacking();

				if(pLeftCards->m_nDiscardingCounter != 0)
					pDrawCards->LeftBacking();

				m_nRoundCounter = 0;   //新的一圈;
			}

			m_nRoundCounter++;
			if( m_nCurrentLord == 1 )
			{
				m_nLordLock = 1;
			}

			pCenterCards->m_cDiscardingType.m_nTypeNum = 0;

			pClientLink->Send(pCenterCards->m_cDiscarding,sizeof(CCard)*20);
			pClientLink->Send(&pCenterCards->m_nDiscardingCounter,sizeof(int));
			pClientLink->Send(&pCenterCards->m_cDiscardingType,sizeof(CCardsType));	

			return 1;
		}
		else
		{
			return 0;
		}
	}

	pCenterCards->m_nChoosingCardsCounter = 0;
	//將要出的牌加入到m_cDiscarding[20]數組中,m_nDiscardingCounter計數增加;
	for(int i=0;i<pCenterCards->m_nCardsCounter;i++)
	{
		if(pCardsMap->Center0[i].m_nY == Center_y0 - Card_Up)
		{			
			pCenterCards->m_cChoosingCards[pCenterCards->m_nChoosingCardsCounter] = pCenterCards->m_cCards[i];
			pCenterCards->m_nChoosingCardsCounter++;
		}
	}

	//判斷出牌的合法性,
	if( pCenterCards->CheckChoosing() )
	{
		//大小判斷;
		if( CompareCards() == 0 )
		{
			for(int j=0;j<pCenterCards->m_nCardsCounter;j++)
			{
				if(pCardsMap->Center0[j].m_nY == Center_y0 - Card_Up)
				{			
					pCardsMap->Center0[j].m_nY += Card_Up;	
				}
			}		
			pCardsMap->m_nUpCounter = 0;  //提起牌數為0;
			::RedrawGame();
			m_bButton = 0;   //延時鎖;
			Sleep(400);
			m_bButton = 1;   //延時鎖;
			return 0;
		}

		if( m_nRoundCounter == 3 )  //說明已經出了牌;
		{
			//把已經出的牌回退;
			if(pCenterCards->m_nDiscardingCounter != 0)
				pDrawCards->CenterBacking();

			if(pRightCards->m_nDiscardingCounter != 0)
				pDrawCards->RightBacking();

			if(pLeftCards->m_nDiscardingCounter != 0)
				pDrawCards->LeftBacking();

			m_nRoundCounter = 0;   //新的一圈;
		}	
		m_nRoundCounter++;
		//將要出的牌加入到m_cDiscarding[20]數組中,m_nDiscardingCounter計數增加;
		for(int i=0;i<pCenterCards->m_nCardsCounter;i++)
		{
			if(pCardsMap->Center0[i].m_nY == Center_y0 - Card_Up)
			{			
				pCenterCards->m_cDiscarding[pCenterCards->m_nDiscardingCounter] = pCenterCards->m_cCards[i];
				pCenterCards->m_nDiscardingCounter++;
			}
		}
		//發送給其他兩個玩家;
		pClientLink->Send(pCenterCards->m_cDiscarding,sizeof(CCard)*20);
		pClientLink->Send(&pCenterCards->m_nDiscardingCounter,sizeof(int));
		pClientLink->Send(&pCenterCards->m_cDiscardingType,sizeof(CCardsType));	

		if( pCenterCards->m_cDiscardingType.m_nTypeNum == 4 )
		{
			m_nBombCounter++;//加分;
		}

		pDrawCards->CenterDiscarding();      //本機玩家出牌;

		if( pCenterCards->m_nCardsCounter == 0 )
		{
			//打印結束信息;
			PlaySound(MAKEINTRESOURCE(IDR_WIN),AfxGetResourceHandle(),
					SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
			AccountScore(1);
			::SetTimer(hWnd,0,0,NULL);   //開始游戲;
			return 2;
		}
		return 1;
	}
	else
	{
		for(int j=0;j<pCenterCards->m_nCardsCounter;j++)
		{
			if(pCardsMap->Center0[j].m_nY == Center_y0 - Card_Up)
			{			
				pCardsMap->Center0[j].m_nY += Card_Up;	
			}
		}
		pCardsMap->m_nUpCounter = 0;  //提起牌數為0;
		::RedrawGame();
		m_bButton = 0;   //延時鎖;
		Sleep(400);
		m_bButton = 1;   //延時鎖;
		return 0;
	}
	return -1;
}
//右邊玩家(電腦)思考,并決定要出的牌;		
int CClientGame::RightDoing()
{
	
	if( m_nLordLock == 2 )
	{		
		if( m_nRoundCounter == 3 )  //說明已經出了牌;
		{
			//把已經出的牌回退;

			if(pLeftCards->m_nDiscardingCounter != 0)
				pDrawCards->LeftBacking();

			if(pCenterCards->m_nDiscardingCounter != 0)
				pDrawCards->CenterBacking();

			if(pRightCards->m_nDiscardingCounter != 0)
				pDrawCards->RightBacking();

			m_nRoundCounter = 0;   //新的一圈;
		}
		m_nRoundCounter++;
		return -1;
	}

	if( pLeftCards->m_cDiscardingType.m_nTypeNum == 0 && 
		pCenterCards->m_cDiscardingType.m_nTypeNum == 0 )
	{
		m_nLordLock = -1;
	}

	//補丁,調整出牌顯示;
	int Temp_Discarding_Counter = 0;  //剛出的牌的數量;
	CCard Temp_Discarding[20];    //剛出的牌;

	pClientLink->Recv(Temp_Discarding,sizeof(CCard)*20);
	pClientLink->Recv(&Temp_Discarding_Counter,sizeof(int));
	pClientLink->Recv(&pRightCards->m_cDiscardingType,sizeof(CCardsType));	

	if( m_nRoundCounter == 3 )  //說明已經出了牌;
	{
		//把已經出的牌回退;		
		if(pRightCards->m_nDiscardingCounter != 0)
			pDrawCards->RightBacking();

		if(pCenterCards->m_nDiscardingCounter != 0)
			pDrawCards->CenterBacking();

		if(pLeftCards->m_nDiscardingCounter != 0)
			pDrawCards->LeftBacking();

		m_nRoundCounter = 0;   //新的一圈;
	}
	m_nRoundCounter++;

	//更新數據;
	for(int i=0;i<20;i++)
	{
		pRightCards->m_cDiscarding[i] = Temp_Discarding[i];
	}
	pRightCards->m_nDiscardingCounter = Temp_Discarding_Counter;

	if( pRightCards->m_cDiscardingType.m_nTypeNum == 4 )
	{
		m_nBombCounter++;//加分;
	}
	if( pRightCards->m_cDiscardingType.m_nTypeNum != 0 )
	{
		pDrawCards->RightDiscarding();
		::RedrawGame();
		if( pRightCards->m_nCardsCounter == 0 )
		{
			//打印結束信息;
			AccountScore(2);
			::SetTimer(hWnd,0,0,NULL);   //開始游戲;
			return 0;
		}
	}
	else
	{
		if( m_nCurrentLord == 2 )
		{
			m_nLordLock = 2;
		}
		//打印右邊玩家不要信息;
		pRightCards->m_cDiscardingType.m_nTypeNum = 0;
		pDraw->TextGDI("過牌!-",600,200,RGB(255,0,0),400,"華文新魏",lpddsprimary);
		Sleep(300);
	}
	return 1;
}		
//客戶端決定地主;
int CClientGame::DecideLord()	   
{
	pClientLink->Recv(&m_nDefaultLord,sizeof(int));

	m_nCurrentLord = m_nDefaultLord;  //當前地主;
	pDrawItem->BringRandLord(m_nDefaultLord);

	//info_type = 0: "%s要當地主,本局地主是:%s"
	//info_type = 1: "%s不當地主,等待%s選擇..."
	//info_type = 2: "按規則,本局地主是:%s"

	int i;
	int counter = 0;
	while(1)
	{
		if( m_nCurrentLord != 1 )
		{
			pClientLink->Recv(&i,sizeof(int));
			if( i == m_nCurrentLord )
			{
				pDrawItem->GameInfo(m_nCurrentLord,0);
				//跳出,準備開始游戲;
				break;
			}
			else if( i == -1 )
			{
				pDrawItem->GameInfo(m_nCurrentLord,1);
				pClientLink->Recv(&m_nCurrentLord,sizeof(int));
			}
		}
		else if( m_nCurrentLord == 1 )
		{
			pDrawItem->ChooseLord();
			while(1)
			{
				if( pInput->IsLButtonDown(m_cYES_RECT) )  //要
				{
					PlaySound(MAKEINTRESOURCE(IDR_CHOSE),AfxGetResourceHandle(),
						SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  
					pDrawItem->GameInfo(m_nCurrentLord,0);								
					pClientLink->Send(&m_nCurrentLord,sizeof(int));
					//跳出,準備開始游戲;goto...
					goto out;
				}
				else if( pInput->IsLButtonDown(m_cNO_RECT) )  //不要
				{
					PlaySound(MAKEINTRESOURCE(IDR_CHOSE),AfxGetResourceHandle(),
						SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //	
					pDrawItem->GameInfo(m_nCurrentLord,1);
					i = -1;
					pClientLink->Send(&i,sizeof(int));

					pClientLink->Recv(&m_nCurrentLord,sizeof(int));
					break;
				}
				Sleep(50);   //產生一個延時;
			}//end while;
		}
		counter++;
		if( counter == 3 )
		{
			pDrawItem->GameInfo(m_nDefaultLord,2);
			m_nCurrentLord = m_nDefaultLord;
			//跳出,準備開始游戲;
			break;
		}
	}//end while;
out:
//	Sleep(10000);
	return 1;
}

int CClientGame::Run()
{
	//開始新的牌局;
	NewGame();		   
	//顯示局數;
	pDrawItem->GameCounter(m_nGameCounter);

	//接受服務器發牌;
	pClientLink->Recv(g_cAllCards,sizeof(CCard)*54);
	//發牌;
	pDrawCards->Dealing();   

	DecideLord();

	pDrawCards->DealingLord(m_nCurrentLord); //發地主牌;

	m_bOperate  = TRUE;
//開始循環;
	if(m_nCurrentLord == 0)
	{
		LeftDoing();
		::SetTimer(hWnd,20,10,NULL);
	}
	else if(m_nCurrentLord == 1)
	{
		::SetTimer(hWnd,20,10,NULL);
	}
	else if(m_nCurrentLord == 2)
	{
		RightDoing();
		LeftDoing();
		::SetTimer(hWnd,20,10,NULL);
	}
	return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a美女胸又www黄视频久久| 精品成人佐山爱一区二区| 欧美日韩高清影院| 久久精品视频网| 图片区小说区区亚洲影院| 国产一区二区精品久久99| 在线观看免费成人| 国产视频在线观看一区二区三区 | 性做久久久久久| 丁香激情综合五月| 日韩欧美美女一区二区三区| 一区二区三区在线免费观看 | 99精品欧美一区二区蜜桃免费| 欧美日韩免费观看一区二区三区| 国产精品午夜久久| 极品销魂美女一区二区三区| 欧美人与z0zoxxxx视频| 亚洲裸体在线观看| 成人精品亚洲人成在线| 精品久久久久av影院| 丝袜亚洲另类丝袜在线| 91国偷自产一区二区三区成为亚洲经典 | bt欧美亚洲午夜电影天堂| 久久综合狠狠综合久久激情| 日韩中文字幕一区二区三区| 欧美性极品少妇| 亚洲女同女同女同女同女同69| 国产成人啪午夜精品网站男同| 欧美成人三级电影在线| 日本成人在线网站| 91精品国产入口| 日韩精品一二三四| 日韩写真欧美这视频| 日韩成人伦理电影在线观看| 欧美裸体一区二区三区| 天堂成人国产精品一区| 制服丝袜亚洲播放| 老色鬼精品视频在线观看播放| 51精品久久久久久久蜜臀| 日韩和欧美一区二区三区| 欧美日本乱大交xxxxx| 图片区小说区国产精品视频| 欧美一级欧美三级在线观看| 日韩高清中文字幕一区| 91麻豆精品91久久久久同性| 日韩av一区二区三区四区| 日韩一区二区视频| 国产自产高清不卡| 欧美国产禁国产网站cc| 91在线看国产| 亚洲成人自拍偷拍| 日韩一二三四区| 成人午夜看片网址| 一区二区三区高清不卡| 欧美片在线播放| 麻豆精品一区二区av白丝在线| 久久夜色精品一区| 不卡一区二区在线| 亚洲成人av在线电影| 日韩欧美一卡二卡| 成人免费毛片app| 亚洲国产欧美日韩另类综合 | 国内一区二区在线| 日本一区二区三区在线观看| 91看片淫黄大片一级| 天堂午夜影视日韩欧美一区二区| 久久久www成人免费毛片麻豆| a在线欧美一区| 狠狠色丁香婷婷综合| 国产日产亚洲精品系列| 一本到高清视频免费精品| 看电影不卡的网站| 亚洲天堂2014| 日韩精品在线看片z| 成人理论电影网| 亚洲成人一区在线| 久久精品一区二区| 7777精品伊人久久久大香线蕉超级流畅| 免费不卡在线观看| 夜夜揉揉日日人人青青一国产精品| 日韩视频免费观看高清完整版在线观看| 成人午夜看片网址| 麻豆精品视频在线观看免费| 亚洲精品久久久久久国产精华液| 久久亚洲一区二区三区明星换脸| 欧美三级视频在线| 成人激情开心网| 蜜桃免费网站一区二区三区| 一区二区欧美视频| 国产目拍亚洲精品99久久精品 | 色激情天天射综合网| 激情综合色丁香一区二区| 亚洲一区二区美女| 最近日韩中文字幕| 欧美激情在线看| 日韩美女天天操| 欧美一级片在线| 欧美日韩大陆一区二区| 在线观看亚洲成人| 91蜜桃网址入口| 不卡的av网站| 国产丶欧美丶日本不卡视频| 麻豆91免费看| 日韩电影免费一区| 亚洲午夜视频在线| 一区二区三区毛片| 国产精品久久久久四虎| 久久久久久99久久久精品网站| 欧美一区二区女人| 欧美一区2区视频在线观看| 欧美嫩在线观看| 欧美日本国产一区| 欧美精品在欧美一区二区少妇| 欧美性感一类影片在线播放| 色噜噜夜夜夜综合网| 色先锋aa成人| 色婷婷综合久久久久中文一区二区 | 亚洲欧洲三级电影| 国产色综合一区| 国产情人综合久久777777| 国产欧美中文在线| 国产精品免费久久久久| 亚洲视频一区在线| 亚洲精品成人少妇| 亚洲五码中文字幕| 日韩制服丝袜av| 毛片一区二区三区| 国产一区二区三区四| 国产成人一区在线| 成人国产精品免费网站| 日韩午夜在线观看| 精品日韩欧美在线| 国产亚洲一区二区三区四区 | 99r国产精品| 91久久精品日日躁夜夜躁欧美| 色综合久久综合网欧美综合网| 在线看一区二区| 在线综合+亚洲+欧美中文字幕| 欧美一区二区观看视频| 久久久久久99久久久精品网站| 亚洲乱码日产精品bd| 午夜精品123| 韩国一区二区三区| av爱爱亚洲一区| 欧美日韩国产一区| 国产亚洲欧美激情| 亚洲一区影音先锋| 美腿丝袜一区二区三区| 成人免费av网站| 欧美人伦禁忌dvd放荡欲情| 久久久亚洲高清| 亚洲第四色夜色| 国产成人综合在线观看| 欧美午夜影院一区| 国产视频在线观看一区二区三区 | 日本韩国一区二区三区| 欧美一区二区三区视频免费 | 精品成人一区二区三区| 国产精品国产三级国产普通话三级| 亚洲永久精品大片| 国产乱人伦偷精品视频免下载| 91极品美女在线| 欧美激情一区二区三区四区| 亚洲无人区一区| 成人免费毛片嘿嘿连载视频| 欧美一级片在线| 一区二区三区小说| 国产九九视频一区二区三区| 欧美色网一区二区| 国产精品久久久久久户外露出| 久久精品国产第一区二区三区| 91一区二区三区在线播放| 亚洲精品在线观看网站| 婷婷久久综合九色国产成人| av亚洲精华国产精华精| 久久亚区不卡日本| 日韩—二三区免费观看av| 91啪亚洲精品| 欧美国产精品v| 国产一区二区久久| 精品久久久三级丝袜| 日韩高清电影一区| 欧美亚洲禁片免费| 亚洲另类色综合网站| caoporn国产一区二区| 久久夜色精品国产欧美乱极品| 日韩av中文字幕一区二区三区| 91国偷自产一区二区开放时间 | 在线精品国精品国产尤物884a| 久久久国产精品午夜一区ai换脸| 麻豆精品一区二区综合av| 欧美乱妇23p| 亚洲va欧美va天堂v国产综合| 91视频xxxx| 亚洲品质自拍视频| 91在线无精精品入口| 亚洲男人电影天堂| 91蜜桃视频在线| 亚洲欧美另类小说视频| 色综合久久精品|