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

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

?? client_game.cpp

?? 一個(gè)斗地主的小程序。。。。。。。。。。多多指教
?? CPP
字號(hào):
// 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 )  //說明已經(jīng)出了牌;
		{
			//把已經(jīng)出的牌回退;

			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;
	}
	
	//補(bǔ)丁,調(diào)整出牌顯示;
	int Temp_Discarding_Counter = 0;  //剛出的牌的數(shù)量;
	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 )  //說明已經(jīng)出了牌;
	{
		//把已經(jīng)出的牌回退;
		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;

	//如果出牌數(shù)大于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 )
		{
			//打印結(jié)束信息;
			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;
}
//中間(本機(jī))玩家出牌;
int CClientGame::CenterDoing()
{	
	if( m_nLordLock == 1 )
	{
		if( m_nRoundCounter == 3 )  //說明已經(jīng)出了牌;
		{
			//把已經(jīng)出的牌回退;
			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;  //表示當(dāng)前是地主,上次輪過牌,現(xiàn)在則不能出牌;
	}

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

	//如果沒有選擇牌;
	if( pCardsMap->m_nUpCounter == 0 )
	{
		//當(dāng)不是第一個(gè)出牌的時(shí)候才可以過牌;
		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 )  //說明已經(jīng)出了牌;
			{
				//把已經(jīng)出的牌回退;
				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]數(shù)組中,m_nDiscardingCounter計(jì)數(shù)增加;
	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;  //提起牌數(shù)為0;
			::RedrawGame();
			m_bButton = 0;   //延時(shí)鎖;
			Sleep(400);
			m_bButton = 1;   //延時(shí)鎖;
			return 0;
		}

		if( m_nRoundCounter == 3 )  //說明已經(jīng)出了牌;
		{
			//把已經(jīng)出的牌回退;
			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]數(shù)組中,m_nDiscardingCounter計(jì)數(shù)增加;
		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++;
			}
		}
		//發(fā)送給其他兩個(gè)玩家;
		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();      //本機(jī)玩家出牌;

		if( pCenterCards->m_nCardsCounter == 0 )
		{
			//打印結(jié)束信息;
			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;  //提起牌數(shù)為0;
		::RedrawGame();
		m_bButton = 0;   //延時(shí)鎖;
		Sleep(400);
		m_bButton = 1;   //延時(shí)鎖;
		return 0;
	}
	return -1;
}
//右邊玩家(電腦)思考,并決定要出的牌;		
int CClientGame::RightDoing()
{
	
	if( m_nLordLock == 2 )
	{		
		if( m_nRoundCounter == 3 )  //說明已經(jīng)出了牌;
		{
			//把已經(jīng)出的牌回退;

			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;
	}

	//補(bǔ)丁,調(diào)整出牌顯示;
	int Temp_Discarding_Counter = 0;  //剛出的牌的數(shù)量;
	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 )  //說明已經(jīng)出了牌;
	{
		//把已經(jīng)出的牌回退;		
		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++;

	//更新數(shù)據(jù);
	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 )
		{
			//打印結(jié)束信息;
			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;  //當(dāng)前地主;
	pDrawItem->BringRandLord(m_nDefaultLord);

	//info_type = 0: "%s要當(dāng)?shù)刂?本局地主是:%s"
	//info_type = 1: "%s不當(dāng)?shù)刂?等待%s選擇..."
	//info_type = 2: "按規(guī)則,本局地主是:%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);
				//跳出,準(zhǔn)備開始游戲;
				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));
					//跳出,準(zhǔn)備開始游戲;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);   //產(chǎn)生一個(gè)延時(shí);
			}//end while;
		}
		counter++;
		if( counter == 3 )
		{
			pDrawItem->GameInfo(m_nDefaultLord,2);
			m_nCurrentLord = m_nDefaultLord;
			//跳出,準(zhǔn)備開始游戲;
			break;
		}
	}//end while;
out:
//	Sleep(10000);
	return 1;
}

int CClientGame::Run()
{
	//開始新的牌局;
	NewGame();		   
	//顯示局?jǐn)?shù);
	pDrawItem->GameCounter(m_nGameCounter);

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

	DecideLord();

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

	m_bOperate  = TRUE;
//開始循環(huán);
	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;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久激情五月激情| 7777精品伊人久久久大香线蕉最新版 | 欧美欧美午夜aⅴ在线观看| 成人晚上爱看视频| voyeur盗摄精品| 91蜜桃视频在线| 色网综合在线观看| 欧美伊人久久久久久久久影院 | 国产精品乡下勾搭老头1| 国产成人亚洲综合a∨婷婷 | 日韩欧美高清一区| 久久无码av三级| 国产日韩亚洲欧美综合| 国产精品电影一区二区| 亚洲免费观看高清完整版在线| 综合久久一区二区三区| 亚洲制服丝袜av| 男人的j进女人的j一区| 国产精品一区二区在线观看网站| 丰满放荡岳乱妇91ww| 91麻豆免费视频| 欧美日韩视频在线一区二区| 欧美一区二区三区四区久久 | 一区二区三区免费看视频| 亚洲成人免费影院| 免费高清不卡av| 国产91精品免费| 99精品视频一区二区| 欧美日本在线视频| 欧美一区二区精美| 亚洲国产精品精华液2区45| 亚洲欧美一区二区三区国产精品 | 亚洲一区二区3| 男女激情视频一区| 国产高清不卡一区二区| 色妞www精品视频| 日韩精品自拍偷拍| 中文字幕一区二区在线播放| 五月婷婷综合在线| 国产精品亚洲成人| 欧美日韩免费视频| 国产午夜精品理论片a级大结局| 一色桃子久久精品亚洲| 天堂va蜜桃一区二区三区| 国产成人无遮挡在线视频| 在线观看91视频| 26uuu国产一区二区三区| 亚洲欧美日韩国产一区二区三区 | 一本大道av一区二区在线播放| 欧美二区在线观看| 欧美国产激情二区三区| 视频在线在亚洲| 成人午夜av在线| 91精品欧美久久久久久动漫| 国产精品看片你懂得| 美腿丝袜亚洲一区| 在线观看91视频| 欧美激情一区二区三区四区| 天天av天天翘天天综合网 | thepron国产精品| 日韩一区二区不卡| 一区二区在线免费观看| 国产成人av电影| 91精品国产91久久久久久一区二区| 国产精品久久久久三级| 久久91精品久久久久久秒播 | 亚洲午夜精品一区二区三区他趣| 黄页视频在线91| 欧美精品久久99久久在免费线| 国产精品乱码一区二区三区软件 | 欧美日韩一卡二卡| 亚洲国产激情av| 久久国产精品72免费观看| 色嗨嗨av一区二区三区| 亚洲国产成人一区二区三区| 久草中文综合在线| 欧美男生操女生| 亚洲福中文字幕伊人影院| 99精品桃花视频在线观看| 日本一区免费视频| 激情亚洲综合在线| 在线不卡中文字幕播放| 亚洲综合色成人| 日本韩国精品在线| 亚洲免费成人av| 99亚偷拍自图区亚洲| 国产精品午夜在线观看| 国产激情91久久精品导航 | 亚洲一区二区三区四区不卡| 91蜜桃免费观看视频| 日本一区二区成人在线| 丁香婷婷综合网| 久久久不卡网国产精品一区| 国产乱淫av一区二区三区 | 蜜桃在线一区二区三区| 欧美电影影音先锋| 五月婷婷久久丁香| 欧美视频日韩视频| 午夜精品在线看| 欧美日本在线一区| 日本视频免费一区| 欧美大黄免费观看| 九九**精品视频免费播放| 日韩免费观看高清完整版在线观看| 奇米精品一区二区三区在线观看 | 一区二区免费在线| 欧美亚洲综合在线| 性欧美疯狂xxxxbbbb| 4hu四虎永久在线影院成人| 美女在线观看视频一区二区| 亚洲精品一区二区三区99| 久88久久88久久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品沙发午睡系列990531| 国产91精品免费| 国产精品久久二区二区| 色偷偷88欧美精品久久久| 亚洲图片欧美综合| 日韩欧美中文字幕制服| 国产乱淫av一区二区三区| 欧美国产禁国产网站cc| 色88888久久久久久影院按摩| 亚洲成人精品一区| 欧美成人a在线| 成人av在线播放网址| 亚洲一区二区五区| 日韩精品一区二区三区swag| 丁香婷婷综合色啪| 亚洲午夜免费福利视频| 久久综合色之久久综合| 91亚洲精品乱码久久久久久蜜桃 | 色哟哟一区二区| 五月综合激情网| 久久久.com| 欧洲国内综合视频| 激情成人综合网| 自拍偷拍国产亚洲| 日韩欧美在线影院| 国产成人精品三级| 一区二区三区波多野结衣在线观看| 欧美一区二区视频观看视频| 国产91精品精华液一区二区三区| 亚洲一区视频在线观看视频| 精品国产乱码久久久久久蜜臀 | 日韩女优av电影在线观看| 成人a区在线观看| 亚洲va欧美va人人爽| 久久久噜噜噜久久人人看| 91蜜桃传媒精品久久久一区二区| 免费在线欧美视频| 亚洲视频在线一区观看| 日韩欧美国产三级电影视频| 99精品国产热久久91蜜凸| 蜜桃av一区二区在线观看| 亚洲欧美日韩在线不卡| 精品99一区二区三区| 色狠狠一区二区三区香蕉| 国产精品一二三四区| 亚洲风情在线资源站| 国产欧美日韩久久| 欧美一区二区免费视频| 99精品久久99久久久久| 久久精品国产亚洲高清剧情介绍| 亚洲日本一区二区| 久久久亚洲精品一区二区三区| 精品婷婷伊人一区三区三| 成人午夜激情影院| 久久成人羞羞网站| 亚洲国产精品一区二区尤物区| 国产欧美精品区一区二区三区 | 综合激情成人伊人| 精品国产百合女同互慰| 欧美日韩黄色一区二区| 99久久婷婷国产| 国产盗摄一区二区| 久久99精品国产.久久久久久 | 欧美日韩一本到| 91色porny| 成人福利视频在线| 国产精品一区二区在线看| 免费高清在线一区| 午夜精品一区二区三区免费视频| 中文字幕人成不卡一区| 国产女主播一区| 久久久国际精品| 久久一日本道色综合| 欧美一级免费大片| 欧美日韩国产首页| 欧美色手机在线观看| 91国偷自产一区二区使用方法| av在线不卡观看免费观看| 国产电影一区在线| 国产成人av影院| 国产精品18久久久久久vr| 久久成人免费网| 久久av资源网| 久久爱www久久做| 九色|91porny| 国产一区视频在线看| 国产乱妇无码大片在线观看|