1.牌與數值的對映關係如下:
數值 - 牌
3 - 3
4 - 4
…10 - 10
11 - j
12 - q
13 - k
14 - a
15 - 2
16 - 小王
17 - 大王
18 - 花牌(可以變成任意牌)
2.以下判斷方法傳入的引數必須是從 大到小排好序的陣列
3.可以帶任意張 花牌 牌 , 如果滿足條件並且有多種可能,最終返回的是最大值
4. 如果傳入的陣列滿足判斷條件返回 該牌的最大值(可以用作與其他同型別牌作比較) , 否則返回false
isshunzi([
10,9,
8,7,
6,5]
)//返回的是: 10
isshunzi([
18,18,
9,8,
7,6,
5])//返回的是: 11
ps:這裡就大概寫了順子和連對的邏輯, 單張, 對子, 炸彈等邏輯比較簡單就沒有寫了,
1) 判斷是否順子
//判斷是否是順子
function
isshunzi
(arr)
var purepoker =
;//去掉花牌的牌
for(
let i =
0; i < arr.length; i++)}
//順子不能帶2
if(purepoker[0]
>14)
var maxdistancevalue = arr.length -1;
//最大差值
var nowdistancevalue = purepoker[0]
- purepoker[purepoker.length -1]
;if(nowdistancevalue <= maxdistancevalue)
else}if
(isstraight)
else
value = value >14?
14: value;
return value;
}else
}else
}
2) 判斷是否是連對//計算癩子個數
function
getlaizicount
(data)
)return laizicount.length;
}//是否是連對
function
isliandui
(arr)
if(arr.length ==4&&
getlaizicount
(arr)==2
)var purepoker =
;//去掉癩子的牌
for(
let i =
0; i < arr.length; i++)}
var pokerarr1 =
;//分割陣列1
var pokerarr2 =
;//分割陣列2
for(
var i =
0; i < purepoker.length; i++
)else}if
(pokerarr1.length > arr.length /2)
while
(pokerarr1.length < arr.length /2)
while
(pokerarr2.length < arr.length /2)
var maxvalue1 =
isshunzi
(pokerarr1)
;var maxvalue2 =
isshunzi
(pokerarr2);if
(maxvalue1 && maxvalue2)
else
}
最後還順便貼乙個 「跑得快」 的3帶2 和飛機的判斷邏輯(沒有花牌)function
getgroup
(data, index =
0, group =
) group.push.;if
(index +
1>= data.length)
return group;
else
return
getgroup
(data, index +
1, group);}
// 是否是3帶2 和飛機
function
isplane
(array)
var map =
var arr3 =
var pokerlength = array.length;
for(
let index =
0; index < pokerlength; index++
)for
(const key in map)
} console.
log(map, arr3);if
(arr3.length ==0)
else
if(arr3.length ==
1&& pokerlength ==5)
arr3 = arr3.
map(
(v)=>
)var grouparr =
getgroup
(arr3)
;//各種可能的組合
console.
log(
"grouparr"
, grouparr)
;var resultgroup =
;//最終滿足條件的組合
for(
var i =
0, len = grouparr.length; i < len; i++)}
console.
log(
"resultgroup"
, resultgroup)
;var resultgroupkeys = object.
keys
(resultgroup)
if(resultgroupkeys.length ==0)
else
,this);
}return resultgroupkeys.
max()}
}
鬥地主相關邏輯演算法(JavaScript)
注 隨便寫的草稿,專案已丟失。var require lodash var logic logic.canchupaijudge function cards,curcards var type2 self.cardstypejudge curcards console.log 桌面上已有牌型 if...
鬥地主中跟牌邏輯分析
qlistmethod playbeathand hand hand 壓雙排 else if hand.gethandtype hand pair 如果壓雙牌,盡量從雙牌中挑 player nextplayer m player getnextplayer 從手牌中查詢相同牌型 qlist beat...
鬥地主演算法1判斷牌型
using unityengine using system.collections.generic 牌型 3 4 5 6 7 8 9 10 11 j 12 q 13 k 14 a 15 2 16 小王 17 大王 public class ddz cardtype 是否是單張 public sta...