/**
* 发牌程序
* 共:54张 52张
* 玩家1: 17张
* 玩家2: 17张
* 玩家3: 17张
* 底牌: 3张
* 1. 生成 54张
* 2. 分发 17-17-17-3 打乱
* 3. 排序
*/
const number = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2'];
const flower = ["♠️", "♥️", "♣️", "♦️"]; // 黑桃 < 红心 < 梅花 < 方块
function create() {
// 生成牌
let arr = []; // 装所有牌
for (let f = 0; f < flower.length; f++) {
for (let n = 0; n < number.length; n++) {
let obj = {
str: flower[f] + number[n],
number: n,
flower: f
};
arr.push(obj);
}
}
arr.push({
str: '小王',
number: 53
}, {
str: '小王',
number: 54
});
// console.log(arr, arr.length);
// 54 个随机下标
let s = new Set();
while (s.size < 54) {
s.add(random(arr.length - 1));
}
let randomIndexArr = [...s]; // 54 数字
// console.log(randomIndexArr);
arr = randomIndexArr.map(item => arr[item]); //54个乱序牌
// console.log('乱序后:', arr);
// 发牌
let player1 = arr.slice(0, 17);
let player2 = arr.slice(17, 34);
let player3 = arr.slice(34, 51);
let def = arr.slice(51, 54);
// console.log(player1.length, player2.length, player3.length, def.length);
return [player1, player2, player3, def];
}
let [player1, player2, player3, def] = create();
function sort(arr) {
arr.sort((a, b) => {
if (a.number == b.number) {
return a.flower - b.flower
} else {
return a.number - b.number
}
});
console.log('排序后:', arr);
}
sort(player1);
sort(player2);
sort(player3);
sort(def);
// let arr = [3, 6, 12, 4];
// player1.sort((a, b) => a - b);
// 如果点数相同,按花色排
// 随机数
function random(min, max) {
if (!max) {
[max, min] = [min, 0];
}
let number = parseInt(Math.random() * (max - min + 1)) + min;
return number;
}
发牌乱序纯js
最新推荐文章于 2024-07-24 11:09:48 发布