24、21点游戏开发全解析

21点游戏开发全解析

1. 洗牌算法

1.1 Fisher - Yates算法

在21点游戏中,洗牌是一个重要的环节。这里使用了Fisher - Yates算法,该算法的策略是从牌堆的末尾开始,为牌堆中的每个位置随机确定一张牌,直到处理到牌堆的开头。具体步骤如下:
1. 从牌堆的最后一张牌开始,将当前位置记为 i
2. 生成一个从 0 到 i 的随机整数 s
3. 交换位置 s 和位置 i 的牌。
4. i 减 1,重复步骤 2 和 3,直到 i 为 0。

以下是实现该算法的代码:

function shuffle() {
    var i = deck.length - 1;
    var s;
    while (i > 0) {
        s = Math.floor(Math.random() * (i + 1));
        swapinDeck(s, i);
        i--;
    }
}

function swapInDeck(j, k) {
    var hold = new MCard(deck[j].num, deck[j].suit, deck[j].picture.src);
    deck[j] = deck[k];
    deck[k] = hold;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值