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

📄 playing_cards.cpp

📁 一个斗地主的小程序。。。。。。。。。。多多指教
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	{
		m_cDiscardingType.m_nTypeNum   = 4;
		m_cDiscardingType.m_nTypeValue = 16;

		m_nDiscardingCounter = 2;
		m_cDiscarding[0]     = m_cCards[3];
		m_cDiscarding[1]     = m_cCards[4];

		m_cCards[3] = m_cBLANK_CARD;
		m_cCards[4] = m_cBLANK_CARD;

		m_nCardsTable[16] = 0;
		return 1;
	}
	//双王加四张
	if( (m_nCardsTable[16] == 2) && ((m_nCardsCounter == 6) && (counter_4 == 1)) )
	{
		m_cDiscardingType.m_nTypeNum   = 4;
		m_cDiscardingType.m_nTypeValue = 16;

		m_nDiscardingCounter = 2;
		m_cDiscarding[0]     = m_cCards[4];
		m_cDiscarding[1]     = m_cCards[5];

		m_cCards[4] = m_cBLANK_CARD;
		m_cCards[5] = m_cBLANK_CARD;

		m_nCardsTable[16] = 0;
		return 1;
	}

	//双王加31
	if( (m_nCardsTable[16] == 2) && 
		((m_nCardsCounter == 6) && (counter_3 == 1)) )
	{
		m_cDiscardingType.m_nTypeNum   = 4;
		m_cDiscardingType.m_nTypeValue = 16;

		m_nDiscardingCounter = 2;
		m_cDiscarding[0]     = m_cCards[4];
		m_cDiscarding[1]     = m_cCards[5];

		m_cCards[4] = m_cBLANK_CARD;
		m_cCards[5] = m_cBLANK_CARD;

		m_nCardsTable[16] = 0;
		return 1;
	}

	//双王加32
	if( (m_nCardsTable[16] == 2) && 
		((m_nCardsCounter == 7) && (counter_3 == 1 && counter_2 == 1)) )
	{
		m_cDiscardingType.m_nTypeNum   = 4;
		m_cDiscardingType.m_nTypeValue = 16;

		m_nDiscardingCounter = 2;
		m_cDiscarding[0]     = m_cCards[5];
		m_cDiscarding[1]     = m_cCards[6];

		m_cCards[5] = m_cBLANK_CARD;
		m_cCards[6] = m_cBLANK_CARD;

		m_nCardsTable[16] = 0;
		return 1;
	}

	//双王加42
	if( (m_nCardsTable[16] == 2) && 
		((m_nCardsCounter == 8) && (counter_4 == 1 && counter_1 == 2)) )
	{
		m_cDiscardingType.m_nTypeNum   = 4;
		m_cDiscardingType.m_nTypeValue = 16;

		m_nDiscardingCounter = 2;
		m_cDiscarding[0]     = m_cCards[6];
		m_cDiscarding[1]     = m_cCards[7];

		m_cCards[6] = m_cBLANK_CARD;
		m_cCards[7] = m_cBLANK_CARD;

		m_nCardsTable[16] = 0;
		return 1;
	}

	return 0;
}
//寻找单牌出;
int CPlayingCards::Search1(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}

	int i,j;
	int counter_0 = 0;
	int counter_1 = 0;
	int counter_2 = 0;
	int counter_3 = 0;
	int counter_4 = 0;

	//扫描未出牌表;
	for(i=3;i<15;i++)
	{
		switch(m_nCardsTable[i])
		{
		case 0:
			counter_0++;
			break;
		case 1:
			counter_1++;
			break;
		case 2:
			counter_2++;
			break;
		case 3:
			counter_3++;
			break;
		case 4:
			counter_4++;
			break;
		}
	}
	//补丁:
	if( Cards_Type.m_nTypeValue == 16 && counter_1 > 3 )
	{
		return 0;
	}

	if( m_nCardsTable[16] == 1 
		&& m_cCards[m_nCardsCounter - 1].m_nColor == 1 
		&& Cards_Type.m_nTypeValue == 16 )  //大王,可以出;
	{
		m_cDiscardingType.m_nTypeNum   = 1;
		m_cDiscardingType.m_nTypeValue = 16;

		m_nDiscardingCounter++;
		m_cDiscarding[0] = m_cCards[m_nCardsCounter - 1];
		
		m_cCards[m_nCardsCounter - 1] = m_cBLANK_CARD;

		m_nCardsTable[16] = 0;

		return 1;
	}

	//
	for(i=Cards_Type.m_nTypeValue+1;i<=16;i++)
	{
		if( m_nCardsTable[i] == 1)
		{
			m_cDiscardingType.m_nTypeNum   = 1;
			m_cDiscardingType.m_nTypeValue = i;

			for(j=0;j<m_nCardsCounter;j++)
			{
				if( m_cCards[j].m_nValue == i )
				{
					m_nDiscardingCounter++;
					m_cDiscarding[0] = m_cCards[j];

					m_cCards[j] = m_cBLANK_CARD;

					m_nCardsTable[i] = 0;
					return 1;
				}
			}//end for~~
		}//end if~
	} //end for~
	//撤两张的;
	for(i=16;i>=Cards_Type.m_nTypeValue+1;i--)
	{
		if( m_nCardsTable[i] == 2 )
		{
			m_cDiscardingType.m_nTypeNum   = 1;
			m_cDiscardingType.m_nTypeValue = i;

			for(j=0;j<m_nCardsCounter;j++)
			{
				if( m_cCards[j].m_nValue == i )
				{
					m_nDiscardingCounter++;
					m_cDiscarding[0] = m_cCards[j];

					m_cCards[j] = m_cBLANK_CARD;

					m_nCardsTable[i]--;  //应该等于1;
					return 1;
				}
			}//end for~~
		}//end if~
	} //end for~
	//撤三张的;
	for(i=15;i>=Cards_Type.m_nTypeValue+1;i--)
	{
		if( m_nCardsTable[i] == 3 )
		{
			m_cDiscardingType.m_nTypeNum   = 1;
			m_cDiscardingType.m_nTypeValue = i;

			for(j=0;j<m_nCardsCounter;j++)
			{
				if( m_cCards[j].m_nValue == i )
				{
					m_nDiscardingCounter++;
					m_cDiscarding[0] = m_cCards[j];

					m_cCards[j] = m_cBLANK_CARD;

					m_nCardsTable[i]--;  //应该等于1;
					return 1;
				}
			}//end for~~
		}//end if~
	} //end for~

	return 0;
}
//寻找对牌出;
int CPlayingCards::Search2(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}

	int i,j;
	for(i=Cards_Type.m_nTypeValue+1;i<16;i++)
	{
		if( m_nCardsTable[i] == 2 )
		{
			m_cDiscardingType.m_nTypeNum   = 2;
			m_cDiscardingType.m_nTypeValue = i;

			for(j=0;j<m_nCardsCounter;j++)
			{
				if( m_cCards[j].m_nValue == i )
				{
					m_nDiscardingCounter += 2;
					m_cDiscarding[0] = m_cCards[j];
					m_cDiscarding[1] = m_cCards[j + 1];
		
					m_cCards[j] = m_cBLANK_CARD;
					m_cCards[j + 1] = m_cBLANK_CARD;

					m_nCardsTable[i] = 0;
					return 1;
				}
			}//end for~~
		}//end if~
	} //end for~
	//撤三张的;
if( Cards_Type.m_nTypeValue >= 12 )   //如果是比较大的牌,才考虑拆牌,而且2不会拆;
{ 
	for(i=14;i>=Cards_Type.m_nTypeValue+1;i--)
	{
		if( m_nCardsTable[i] == 3 )
		{
			m_cDiscardingType.m_nTypeNum   = 2;
			m_cDiscardingType.m_nTypeValue = i;

			for(j=0;j<m_nCardsCounter;j++)
			{
				if( m_cCards[j].m_nValue == i )
				{
					m_nDiscardingCounter += 2;
					m_cDiscarding[0] = m_cCards[j];
					m_cDiscarding[1] = m_cCards[j + 1];

					m_cCards[j] = m_cBLANK_CARD;
					m_cCards[j + 1] = m_cBLANK_CARD;

					m_nCardsTable[i] -= 2;  //应该等于1;
					return 1;
				}
			}//end for~~
		}//end if~
	} //end for~
}
	return 0;
}
//寻找三牌出;
int CPlayingCards::Search3(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}
	//三张;
	int i,j;
	for(i=Cards_Type.m_nTypeValue+1;i<16;i++)
	{
		if( m_nCardsTable[i] == 3)
		{
			m_cDiscardingType.m_nTypeNum   = 3;
			m_cDiscardingType.m_nTypeValue = i;

			for(j=0;j<m_nCardsCounter;j++)
			{
				if( m_cCards[j].m_nValue == i )
				{
					m_nDiscardingCounter += 3;
					m_cDiscarding[0] = m_cCards[j];
					m_cDiscarding[1] = m_cCards[j + 1];
					m_cDiscarding[2] = m_cCards[j + 2];
		
					m_cCards[j + 0] = m_cBLANK_CARD;
					m_cCards[j + 1] = m_cBLANK_CARD;
					m_cCards[j + 2] = m_cBLANK_CARD;

					m_nCardsTable[i] = 0;
					return 1;
				}
			}//end for~~
		}//end if~
	} //end for~
	return 0;
}
//寻找炸弹出;
int CPlayingCards::SearchBomb(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}
	//四张;
	//注意加分!!!;
	int i,j;
	for(i=Cards_Type.m_nTypeValue+1;i<16;i++)
	{
		if( m_nCardsTable[i] == 4 )
		{
			m_cDiscardingType.m_nTypeNum   = 4;
			m_cDiscardingType.m_nTypeValue = i;

			for(j=0;j<m_nCardsCounter;j++)
			{
				if( m_cCards[j].m_nValue == i )
				{
					m_nDiscardingCounter += 4;
					m_cDiscarding[0] = m_cCards[j];
					m_cDiscarding[1] = m_cCards[j + 1];
					m_cDiscarding[2] = m_cCards[j + 2];
					m_cDiscarding[3] = m_cCards[j + 3];
		
					m_cCards[j + 0] = m_cBLANK_CARD;
					m_cCards[j + 1] = m_cBLANK_CARD;
					m_cCards[j + 2] = m_cBLANK_CARD;
					m_cCards[j + 3] = m_cBLANK_CARD;
	
					m_nCardsTable[i] = 0;
					return 1;
				}
			}//end for~~
		}//end if~
	} //end for~
	return 0;
}
//寻找三带2出;
int CPlayingCards::Search31(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}
	//三张;
	int i,j,k;
	//补丁
	int nMax = 15;
	if( m_nCardsCounter <= 5 )
	{
		nMax = 16;
	}

	for(i=Cards_Type.m_nTypeValue+1;i<nMax;i++)   //三张2一般不出;
	{
		if( m_nCardsTable[i] == 3 )
		{
			for(j=3;j<=15;j++)
			{
				if( m_nCardsTable[j] == 1 )
				{
					m_cDiscardingType.m_nTypeNum   = 31;
					m_cDiscardingType.m_nTypeValue = i;
					m_nDiscardingCounter = 4;
					//三张的;
					for(k=0;k<m_nCardsCounter;k++)
					{
						if( m_cCards[k].m_nValue == i )
						{
							m_cDiscarding[0] = m_cCards[k];
							m_cDiscarding[1] = m_cCards[k + 1];
							m_cDiscarding[2] = m_cCards[k + 2];
		
							m_cCards[k + 0] = m_cBLANK_CARD;
							m_cCards[k + 1] = m_cBLANK_CARD;
							m_cCards[k + 2] = m_cBLANK_CARD;

							m_nCardsTable[i] = 0;
						}
					}//end for~~
					//单张的;
					for(k=0;k<m_nCardsCounter;k++)
					{
						if( m_cCards[k].m_nValue == j )
						{
							m_cDiscarding[3] = m_cCards[k];

							m_cCards[k] = m_cBLANK_CARD;

							m_nCardsTable[j] = 0;
							return 1;
						}
					}//end for~~

				}//end if~
			} //end for~
			return 0;
		}//end if~
	} //end for~
	return 0;
}
//寻找三带2出; 
int CPlayingCards::Search32(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}
	//三张;
	int i,j,k;

	int nMax = 15;
	if( m_nCardsCounter <= 6 )
	{
		nMax = 16;
	}

	for(i=Cards_Type.m_nTypeValue+1;i<nMax;i++)   //三张2一般不出;
	{
		if( m_nCardsTable[i] == 3 )
		{
			for(j=3; j<=14; j++)
			{
				if( m_nCardsTable[j] == 2 )
				{
					m_cDiscardingType.m_nTypeNum   = 32;
					m_cDiscardingType.m_nTypeValue = i;
					m_nDiscardingCounter = 5;
					//三张的;
					for(k=0;k<m_nCardsCounter;k++)
					{
						if( m_cCards[k].m_nValue == i )
						{
							m_cDiscarding[0] = m_cCards[k];
							m_cDiscarding[1] = m_cCards[k + 1];
							m_cDiscarding[2] = m_cCards[k + 2];
		
							m_cCards[k + 0] = m_cBLANK_CARD;
							m_cCards[k + 1] = m_cBLANK_CARD;
							m_cCards[k + 2] = m_cBLANK_CARD;

							m_nCardsTable[i] = 0;
						}
					}//end for~~
					//单张的;
					for(k=0; k<m_nCardsCounter; k++)
					{
						if( m_cCards[k].m_nValue == j )
						{
							m_cDiscarding[3] = m_cCards[k];
							m_cDiscarding[4] = m_cCards[k + 1];

							m_cCards[k + 0] = m_cBLANK_CARD;
							m_cCards[k + 1] = m_cBLANK_CARD;

							m_nCardsTable[j] = 0;
							return 1;
						}
					}//end for~~
				}//end if~
			} //end for~
			return 0;
		}//end if~
	} //end for~
	return 0;
}
//寻找四带2单;
int CPlayingCards::Search411(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}
	//四张;
	int i,j,k,l;

	for(i=Cards_Type.m_nTypeValue+1;i<16;i++)
	{
		if( m_nCardsTable[i] == 4)
		{
			for(j=3; j<=14; j++)
			{
				if( m_nCardsTable[j] == 1 )
				{
					//扫描第二张单牌;
					for(k=j+1;k<=14;k++)
					{
						if( m_nCardsTable[k] == 1 )
						{
							m_cDiscardingType.m_nTypeNum   = 411;
							m_cDiscardingType.m_nTypeValue = i;
							m_nDiscardingCounter = 6;

							for(l=0;l<m_nCardsCounter;l++)
							{
								if( m_cCards[l].m_nValue == i )
								{
									m_cDiscarding[0] = m_cCards[l];
									m_cDiscarding[1] = m_cCards[l + 1];
									m_cDiscarding[2] = m_cCards[l + 2];
									m_cDiscarding[3] = m_cCards[l + 3];
		
									m_cCards[l + 0] = m_cBLANK_CARD;
									m_cCards[l + 1] = m_cBLANK_CARD;
									m_cCards[l + 2] = m_cBLANK_CARD;
									m_cCards[l + 3] = m_cBLANK_CARD;

									m_nCardsTable[i] = 0;
								}
							}//end for~~

							for(l=0;l<m_nCardsCounter;l++)
							{
								if( m_cCards[l].m_nValue == j )
								{	
									m_cDiscarding[4] = m_cCards[l];
		
									m_cCards[l] = m_cBLANK_CARD;

									m_nCardsTable[j] = 0;
								}
							}//end for~~

							for(l=0;l<m_nCardsCounter;l++)
							{
								if( m_cCards[l].m_nValue == k )
								{
									m_cDiscarding[5] = m_cCards[l];

									m_cCards[l] = m_cBLANK_CARD;

									m_nCardsTable[k] = 0;
								}
							}
							return 1;
						}//end if~
					} //end for~
					return 0;
				}//end if~
			} //end for~
			return 0;
		}
	}
	return 0;
}
//寻找四带两对;
int CPlayingCards::Search422(CCardsType& Cards_Type)
{
	if( AI_Patch1() )
	{
		return 1;
	}
	//四张;
	int i,j,k,l;

	for(i=Cards_Type.m_nTypeValue+1;i<16;i++)
	{
		if( m_nCardsTable[i] == 4 )
		{
			for(j=3;j<=14;j++)
			{
				if( m_nCardsTable[j] == 2 )
				{
					//扫描第二张单牌;
					for(k=j+1;k<=14;k++)
					{
						if( m_nCardsTable[k] == 2 )
						{
							m_cDiscardingType.m_nTypeNum   = 422;
							m_cDiscardingType.m_nTypeValue = i;
							m_nDiscardingCounter = 8;

							for(l=0;l<m_nCardsCounter;l++)
							{
								if( m_cCards[l].m_nValue == i )
								{
									m_cDiscarding[0] = m_cCards[l];
									m_cDiscarding[1] = m_cCards[l + 1];
									m_cDiscarding[2] = m_cCards[l + 2];
									m_cDiscarding[3] = m_cCards[l + 3];
		
									m_cCards[l + 0] = m_cBLANK_CARD;
									m_cCards[l + 1] = m_cBLANK_CARD;
									m_cCards[l + 2] = m_cBLANK_CARD;
									m_cCards[l + 3] = m_cBLANK_CARD;

									m_nCardsTable[i] = 0;
								}
							}//end for~~

							for(l=0;l<m_nCardsCounter;l++)
							{
								if( m_cCards[l].m_nValue == j )
								{	
									m_cDiscarding[4] = m_cCards[l];
									m_cDiscarding[5] = m_cCards[l + 1];
		
									m_cCards[l + 0] = m_cBLANK_CARD;
									m_cCards[l + 1] = m_cBLANK_CARD;

									m_nCardsTable[j] = 0;
								}
							}//end for~~

							for(l=0;l<m_nCardsCounter;l++)
							{
								if( m_cCards[l].m_nValue == k )
								{
									m_cDiscarding[6] = m_cCards[l];
									m_cDiscarding[7] = m_cCards[l + 1];

									m_cCards[l + 0] = m_cBLANK_CARD;
									m_cCards[l + 1] = m_cBLANK_CARD;

⌨️ 快捷键说明

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