?? playing_cards.cpp
字號(hào):
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;
}
//尋找三順帶兩對(duì);
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;
//連續(xù)單牌的個(gè)數(shù);
int counter_1;
int counter_2;
int counter_3;
//如果是10,j,q,k,A,則考慮對(duì)手中牌的個(gè)數(shù),如果太少就考慮尋找炸彈;
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++;
}
}
//看連續(xù)牌數(shù)是否等于5;
if( counter_1 == 5 )
{
//其他相關(guān)判斷;
//出牌處理;
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 )
{
//其他相關(guān)判斷;
//出牌處理;
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;
//連續(xù)單牌的個(gè)數(shù);
int counter_1;
int counter_2;
int counter_3;
//如果是10,j,q,k,A,則考慮對(duì)手中牌的個(gè)數(shù),如果太少就考慮尋找炸彈;
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++;
}
}
//看連續(xù)牌數(shù)是否等于6;
if( counter_1 == 6 )
{
//其他相關(guān)判斷;
//出牌處理;
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 )
{
//其他相關(guān)判斷;
//出牌處理;
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;
//連續(xù)單牌的個(gè)數(shù);
int counter_1;
int counter_2;
int counter_3;
//如果是10,j,q,k,A,則考慮對(duì)手中牌的個(gè)數(shù),如果太少就考慮尋找炸彈;
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++;
}
}
//看連續(xù)牌數(shù)是否等于7;
if( counter_1 == 7 )
{
//其他相關(guān)判斷;
//出牌處理;
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; //如果沒有牌或者是四張(炸彈),則不考慮;
}
}
//看連續(xù)牌數(shù)是否等于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 )
{
//其他相關(guān)判斷;
//出牌處理;
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++)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -