2015-02-21 3 views
0

Я хочу попросить функцию проверки комбинации Full House в покере.
До сих пор у меня есть этот код:Как проверить комбинацию Full House в Flash CS6 AS3

for (a=0 ; a<2 ; a++) 
{ 
    for (b=a+1 ; b<7 ; b++) 
    { 
     if (pValue[a] == pValue[b]) 
     { 
      pair++; 
      for (c=b+1 ; c<7 ; c++) 
      { 
       if (pValue[b] == pValue[c]) 
       { 
        thrice++; 
       } 
      } 
     } 
    } 
} 

Так я проверка:

if (pair >= 1 && thrice >= 2 || pair >=2 && thrice >= 1) 
{ 
    nameComb = "Full House"; 
} 

Но если у меня есть 3 карты с одинаковым значением, результат pair = 2 и thrice = 1
Так что, когда Full House условие будет выполнено.
Как я могу проверить, является ли пара одним и тем же значением трижды?

+0

Если ваша пара имеет то же значение, как ваш набор из трех, проверить вас колоду. Этот монстр с тройным вложенным циклом всегда будет трудно понять и отладить. Для оценки рук в покере я рекомендую сначала сортировать карты по рангу. Тогда все будущие тесты станут намного проще. И применяйте тесты с самых высоких рук вниз: например, искать прямые флеши, затем квадрациклы и т. Д. –

ответ

0

Попробуйте мой код:

var pValue:Array = [1,1,1,2,2]; 

var values:Array = []; 
var counts:Array = []; 
var index:int; 

for (var i:int = 0; i < pValue.length; i++) 
{ 
    if ((index = values.indexOf(pValue[i])) == -1) 
    { 
     values.push(pValue[i]); 
     counts.push(1); 
    } 
    else 
    { 
     counts[index]++; 
    } 
} 

trace(values); 
trace(counts); 

if (counts.length == 2 && ((counts[0] == 3 && counts[1] == 2) || (counts[0] == 2 && counts[1] == 3))) 
{ 
    trace("Full House"); 
} 
+0

Ваш код не работает с моим проектом. У меня три комбинации. – hotarufire

Смежные вопросы