用JS实现一个斗地主发牌器

//调用随机数,在我上一篇博文讲过这一个函数。 function roundNum(min = 0, max = 0) { if (!isNaN(min) && !isNaN(max) && min >= 0 && max >= 0) { min > max ? [min, max] = [max, min] : [min, max] = [min, max]; return parseInt((max – min + 1) * Math.random() + min); } else { return `您输入的有误,请重新输入!!!`; } } //洗牌 function shuffle() { // 牌组 let pukeCards = [‘3‘, ‘3‘, ‘3‘, ‘3‘, ‘4‘, ‘4‘, ‘4‘, ‘4‘, ‘5‘, ‘5‘, ‘5‘, ‘5‘, ‘6‘, ‘6‘, ‘6‘, ‘6‘, ‘7‘, ‘7‘, ‘7‘, ‘7‘, ‘8‘, ‘8‘, ‘8‘, ‘8‘, ‘9‘, ‘9‘, ‘9‘, ‘9‘, ‘10‘, ‘10‘, ‘10‘, ‘10‘, ‘J‘, ‘J‘, ‘J‘, ‘J‘, ‘Q‘, ‘Q‘, ‘Q‘, ‘Q‘, ‘K‘, ‘K‘, ‘K‘, ‘K‘, ‘A‘, ‘A‘, ‘A‘, ‘A‘, ‘2‘, ‘2‘, ‘2‘, ‘2‘, ‘small joker‘, ‘big joker‘]; let i = 53; while (i) { let roundCord = roundNum(0, i ); pukeCards.push(pukeCards[roundCord]); pukeCards.splice(roundCord, 1); i–; } return pukeCards; } //发牌 function deal(puke) { let player1 = puke.splice(0, 17); let player2 = puke.splice(0, 17); let player3 = puke.splice(0, 17); let bottomCardS = puke.splice(0, 3); console.log(`玩家1:${player1}`); console.log(`玩家2:${player2}`); console.log(`玩家3:${player3}`); console.log(`底牌:${bottomCardS}`); } // 拿到洗过的牌 let account = shuffle(); // 运行发牌实现斗地主自动发牌 deal(account); 想法就是先把整副牌的顺序打乱然后再依次发牌,留下三张为底牌。 用的方法是push()和splice(),首先利用随机数0-53(因为是下标从0开始的)随机到一个下标,使用方法push()将随机的牌添加到数组的最后一项然后使用方法splice()删除该牌,完成过后随机的下标范围减1。因此,在进行循环的时候并不会影响到后面已经随机排序的牌。 当牌洗好过后就可以进行发牌了,使用的还是方法splice();虽然splice是删除,但是它能用变量接收,接收的东西就是删除的东西,因此就实现了发牌的功能。三个玩家一人17张牌,最后三张牌是底牌。 讲道理来说斗地主发牌的话会给你进行排序,但我目前还不知道怎么排序,等我实现了排序过后我会再更新的。