📄 playing_cards.cpp
字号:
m_nCardsTable[k] = 0;
}
}
return 1;
}//end if~
} //end for~
return 0;
}//end if~
} //end for~
return 0;
}
}
return 0;
}
//寻找三顺带两单;
int CPlayingCards::Search3311(CCardsType& Cards_Type)
{
if( AI_Patch1() )
{
return 1;
}
//三张;
int i,j,k,l;
for(i=Cards_Type.m_nTypeValue+1;i<14;i++) //2一般不能出在顺子中;
{
if( m_nCardsTable[i] == 3 && m_nCardsTable[i + 1] == 3 )
{
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 = 3311;
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_cDiscarding[4] = m_cCards[l + 4];
m_cDiscarding[5] = m_cCards[l + 5];
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_cCards[l + 4] = m_cBLANK_CARD;
m_cCards[l + 5] = m_cBLANK_CARD;
m_nCardsTable[i] = 0;
m_nCardsTable[i + 1] = 0;
}
}//end for~~
for(l=0;l<m_nCardsCounter;l++)
{
if( m_cCards[l].m_nValue == j )
{
m_cDiscarding[6] = m_cCards[l];
m_cCards[l + 0] = 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[7] = m_cCards[l];
m_cCards[l + 0] = m_cBLANK_CARD;
m_nCardsTable[k] = 0;
}
}
return 1;
}//end if~
} //end for~
return 0;
}//end if~
}
return 0;
}
}
return 0;
}
//寻找三顺带两对;
int CPlayingCards::Search3322(CCardsType& Cards_Type)
{
if( AI_Patch1() )
{
return 1;
}
//三张;
int i,j,k,l;
for(i=Cards_Type.m_nTypeValue+1;i<14;i++) //2一般不能出在顺子中;
{
if( m_nCardsTable[i] == 3 && m_nCardsTable[i + 1] == 3 )
{
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 = 3322;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 10;
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_cDiscarding[4] = m_cCards[l + 4];
m_cDiscarding[5] = m_cCards[l + 5];
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_cCards[l + 4] = m_cBLANK_CARD;
m_cCards[l + 5] = m_cBLANK_CARD;
m_nCardsTable[i] = 0;
m_nCardsTable[i + 1] = 0;
}
}//end for~~
for(l=0;l<m_nCardsCounter;l++)
{
if( m_cCards[l].m_nValue == j )
{
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;
m_nCardsTable[j] = 0;
}
}//end for~~
for(l=0;l<m_nCardsCounter;l++)
{
if( m_cCards[l].m_nValue == k )
{
m_cDiscarding[8] = m_cCards[l];
m_cDiscarding[9] = m_cCards[l + 1];
m_cCards[l + 0] = m_cBLANK_CARD;
m_cCards[l + 1] = m_cBLANK_CARD;
m_nCardsTable[k] = 0;
}
}
return 1;
}//end if~
} //end for~
return 0;
}//end if~
}
return 0;
}
}
return 0;
}
//寻找双顺;
int CPlayingCards::Search222(CCardsType& Cards_Type)
{
if( AI_Patch1() )
{
return 1;
}
int i,j;
//如果大于J,Q,K,则不要;
if( Cards_Type.m_nTypeValue > 11 )
{
return 0;
}
for(i=Cards_Type.m_nTypeValue+1;i<=12;i++)
{
if( m_nCardsTable[i] == 2 )
{
if( m_nCardsTable[i + 1] == 2 && m_nCardsTable[i + 2] == 2 )
{
for(j=0;j<m_nCardsCounter;j++)
{
if( m_cCards[j].m_nValue == i )
{
m_cDiscardingType.m_nTypeNum = 222;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 6;
for(int k=0;k<6;k++)
{
m_cDiscarding[k] = m_cCards[j + k];
m_cCards[j + k] = m_cBLANK_CARD;
}
m_nCardsTable[i] = 0;
m_nCardsTable[i + 1] = 0;
m_nCardsTable[i + 2] = 0;
return 1;
}
}//end for~~
}
}//end if;
}
return 0;
}
//寻找双顺;
int CPlayingCards::Search2222(CCardsType& Cards_Type)
{
if( AI_Patch1() )
{
return 1;
}
int i,j;
//如果大于J,Q,K,则不要;
if( Cards_Type.m_nTypeValue > 10 )
{
return 0;
}
for(i=Cards_Type.m_nTypeValue+1;i<=11;i++)
{
if( m_nCardsTable[i] == 2 )
{
if( m_nCardsTable[i + 1] == 2 &&
m_nCardsTable[i + 2] == 2 &&
m_nCardsTable[i + 3] == 2 )
{
for(j=0;j<m_nCardsCounter;j++)
{
if( m_cCards[j].m_nValue == i )
{
m_cDiscardingType.m_nTypeNum = 2222;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 8;
for(int k=0;k<8;k++)
{
m_cDiscarding[k] = m_cCards[j + k];
m_cCards[j + k] = m_cBLANK_CARD;
}
m_nCardsTable[i] = 0;
m_nCardsTable[i + 1] = 0;
m_nCardsTable[i + 2] = 0;
m_nCardsTable[i + 3] = 0;
return 1;
}
}//end for~~
}
}//end if;
}
return 0;
}
//寻找5单顺出;
int CPlayingCards::Search5(CCardsType& Cards_Type)
{
if( AI_Patch1() )
{
return 1;
}
int i,j,k,l;
//连续单牌的个数;
int counter_1;
int counter_2;
int counter_3;
//如果是10,j,q,k,A,则考虑对手中牌的个数,如果太少就考虑寻找炸弹;
if( Cards_Type.m_nTypeValue >= 10 )
{
return 0;
}
//第一遍扫描,看是否有全单的单顺;
for(i=Cards_Type.m_nTypeValue+1;i<=10;i++)
{
counter_1 = 0;
for(j=i;j<i+5;j++)
{
if( m_nCardsTable[j] != 1 )
{
break;
}
else
{
counter_1++;
}
}
//看连续牌数是否等于5;
if( counter_1 == 5 )
{
//其他相关判断;
//出牌处理;
m_cDiscardingType.m_nTypeNum = 5;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 5;
for(k=0;k<m_nCardsCounter;k++)
{
if( m_cCards[k].m_nValue == i )
{
for(l=0;l<5;l++)
{
m_cDiscarding[l] = m_cCards[k + l];
m_cCards[k + l] = m_cBLANK_CARD;
m_nCardsTable[i + l] = 0;
}
}
}
return 1; //搞定,返回;
}
//第二遍扫描;
counter_1 = 0;
counter_2 = 0;
counter_3 = 0;
for(j=i;j<i+5;j++)
{
if( m_nCardsTable[j] == 1 )
{
counter_1++;
}
else if( m_nCardsTable[j] == 2 )
{
counter_2++;
}
else if( m_nCardsTable[j] == 3 )
{
counter_3++;
}
else
{
break; //如果没有牌或者是四张(炸弹),则不考虑;
}
}
//看牌是否等于5;
if( counter_1 == 4 && counter_2 + counter_3 == 1 )
{
//其他相关判断;
//出牌处理;
m_cDiscardingType.m_nTypeNum = 5;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 5;
for(k=0;k<m_nCardsCounter;k++)
{
if( m_cCards[k].m_nValue == i )
{
for(l=0;l<5;l++)
{
if( m_cCards[k + l].m_nValue == m_cCards[k + l + 1].m_nValue )
{
k++;
if( m_cCards[k + l].m_nValue == m_cCards[k + l + 1].m_nValue )
{
k++;
}
}
m_cDiscarding[l] = m_cCards[k + l];
m_cCards[k + l] = m_cBLANK_CARD;
m_nCardsTable[i + l]--;
}
}
}
return 1; //搞定,返回;
}
}//end for~;
return 0;
}
//寻找6单顺出;
int CPlayingCards::Search6(CCardsType& Cards_Type)
{
if( AI_Patch1() )
{
return 1;
}
int i,j,k,l;
//连续单牌的个数;
int counter_1;
int counter_2;
int counter_3;
//如果是10,j,q,k,A,则考虑对手中牌的个数,如果太少就考虑寻找炸弹;
if( Cards_Type.m_nTypeValue >= 9 )
{
return 0;
}
for(i=Cards_Type.m_nTypeValue+1;i<=9;i++)
{
//第一遍扫描,看是否有全单的单顺;
counter_1 = 0;
for(j=i;j<i+6;j++)
{
if( m_nCardsTable[j] != 1 )
{
break;
}
else
{
counter_1++;
}
}
//看连续牌数是否等于6;
if( counter_1 == 6 )
{
//其他相关判断;
//出牌处理;
m_cDiscardingType.m_nTypeNum = 6;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 6;
for(k=0;k<m_nCardsCounter;k++)
{
if( m_cCards[k].m_nValue == i )
{
for(l=0;l<6;l++)
{
m_cDiscarding[l] = m_cCards[k + l];
m_cCards[k + l] = m_cBLANK_CARD;
m_nCardsTable[i + l] = 0;
}
}
}
return 1; //搞定,返回;
}
//第二遍扫描;
counter_1 = 0;
counter_2 = 0;
counter_3 = 0;
for(j=i;j<i+6;j++)
{
if( m_nCardsTable[j] == 1 )
{
counter_1++;
}
else if( m_nCardsTable[j] == 2 )
{
counter_2++;
}
else if( m_nCardsTable[j] == 3 )
{
counter_3++;
}
else
{
break; //如果没有牌或者是四张(炸弹),则不考虑;
}
}
//看牌是否等于5;
if( counter_1 == 4 && counter_2 + counter_3 == 2 ||
counter_1 == 5 && counter_2 + counter_3 == 1 )
{
//其他相关判断;
//出牌处理;
m_cDiscardingType.m_nTypeNum = 6;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 6;
for(k=0;k<m_nCardsCounter;k++)
{
if( m_cCards[k].m_nValue == i )
{
for(l=0;l<6;l++)
{
if( m_cCards[k + l].m_nValue == m_cCards[k + l + 1].m_nValue )
{
k++;
if( m_cCards[k + l].m_nValue == m_cCards[k + l + 1].m_nValue )
{
k++;
}
}
m_cDiscarding[l] = m_cCards[k + l];
m_cCards[k + l] = m_cBLANK_CARD;
m_nCardsTable[i + l]--;
}
}
}
return 1; //搞定,返回;
}
}//end for~;
return 0;
}
//寻找7单顺出;
int CPlayingCards::Search7(CCardsType& Cards_Type)
{
if( AI_Patch1() )
{
return 1;
}
int i,j,k,l;
//连续单牌的个数;
int counter_1;
int counter_2;
int counter_3;
//如果是10,j,q,k,A,则考虑对手中牌的个数,如果太少就考虑寻找炸弹;
if( Cards_Type.m_nTypeValue >= 8 )
{
return 0;
}
for(i=Cards_Type.m_nTypeValue+1;i<=8;i++)
{
//第一遍扫描,看是否有全单的单顺;
counter_1 = 0;
for(j=i;j<i+7;j++)
{
if( m_nCardsTable[j] != 1 )
{
break;
}
else
{
counter_1++;
}
}
//看连续牌数是否等于7;
if( counter_1 == 7 )
{
//其他相关判断;
//出牌处理;
m_cDiscardingType.m_nTypeNum = 7;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 7;
for(k=0;k<m_nCardsCounter;k++)
{
if( m_cCards[k].m_nValue == i )
{
for(l=0;l<7;l++)
{
m_cDiscarding[l] = m_cCards[k + l];
m_cCards[k + l] = m_cBLANK_CARD;
m_nCardsTable[i + l] = 0;
}
}
}
return 1; //搞定,返回;
}
//第二遍扫描;
counter_1 = 0;
counter_2 = 0;
counter_3 = 0;
for(j=i;j<i+7;j++)
{
if( m_nCardsTable[j] == 1 )
{
counter_1++;
}
else if( m_nCardsTable[j] == 2 )
{
counter_2++;
}
else if( m_nCardsTable[j] == 3 )
{
counter_3++;
}
else
{
break; //如果没有牌或者是四张(炸弹),则不考虑;
}
}
//看连续牌数是否等于7;
if( counter_1 == 4 && counter_2 + counter_3 == 3 ||
counter_1 == 5 && counter_2 + counter_3 == 2 ||
counter_1 == 6 && counter_2 + counter_3 == 1 )
{
//其他相关判断;
//出牌处理;
m_cDiscardingType.m_nTypeNum = 7;
m_cDiscardingType.m_nTypeValue = i;
m_nDiscardingCounter = 7;
for(k=0;k<m_nCardsCounter;k++)
{
if( m_cCards[k].m_nValue == i )
{
for(l=0;l<7;l++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -