⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw_cards_engine.cpp

📁 斗地主VC源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

		pLeftCards->m_nCardsTable[pLeftCards->m_cCards[17].m_nValue]++;
		pLeftCards->m_nCardsTable[pLeftCards->m_cCards[18].m_nValue]++;
		pLeftCards->m_nCardsTable[pLeftCards->m_cCards[19].m_nValue]++;

		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
		::RedrawGame();
	}
	else if(bLord == 1)
	{
//发地主牌给中间玩家;
//第一张;
		pCenterCards->m_cCards[17]  = g_cAllCards[51];  //第十八张牌;
		MoveCard(pCardsMap->Center0[17].m_nX,
				 Center_y0,
				 Lord_Card1_x,
				 Lord_Card1_y,
				 pCenterCards->m_cCards[17].m_nColor,
				 pCenterCards->m_cCards[17].m_nValue,
				 80);
		pCenterCards->m_nCardsCounter++;  //m_nCardsCounter =18
		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
//		::Redraw_Game();
//第二张;

		pCenterCards->m_cCards[18]  = g_cAllCards[52];
		MoveCard(pCardsMap->Center0[18].m_nX,
				 Center_y0,
				 Lord_Card2_x,
				 Lord_Card2_y,
				 pCenterCards->m_cCards[18].m_nColor,
				 pCenterCards->m_cCards[18].m_nValue,
				 80);
		pCenterCards->m_nCardsCounter++; //m_nCardsCounter =19
		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
//		::Redraw_Game();

//第三张;
		pCenterCards->m_cCards[19]  = g_cAllCards[53];
		MoveCard(pCardsMap->Center0[19].m_nX,
				 Center_y0,
				 Lord_Card3_x,
				 Lord_Card3_y,
				 pCenterCards->m_cCards[19].m_nColor,
				 pCenterCards->m_cCards[19].m_nValue,
				 80);
		pCenterCards->m_nCardsCounter++;  //m_nCardsCounter =20
		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
		::RedrawGame();
//拿到地主牌后再整理一次;
		DrawCleanUp();
	}
	else if(bLord == 2)
	{
//发地主牌给右边玩家;
//第一张;
		pRightCards->m_cCards[17]  = g_cAllCards[51];  //第十八张牌;
		MoveCard(Right_x0,
			 	 pCardsMap->Right0[17].m_nY,
				 Lord_Card1_x,
				 Lord_Card1_y,
				 pRightCards->m_cCards[17].m_nColor,
				 pRightCards->m_cCards[17].m_nValue,
				 80);
		pRightCards->m_nCardsCounter++;  //m_nCardsCounter =18
		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
//		::Redraw_Game();
//第二张;

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

//第三张;
		pRightCards->m_cCards[19] = g_cAllCards[53];
		MoveCard(Right_x0,
				 pCardsMap->Right0[19].m_nY,
				 Lord_Card3_x,
				 Lord_Card3_y,
				 pRightCards->m_cCards[19].m_nColor,
				 pRightCards->m_cCards[19].m_nValue,
				 80);
		pRightCards->m_nCardsCounter++;  //m_nCardsCounter =20

		pRightCards->m_nCardsTable[pRightCards->m_cCards[17].m_nValue]++;
		pRightCards->m_nCardsTable[pRightCards->m_cCards[18].m_nValue]++;
		pRightCards->m_nCardsTable[pRightCards->m_cCards[19].m_nValue]++;

		PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
			SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
		
		::RedrawGame();
	}
	pLeftCards->CleanUp();
	pRightCards->CleanUp();
	::RedrawGame();
	return 1;
}
//中间(本机)玩家出牌;
int CDrawCardsEngine::CenterDiscarding()
{
	///检查出牌的合法性,调用CPlaying_Cards的方法;

	int counter = 0;

	pCenterCards->m_nDiscardingCounter = 0;

	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
					SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //

	for(int i=0;i<pCenterCards->m_nCardsCounter;i++)
	{
		if(pCardsMap->Center0[i].m_nY == Center_y0 - Card_Up)
		{
			//移动提起的牌到刚出牌区;
			pCardsMap->Center0[i].m_bVisual = 0;

			MoveCard(pCardsMap->Center2[pCenterCards->m_nDiscardingCounter].m_nX,
						pCardsMap->Center2[pCenterCards->m_nDiscardingCounter].m_nY,
						pCardsMap->Center0[i].m_nX,
						pCardsMap->Center0[i].m_nY,
					    pCenterCards->m_cCards[i].m_nColor,
						pCenterCards->m_cCards[i].m_nValue,
						80);

			pCardsMap->Center0[i].m_nY += Card_Up;
			
			pCenterCards->m_cCards[i].m_nColor = 4;   //花色为4表示已经出过牌;
			pCenterCards->m_cCards[i].m_nValue = 17;   //值为17表示已经出过牌;
			counter++;
			pCenterCards->m_nDiscardingCounter++;
		}
	}
	//将中间(本机)的牌置为可见;
	for(int j=0;j<pCenterCards->m_nCardsCounter;j++)
	{
		pCardsMap->Center0[j].m_bVisual = 1;
	}
	DrawCleanUp();
	pCenterCards->m_nCardsCounter -= counter;
//	pCenterCards->m_nDiscardingCounter = 0;

	pCardsMap->m_nUpCounter = 0;  //提起牌数为0;

	return 1;
}
//本机玩家刚出的牌从刚出牌区移动到已经出牌区;
int CDrawCardsEngine::CenterBacking()
{
	int temp_counter = pCenterCards->m_nDiscardingCounter ;

	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
					SND_RESOURCE|SND_NODEFAULT );  //
	
	for(int i=0;i<temp_counter;i++)
	{
		//移动提起的牌到刚出牌区;

		MoveCard(pCardsMap->Center1[pCenterCards->m_nDiscardedCounter].m_nX,
					pCardsMap->Center1[pCenterCards->m_nDiscardedCounter].m_nY,
					pCardsMap->Center2[i].m_nX,
					pCardsMap->Center2[i].m_nY,
					pCenterCards->m_cDiscarding[i].m_nColor,
					pCenterCards->m_cDiscarding[i].m_nValue,
					100);

		pCenterCards->m_nDiscardingCounter--;
				
		pCenterCards->m_cDiscarded[pCenterCards->m_nDiscardedCounter] = pCenterCards->m_cDiscarding[i];
		pCenterCards->m_nDiscardedCounter++;
		
	}
	::RedrawGame();
	return 1;
}
//左边玩家出牌;
int CDrawCardsEngine::LeftDiscarding()	 
{
	int temp_counter = pLeftCards->m_nDiscardingCounter;

	pLeftCards->m_nDiscardingCounter = 0;

	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
					SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //

	for(int i=0;i<temp_counter;i++)
	{
	
		//移动提起的牌到刚出牌区;
		MoveCard(pCardsMap->Left2[i].m_nX,
					pCardsMap->Left2[i].m_nY,
					pCardsMap->Left0[pLeftCards->m_nCardsCounter - 1].m_nX,
					pCardsMap->Left0[pLeftCards->m_nCardsCounter - 1].m_nY,
					pLeftCards->m_cDiscarding[i].m_nColor,
					pLeftCards->m_cDiscarding[i].m_nValue,
					100);

		pLeftCards->m_nDiscardingCounter++;
		pLeftCards->m_nCardsCounter--;
	}
//	::Redraw_Game();
	return 1;
}
//左边玩家刚出的牌从刚出牌区移动到已经出牌区;
int CDrawCardsEngine::LeftBacking()
{
	int temp_counter = pLeftCards->m_nDiscardingCounter ;

	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
					SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
	
	for(int i=0;i<temp_counter;i++)
	{

		//移动提起的牌到刚出牌区;
		
		MoveCard(pCardsMap->Left1[pLeftCards->m_nDiscardedCounter].m_nX,
					pCardsMap->Left1[pLeftCards->m_nDiscardedCounter].m_nY,
					pCardsMap->Left2[i].m_nX,
					pCardsMap->Left2[i].m_nY,
					pLeftCards->m_cDiscarding[i].m_nColor,
					pLeftCards->m_cDiscarding[i].m_nValue,
					140);

		pLeftCards->m_nDiscardingCounter--;
				
		pLeftCards->m_cDiscarded[pLeftCards->m_nDiscardedCounter] = pLeftCards->m_cDiscarding[i];
		pLeftCards->m_nDiscardedCounter++;
		
	}
	::RedrawGame();
	return 1;
}	
//右边玩家出牌;
int CDrawCardsEngine::RightDiscarding()
{
	int temp_counter = pRightCards->m_nDiscardingCounter;

	pRightCards->m_nDiscardingCounter = 0;

	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
					SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //
	for(int i=0;i<temp_counter;i++)
	{
	
		//移动提起的牌到刚出牌区;
		MoveCard(pCardsMap->Right2[i].m_nX,
					pCardsMap->Right2[i].m_nY,
					pCardsMap->Right0[pRightCards->m_nCardsCounter - 1].m_nX,
					pCardsMap->Right0[pRightCards->m_nCardsCounter - 1].m_nY,
					pRightCards->m_cDiscarding[i].m_nColor,
					pRightCards->m_cDiscarding[i].m_nValue,
					100);

		pRightCards->m_nDiscardingCounter++;
		pRightCards->m_nCardsCounter--;
	}
	return 1;
}
//右边玩家刚出的牌从刚出牌区移动到已经出牌区;
int CDrawCardsEngine::RightBacking()
{
	int temp_counter = pRightCards->m_nDiscardingCounter ;

	PlaySound(MAKEINTRESOURCE(IDR_GIVE),AfxGetResourceHandle(),
					SND_ASYNC|SND_RESOURCE|SND_NODEFAULT );  //	

	for(int i=0;i<temp_counter;i++)
	{

		//移动提起的牌到刚出牌区;
		
		MoveCard(pCardsMap->Right1[pLeftCards->m_nDiscardedCounter].m_nX,
					pCardsMap->Right1[pLeftCards->m_nDiscardedCounter].m_nY,
					pCardsMap->Right2[i].m_nX,
					pCardsMap->Right2[i].m_nY,
					pRightCards->m_cDiscarding[i].m_nColor,
					pRightCards->m_cDiscarding[i].m_nValue,
					140);

		pRightCards->m_nDiscardingCounter--;
				
		pRightCards->m_cDiscarded[pRightCards->m_nDiscardedCounter] = pRightCards->m_cDiscarding[i];
		pRightCards->m_nDiscardedCounter++;
		
	}
	::RedrawGame();
	return 1;
}
//重画;
void CDrawCardsEngine::Redraw(LPDIRECTDRAWSURFACE7  pSurface)
{
//左边未出的牌;
	int i;
	if( m_bVisual )
	{
		for(i=0;i<pLeftCards->m_nCardsCounter;i++)
		{
			if(pCardsMap->Left0[i].m_bVisual == 1)
			{
				DrawCard(pCardsMap->Left0[i].m_nX,
						 pCardsMap->Left0[i].m_nY,
						 pLeftCards->m_cCards[i].m_nColor,	
						 pLeftCards->m_cCards[i].m_nValue);	
			}
		}
	}
	else//
	{
		for(i=0;i<pLeftCards->m_nCardsCounter;i++)
		{
			if(pCardsMap->Left0[i].m_bVisual == 1)
			{
				DrawCard(pCardsMap->Left0[i].m_nX,
						 pCardsMap->Left0[i].m_nY,
						 0,	
						 17);	
			}
		}
	}
//左边已经出的牌;
	for(i=0;i<pLeftCards->m_nDiscardedCounter;i++)
	{
		if(pCardsMap->Left1[i].m_bVisual == 1)
		{
			DrawCard(pCardsMap->Left1[i].m_nX,
					 pCardsMap->Left1[i].m_nY,
					 pLeftCards->m_cDiscarded[i].m_nColor,
					 pLeftCards->m_cDiscarded[i].m_nValue);
		}
	}
//左边刚出的牌;
	for(i=0;i<pLeftCards->m_nDiscardingCounter;i++)
	{
		if(pCardsMap->Left2[i].m_bVisual == 1)
		{
			DrawCard(pCardsMap->Left2[i].m_nX,
					 pCardsMap->Left2[i].m_nY,
					 pLeftCards->m_cDiscarding[i].m_nColor,
					 pLeftCards->m_cDiscarding[i].m_nValue);
		}
	}
//中间未出的牌;
	for(i=0;i<pCenterCards->m_nCardsCounter;i++)
	{
		if(pCardsMap->Center0[i].m_bVisual == 1)
		{
			DrawCard(pCardsMap->Center0[i].m_nX,
					pCardsMap->Center0[i].m_nY,
					pCenterCards->m_cCards[i].m_nColor,
					pCenterCards->m_cCards[i].m_nValue);
		}
	}
//中间已经出的牌;
	for(i=0;i<pCenterCards->m_nDiscardedCounter;i++)
	{
		if(pCardsMap->Center1[i].m_bVisual == 1)
		{
			DrawCard(pCardsMap->Center1[i].m_nX,
					 pCardsMap->Center1[i].m_nY,
					 pCenterCards->m_cDiscarded[i].m_nColor,
					 pCenterCards->m_cDiscarded[i].m_nValue);
		}
	}
//中间刚出的牌;
	for(i=0;i<pCenterCards->m_nDiscardingCounter;i++)
	{
		if(pCardsMap->Center2[i].m_bVisual == 1)
		{
			DrawCard(pCardsMap->Center2[i].m_nX,
					 pCardsMap->Center2[i].m_nY,
					 pCenterCards->m_cDiscarding[i].m_nColor,
					 pCenterCards->m_cDiscarding[i].m_nValue);
		}
	}
//右边未出的牌;
	if( m_bVisual )
	{
		for(i=0;i<pRightCards->m_nCardsCounter;i++)
		{
			if(pCardsMap->Right0[i].m_bVisual == 1)
			{
				DrawCard(pCardsMap->Right0[i].m_nX,
						 pCardsMap->Right0[i].m_nY,
						 pRightCards->m_cCards[i].m_nColor,	
						 pRightCards->m_cCards[i].m_nValue);
			}
		}
	}
	else
	{
		for(i=0;i<pRightCards->m_nCardsCounter;i++)
		{
			if(pCardsMap->Right0[i].m_bVisual == 1)
			{
				DrawCard(pCardsMap->Right0[i].m_nX,
						 pCardsMap->Right0[i].m_nY,
						 0,
						 17);
			}
		}
	}
//右边已经出的牌;
	for(i=0;i<pRightCards->m_nDiscardedCounter;i++)
	{
		if(pCardsMap->Right1[i].m_bVisual == 1)
		{
			DrawCard(pCardsMap->Right1[i].m_nX,
					 pCardsMap->Right1[i].m_nY,
					 pRightCards->m_cDiscarded[i].m_nColor,
					 pRightCards->m_cDiscarded[i].m_nValue);
		}
	}
//右边刚出的牌;
	for(i=0;i<pRightCards->m_nDiscardingCounter;i++)
	{
		if(pCardsMap->Right2[i].m_bVisual == 1)
		{
			DrawCard(pCardsMap->Right2[i].m_nX,
					 pCardsMap->Right2[i].m_nY,
					 pRightCards->m_cDiscarding[i].m_nColor,
					 pRightCards->m_cDiscarding[i].m_nValue);
		}
	}
//正在发的牌;

	if(pCardsMap->m_cDistributeCard.m_bVisual == 1)
	{
		DrawCard(pCardsMap->m_cDistributeCard.m_nX,
				 pCardsMap->m_cDistributeCard.m_nY,
				 0,
				 17);
	}
//陈列的三张地主牌;
	if(pCardsMap->m_nLordCards == 1)
	{
		for(i=0;i<3;i++)
		{
			if(pCardsMap->m_cLordCards[i].m_bVisual == 1)
			{
				DrawCard(pCardsMap->m_cLordCards[i].m_nX,
						 pCardsMap->m_cLordCards[i].m_nY,
					     0,
						 17);
			}
		}//end for
	}
	else if(pCardsMap->m_nLordCards == 2)
	{
		for(i=0;i<3;i++)
		{
			if(pCardsMap->m_cLordCards[i].m_bVisual == 1)
			{
				DrawCard(pCardsMap->m_cLordCards[i].m_nX,
						 pCardsMap->m_cLordCards[i].m_nY,
						 ::g_cAllCards[51+i].m_nColor,
						 ::g_cAllCards[51+i].m_nValue);
			}
		}//end for
	}
}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -