我真的认为这会更容易评估一个直,但遗憾的是,我在这里尝试了几天。
我有一副牌,每个玩家得到两张牌,当谈到评估时,我把玩家卡和社区卡结合起来,从高到低排序。
阵列看起来像
['14d', '13d', '12d', '1d', '10d', '9d', '8d'];
我尝试过多种方法,例如循环和手动评估每张卡,但它需要评估最少5张卡(2张玩家卡+3张社区卡)最多7张卡(2张玩家卡+5张社区卡)
$hand = ['14d', '13d', '12d', '11d', '10d', '9d', '8d']; //Debug hand variable
$hand_len = count($hand);
$l_card = (int)$hand[0];
$set = array();
rsort($hand, SORT_NUMERIC);
for ($i=0; $i < $hand_len; $i++) {
//Which values to compare
if ( $i+1 != $hand_len && $i+2 != $hand_len) {
$c1 = (int)$hand[$i]; //14
$c2 = (int)$hand[$i+1]; //13
if ( $c1 == $c2+1 ) { //if 14 == 13(+1)
array_push($set, $hand[$i]);
}
} elseif ($i+1 == $hand_len && $i+2 == $hand_len) {
$c1 = (int)$hand[$i]; //8
$c2 = (int)$hand[$i-1];//9
if ( $c1 == $c2-1 ) { //if 8 == 9(-1)
array_push($set, $hand[$i]);
}
}
}
//Still to add evaluation for 14 (Ace) being used for low straight (eg. 14d, 2d, 3d...).
对于每一张牌,我必须转换成一个整数,去掉西装字符,然后进行计算。我可以得到一定程度的成功,直到它必须评估最后一张牌。
例如。
['14d', '13d', '12d', '11d', '10d', '9d', '8d'];
谢谢!