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

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

?? draw_cards_engine.cpp

?? 斗地主VC源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Draw_Cards_Engine.cpp: implementation of the CDrawCardsEngine class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "斗地主.h"

#include "MainFrm.h"

#include "Game.h"

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

#include "Draw_Cards_Engine.h"
#include "Playing_Cards.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//撲克的位置;
CCardPos::CCardPos()
{
	m_nX      = -1;       //表示沒有;
	m_nY      = -1;
	m_bVisual = 1;   //表示可見;
}
//撲克牌布局地圖結構初始化;
CCardsMap::CCardsMap()
{
	for(int i=0;i<20;i++)
	{
		Center0[i].m_nX = Center_x0 + Card_Distance1 * i;
		Center0[i].m_nY = Center_y0;

		Center1[i].m_nX = Center_x1 + Card_Distance0 * i;
		Center1[i].m_nY = Center_y1;

		Center2[i].m_nX = Center_x2 + Card_Distance2 * i;
		Center2[i].m_nY = Center_y2;
	}

	for(int j=0;j<20;j++)
	{
		Left0[j].m_nX = Left_x0; 
		Left0[j].m_nY = Left_y0 + Card_Distance0 * j;

		Left1[j].m_nX = Left_x1;
		Left1[j].m_nY = Left_y1 + Card_Distance1 * j;
		
		Left2[j].m_nX = Left_x2;
		Left2[j].m_nY = Left_y2 + Card_Distance2 * j;
	}

	for(int k=0;k<20;k++)
	{
		Right0[k].m_nX = Right_x0;
		Right0[k].m_nY = Right_y0 + Card_Distance0 * k;

		Right1[k].m_nX = Right_x1;
		Right1[k].m_nY = Right_y1 + Card_Distance1 * k;

		Right2[k].m_nX = Right_x2;
		Right2[k].m_nY = Right_y2 + Card_Distance2 * k;
	}

	m_cLordCards[0].m_nX = Lord_Card1_x;
	m_cLordCards[0].m_nY = Lord_Card1_y;

	m_cLordCards[1].m_nX = Lord_Card2_x;
	m_cLordCards[1].m_nY = Lord_Card2_y;

	m_cLordCards[2].m_nX = Lord_Card3_x;
	m_cLordCards[2].m_nY = Lord_Card3_y;

	m_cDistributeCard.m_nX = Card_x; 
	m_cDistributeCard.m_nY = Card_y; 

	m_nLordCards = 0;
	m_nUpCounter = 0;
}

//CDrawCardsEngine
CDrawCardsEngine::CDrawCardsEngine():BLUE( _RGB32BIT(0,0,0,255) )
{
	m_bVisual = FALSE;
}

CDrawCardsEngine::~CDrawCardsEngine()
{

}
//渲染初始化;
int CDrawCardsEngine::Init()
{
	char* file;
//14種牌從小到大的加載;
//3-10
	char filename[50];
	for(int i=0;i<=7;i++)
	{
		sprintf(filename,"bmp\\Cards\\%d.bmp",i+3);
		lpddsbg_Cards[i] = pDraw->CreateSurface(Cards_Width*4,Cards_Height,0,BLUE);
		pDraw->BitmapToSurface(lpddsbg_Cards[i],0,0,filename,Cards_Width*4,Cards_Height);
	}

//J
	file = "bmp\\Cards\\j.bmp";
	lpddsbg_Cards[8] = pDraw->CreateSurface(Cards_Width*4,Cards_Height,0,BLUE);
	pDraw->BitmapToSurface(lpddsbg_Cards[8],0,0,file,Cards_Width*4,Cards_Height);
//Q
	file = "bmp\\Cards\\Q.bmp";
	lpddsbg_Cards[9] = pDraw->CreateSurface(Cards_Width*4,Cards_Height,0,BLUE);
	pDraw->BitmapToSurface(lpddsbg_Cards[9],0,0,file,Cards_Width*4,Cards_Height);
//K
	file = "bmp\\Cards\\K.bmp";
	lpddsbg_Cards[10] = pDraw->CreateSurface(Cards_Width*4,Cards_Height,0,BLUE);
	pDraw->BitmapToSurface(lpddsbg_Cards[10],0,0,file,Cards_Width*4,Cards_Height);
//A
	file = "bmp\\Cards\\A.bmp";
	lpddsbg_Cards[11] = pDraw->CreateSurface(Cards_Width*4,Cards_Height,0,BLUE);
	pDraw->BitmapToSurface(lpddsbg_Cards[11],0,0,file,Cards_Width*4,Cards_Height);
//2
	file = "bmp\\Cards\\2.bmp";
	lpddsbg_Cards[12] = pDraw->CreateSurface(Cards_Width*4,Cards_Height,0,BLUE);
	pDraw->BitmapToSurface(lpddsbg_Cards[12],0,0,file,Cards_Width*4,Cards_Height);
//加載百搭;
	file = "bmp\\Cards\\jokers.bmp";
	lpddsbg_Cards[13] = pDraw->CreateSurface(Cards_Width*2,Cards_Height,0,BLUE);
	pDraw->BitmapToSurface(lpddsbg_Cards[13],0,0,file,Cards_Width*2,Cards_Height);
//加載撲克背面;
	file = "bmp\\Cards\\card_back1.bmp";
	lpddsbg_Cards[14] = pDraw->CreateSurface(Cards_Width,Cards_Height,0,BLUE);
	pDraw->BitmapToSurface(lpddsbg_Cards[14],0,0,file,Cards_Width,Cards_Height);

	return 1;
}

int CDrawCardsEngine::DrawCard(int x,
									int y,
									int Card_m_nColor,
									int Card_Value,
									LPDIRECTDRAWSURFACE7 lpdds_Dest ) 
{

	lpdds_Dest->Blt(CRect(x,
						  y,
						  x+Cards_Width,
						  y+Cards_Height),
				    lpddsbg_Cards[Card_Value - 3],
				    CRect(Card_m_nColor*Cards_Width,
						  0,
						  Card_m_nColor*Cards_Width + Cards_Width,
						  Cards_Height),
				    DDBLT_WAIT | DDBLT_KEYSRC,
				    NULL);
	return 1;
}

int CDrawCardsEngine::MoveCard(int Dest_x,
								    int Dest_y,
									int Source_x,
									int Source_y,
									int Card_m_nColor,
									int Card_Value,
									int Speed)		//移動速度,以象素為單位;	
//									LPDIRECTDRAWSURFACE7 lpdds_Dest = lpddsback)
{
	int dx,dy,dx2,dy2,x_inc,y_inc,error;

	int x = Source_x,y = Source_y;

	dx = Dest_x - Source_x;

	dy = Dest_y - Source_y;
	
	if(dx>=0)
	{
		x_inc = 1;
	}
	else
	{
		x_inc = -1;
		dx = -dx;
	}

	if(dy >= 0)
	{
		y_inc = 1;
	}
	else
	{
		y_inc = -1;
		dy = -dy;
	}

	dx2 = dx << 1;
	dy2 = dy << 1;

	if(dx > dy)
	{
		error = dy2 - dx;
		for(int i=0;i<dx;i++)
		{
			if(i%Speed == 0)
			{
				::RedrawGame(NULL);

				DrawCard(x,y,Card_m_nColor,Card_Value);

				while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));
			}

			if(error >= 0)
			{
				error-=dx2;
				y+=y_inc;
			}
			error+=dy2;
			x+=x_inc;
		}//end for~
	}
	else
	{
		error = dx2 - dy;
		for(int i=0;i<dy;i++)
		{
			if(i%Speed == 0)
			{
				::RedrawGame(NULL);

				DrawCard(x,y,Card_m_nColor,Card_Value);

				while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));
			}

			if(error >= 0)
			{
				error-=dy2;
				x+=x_inc;
			}
			error+=dx2;
			y+=y_inc;
		}//end for~

	}
	::RedrawGame(NULL);

	DrawCard(x,y,Card_m_nColor,Card_Value);
	
	while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));

	return 1;
}
//重新整理中間(本機)玩家的牌面;
int CDrawCardsEngine::DrawCleanUp()
{
	pCenterCards->CleanUp();	//整理牌;
	for(int i=0;i<pCenterCards->m_nCardsCounter;i++)
	{
		pCardsMap->Center0[i].m_bVisual = 0;
	}
	for(int j=0;j<pCenterCards->m_nCardsCounter;j++)
	{
		pCardsMap->Center0[j].m_bVisual = 1;
		::RedrawGame();	//刷新;
	}
	return 1;
}
//發牌;
int CDrawCardsEngine::Dealing()
{
//分牌給三個玩家;	
	for(int i=0;i<17;i++)
	{
//發牌給左邊玩家;
		pLeftCards->m_cCards[i]  = g_cAllCards[i*3 + 0];
		MoveCard(Left_x0,
					pCardsMap->Left0[i].m_nY,
					Card_x,
					Card_y,
					0,
					17);
		
		pLeftCards->m_nCardsCounter++;

//發牌給中間玩家;
		pCenterCards->m_cCards[i] = g_cAllCards[i*3 + 1];
		MoveCard(pCardsMap->Center0[i].m_nX,
					Center_y0,
					Card_x,
					Card_y,
					pCenterCards->m_cCards[i].m_nColor,
					pCenterCards->m_cCards[i].m_nValue,
					100);
		pCenterCards->m_nCardsCounter++;

		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
//發牌給右邊玩家;
		pRightCards->m_cCards[i] = g_cAllCards[i*3 + 2];  
		MoveCard(Right_x0,
					pCardsMap->Right0[i].m_nY,
					Card_x,
					Card_y,
					0,
					17);
		pRightCards->m_nCardsCounter++;
	}

//測試用牌;
//	int j;
//	for(j=0;j<17;j++)
//	{
//		pCenterCards->m_cCards[j].m_nValue = 3+j/4;
//	}
/*
	pCenterCards->m_cCards[0].m_nValue = 4;
	pCenterCards->m_cCards[1].m_nValue = 4;
	pCenterCards->m_cCards[2].m_nValue = 4;
	pCenterCards->m_cCards[3].m_nValue = 4;
	pCenterCards->m_cCards[4].m_nValue = 8;
	pCenterCards->m_cCards[5].m_nValue = 8;
	pCenterCards->m_cCards[6].m_nValue = 8;
	pCenterCards->m_cCards[7].m_nValue = 8;
	pCenterCards->m_cCards[8].m_nValue = 11;
	pCenterCards->m_cCards[9].m_nValue = 11;
	pCenterCards->m_cCards[10].m_nValue = 11;
	pCenterCards->m_cCards[12].m_nValue = 11;
	pCenterCards->m_cCards[13].m_nValue = 3;
	pCenterCards->m_cCards[14].m_nValue = 3;
	pCenterCards->m_cCards[15].m_nValue = 3;
	pCenterCards->m_cCards[16].m_nValue = 3;
//	for(j=0;j<17;j++)
//	{
//		pRightCards->m_cCards[j].m_nValue = 4+j/4;
//	}
*/
/*
	pRightCards->m_cCards[0].m_nValue = 3;
	pRightCards->m_cCards[1].m_nValue = 3;
	pRightCards->m_cCards[2].m_nValue = 4;

	pRightCards->m_cCards[3].m_nValue = 4;
	pRightCards->m_cCards[4].m_nValue = 5;
	pRightCards->m_cCards[5].m_nValue = 5;
	pRightCards->m_cCards[6].m_nValue = 9;
	pRightCards->m_cCards[7].m_nValue = 9;
	pRightCards->m_cCards[8].m_nValue = 9;

	pRightCards->m_cCards[9].m_nValue = 8;
	pRightCards->m_cCards[10].m_nValue = 11;
	pRightCards->m_cCards[11].m_nValue = 11;
	pRightCards->m_cCards[12].m_nValue = 13;
	pRightCards->m_cCards[13].m_nValue = 13;
	pRightCards->m_cCards[14].m_nValue = 13;

	pRightCards->m_cCards[15].m_nValue = 16;
	pRightCards->m_cCards[15].m_nColor = 0;
	pRightCards->m_cCards[16].m_nValue = 16;
	pRightCards->m_cCards[16].m_nColor = 1;
*/
//	for(j=0;j<17;j++)
//	{
//		pLeftCards->m_cCards[j].m_nValue = 7+j/4;
//	}

//	pLeftCards->m_cCards[0].m_nValue = 3;
//	pLeftCards->m_cCards[1].m_nValue = 3;
//	pLeftCards->m_cCards[12].m_nValue = 4;
//	pLeftCards->m_cCards[13].m_nValue = 4;



//開始向上發地主牌;
//第一張地主牌;
	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
	MoveCard(Lord_Card1_x,
				Lord_Card1_y,
				Card_x,
				Card_y,
				0,
				17,
				50);

	pCardsMap->m_cLordCards[0].m_bVisual = 1;

	::RedrawGame();

//第二張地主牌;
	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
	MoveCard(Lord_Card2_x,
				Lord_Card2_y,
				Card_x,
				Card_y,
				0,
				17,
				50);

	pCardsMap->m_cLordCards[1].m_bVisual = 1;
		
	::RedrawGame();
//第三張地主牌;
	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
	MoveCard(Lord_Card3_x,
				Lord_Card3_y,
				Card_x,
				Card_y,
				0,
				17,
				50);
	pCardsMap->m_cLordCards[2].m_bVisual = 1;
	
	pCardsMap->m_cDistributeCard.m_bVisual = 0;   //讓中間發的牌不可見;
	::RedrawGame();

	DrawCleanUp();

//	Sleep(60000);
	return 1;
}
//發地主牌;
int CDrawCardsEngine::DealingLord(int bLord)
{
	pCardsMap->m_nLordCards = 2;
	::RedrawGame();
	if(bLord == 0)
	{
//發地主牌給左邊玩家;
//第一張;
		pLeftCards->m_cCards[17]  = g_cAllCards[51];  //第十八張牌;
		MoveCard(Left_x0,
				 pCardsMap->Left0[17].m_nY,
				 Lord_Card1_x,
				 Lord_Card1_y,
				 pLeftCards->m_cCards[17].m_nColor,
				 pLeftCards->m_cCards[17].m_nValue,
				 80);

		pLeftCards->m_nCardsCounter++;  //m_nCardsCounter =18

		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
//		::Redraw_Game();
//第二張;
		pLeftCards->m_cCards[18]  = g_cAllCards[52];
		MoveCard(Left_x0,
				 pCardsMap->Left0[18].m_nY,
				 Lord_Card2_x,
				 Lord_Card2_y,
				 pLeftCards->m_cCards[18].m_nColor,
				 pLeftCards->m_cCards[18].m_nValue,
				 80);
		pLeftCards->m_nCardsCounter++; //m_nCardsCounter =19
		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
//		::Redraw_Game();

//第三張;
		pLeftCards->m_cCards[19]  = g_cAllCards[53];
		MoveCard(Left_x0,
				 pCardsMap->Left0[19].m_nY,
				 Lord_Card3_x,
				 Lord_Card3_y,
				 pLeftCards->m_cCards[19].m_nColor,
				 pLeftCards->m_cCards[19].m_nValue,
				 80);
		pLeftCards->m_nCardsCounter++;  //m_nCardsCounter =20

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人av网| 亚洲九九爱视频| 久久99精品久久久久| 欧美福利视频一区| 美女视频黄免费的久久 | 99久久婷婷国产综合精品| 国产亚洲精品久| 成av人片一区二区| 亚洲小说春色综合另类电影| 欧美伊人久久大香线蕉综合69 | 亚洲在线免费播放| 7777女厕盗摄久久久| 久久成人综合网| 国产精品人成在线观看免费| 色天天综合久久久久综合片| 婷婷一区二区三区| 久久九九久久九九| 在线欧美小视频| 男男gaygay亚洲| 国产精品乱码久久久久久| 91精品福利视频| 首页国产欧美日韩丝袜| 日韩三级免费观看| 成人av手机在线观看| 日韩专区欧美专区| 欧美国产激情一区二区三区蜜月| 91久久精品一区二区| 精品一区二区三区免费毛片爱| 国产精品视频第一区| 欧美日韩国产电影| www.综合网.com| 人人爽香蕉精品| 亚洲区小说区图片区qvod| 日韩美女视频一区二区在线观看| 99国产精品国产精品久久| 美国一区二区三区在线播放| 自拍偷拍亚洲激情| 亚洲精品一区二区三区福利| 91捆绑美女网站| 国产精品一区二区果冻传媒| 亚洲小说春色综合另类电影| 亚洲成人一区在线| 国产欧美一区二区三区在线看蜜臀| 欧美综合亚洲图片综合区| 国产成人av一区| 捆绑紧缚一区二区三区视频| 亚洲中国最大av网站| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美性受极品xxxx喷水| 国产99一区视频免费| 久久精品国产网站| 亚洲在线中文字幕| 亚洲青青青在线视频| 久久久精品欧美丰满| 这里只有精品电影| 欧美无砖专区一中文字| 99久久精品免费观看| 成人午夜在线视频| 国内精品久久久久影院薰衣草| 视频一区二区三区在线| 亚洲精品美国一| 中文字幕亚洲视频| 中文字幕欧美日本乱码一线二线| 欧美精品一区二区三区一线天视频| 91久久国产最好的精华液| 9人人澡人人爽人人精品| 国产激情一区二区三区| 国产一区二区看久久| 九色porny丨国产精品| 人人精品人人爱| 日本欧洲一区二区| 免费黄网站欧美| 日韩av电影免费观看高清完整版| 亚洲第四色夜色| 亚洲香蕉伊在人在线观| 亚洲国产综合色| 亚洲亚洲精品在线观看| 亚洲国产一区二区a毛片| 亚洲一区二区四区蜜桃| 午夜精品在线看| 日韩国产欧美一区二区三区| 日韩中文字幕av电影| 日本中文在线一区| 美女久久久精品| 国产精品1024| 99久久精品免费精品国产| 色综合久久66| 中文字幕永久在线不卡| 中文字幕日韩欧美一区二区三区| 国产精品对白交换视频| 亚洲精品国产一区二区三区四区在线 | 亚洲影院理伦片| 亚洲一区电影777| 免费成人结看片| 高清在线成人网| 97aⅴ精品视频一二三区| 欧美色视频在线观看| 91麻豆精品国产91久久久更新时间 | 狠狠色综合播放一区二区| 国产99一区视频免费| 在线视频国产一区| 日韩免费一区二区三区在线播放| 久久久国际精品| 亚洲精品免费在线观看| 日韩黄色小视频| 成人小视频在线| 欧美三级中文字| 久久亚洲综合色一区二区三区 | 亚洲欧美一区二区三区孕妇| 亚洲午夜av在线| 极品少妇一区二区三区精品视频| 高清不卡一二三区| 日本丶国产丶欧美色综合| 日韩你懂的在线播放| 国产精品国产自产拍在线| 亚洲国产精品久久久久秋霞影院| 麻豆freexxxx性91精品| 不卡的电影网站| 56国语精品自产拍在线观看| 中文子幕无线码一区tr| 婷婷久久综合九色综合伊人色| 国产精品系列在线观看| 欧美中文字幕一二三区视频| 精品国产免费人成在线观看| 一区二区三区不卡在线观看| 国内外成人在线视频| 欧洲在线/亚洲| 国产精品亲子伦对白| 免费av网站大全久久| 一本大道久久a久久综合婷婷| 精品捆绑美女sm三区| 亚洲成av人**亚洲成av**| 国产91精品露脸国语对白| 8v天堂国产在线一区二区| 亚洲精品中文字幕乱码三区| 国产综合色在线| 欧美高清hd18日本| 一区二区久久久久| 成人国产精品免费网站| 久久亚洲精华国产精华液| 亚洲第一久久影院| 91女神在线视频| 国产精品伦一区| 国产精选一区二区三区| 日韩一级精品视频在线观看| 亚洲亚洲人成综合网络| 91浏览器入口在线观看| 国产精品国产三级国产aⅴ中文| 激情图片小说一区| 日韩三级电影网址| 日产欧产美韩系列久久99| 91福利在线导航| 亚洲同性gay激情无套| 成人免费观看av| 国产色综合一区| 国产精品夜夜嗨| 久久精子c满五个校花| 激情都市一区二区| 久久伊人蜜桃av一区二区| 韩国精品一区二区| 精品久久久久av影院 | 亚洲国产精品久久人人爱蜜臀 | 粉嫩嫩av羞羞动漫久久久| 久久综合九色综合97婷婷| 激情欧美一区二区| 久久综合九色欧美综合狠狠| 久久精品国产色蜜蜜麻豆| 精品国产精品一区二区夜夜嗨| 久久国产剧场电影| 精品久久久久久亚洲综合网| 九九视频精品免费| 久久亚洲二区三区| 风流少妇一区二区| 国产精品嫩草99a| 99久久精品一区| 一区二区日韩电影| 欧美日韩高清在线| 蜜乳av一区二区三区| 欧美r级在线观看| 国产精品66部| 亚洲视频1区2区| 欧美色图第一页| 老司机精品视频在线| 久久久久久综合| 一本色道久久综合亚洲91 | 91老师国产黑色丝袜在线| 一区二区三区在线高清| 欧美精品 国产精品| 久久精品理论片| 国产精品无码永久免费888| 色综合久久综合网| 婷婷开心激情综合| 久久精品水蜜桃av综合天堂| 成人高清视频在线观看| 亚洲影视在线观看| 欧美大尺度电影在线| 成人午夜视频在线观看| 成人a级免费电影| 亚洲综合男人的天堂| 日韩精品在线一区|