2015-02-11 43 views
2

我想檢查撲克遊戲中的直線組合。檢查撲克中的直線組合

所以,我有此數組:var tempArr:Array = new Array;

我有這樣的用於分揀數組:

for (i = 0; i < 7; i++) 
{ 
    tempArr[i] = pValue[i]; 
} 
tempArr.sort(Array.NUMERIC); 

pValue是卡片的值,它是具有範圍從2到14

所以,如果我有這個陣列:tempArray = [2,3,3,4,5,5,6];

如何檢查我手中是否有直的組合?

回答

0

集水桶數組來保存,如果你手裏拿着的卡

var t:Array = []; 
//t[2] = 1;mean you have 2 
// t[3] = 0;mean you don't have 3 

//first initialize t 
for(var i:int = 0; i < 15; i++) 
{ 
    t[i] = 0; 
} 

//then set the values from tempArray 
for (var j:int = 0; j < tempArray.length; j++) 
{ 
    t[tempArray[j]] = 1; 
} 

//if you have a straight combination in your hand 
//you will get a k that t[k] & t[k-1]& t[k-2] & t[k-3] & t[k-4] == 1 

var existed:boolean = false;//the flag save if you got a straight combination 

for (var k:int = t.length - 1; k >= 4; k--) 
{ 

    if (t[k] == 0) 
    { 
     continue; 
    } 

    if ((t[k] & t[k-1] & t[k-2] & t[k-3] & t[k-4]) == 1) 
    { 
     existed = true; 
     break; 
    } 
} 
+0

感謝,你的代碼爲我工作。 – hotarufire 2015-02-12 06:48:11

+1

不要忘記特例2-3-4-5-14! – 2015-02-12 18:00:46