找朋友(鬥地主) 判斷邏輯

2021-09-09 05:02:14 字數 3227 閱讀 4137

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...