码迷,mamicode.com
首页 > Web开发 > 详细

用原生JS写洗扑克牌

时间:2020-10-09 20:25:52      阅读:31      评论:0      收藏:0      [点我收藏+]

标签:check   else   字符   ++   OLE   遍历   结果   putc   ons   

洗扑克牌过程为经典的变量交换

技术图片

步骤:

1)由原数组每次遍历随机从中抛出一张牌
2)随机牌赋值给暂存牌
3)始存牌赋值给随机牌
4)暂存牌赋值给终存牌

 

实现代码

var cards = 54; // 以一副斗地主为例13 × 4???? + 2 = 54
function wash(cards) {
    var inputCard = [‘A?‘, ‘A?‘, ‘A?‘, ‘A?‘, ‘2?‘, ‘2?‘, ‘2?‘, ‘2?‘, ‘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?‘, ‘大?‘, ‘小?‘], // 始存牌和终存牌
        tempCard, // 暂存牌
        randomCard; // 随机牌
    for (var j = 0; j < cards; j++) { // 洗牌过程
        randomCard = Math.floor(Math.random() * cards);
        tempCard = inputCard[randomCard];
        inputCard[randomCard] = inputCard[j];
        inputCard[j] = tempCard;
    }
    console.log(inputCard);


    /* 检查随机元素是否有重复 */
    var checkArr = {};
    for (var i = 0; i < cards; i++) {
        var char = inputCard[i]; // 返回索引对象数组
        if (checkArr[char]) {
            checkArr[char]++; // 累积出现次数加1,"object[key] = 1 "为每个遍历的对象属性赋值
        } else {
            checkArr[char] = 1; // 若第一次出现,次数记为1
        }
    }
    console.log(checkArr); // 输出完整的对象,记录每个字符及其出现次数
}
wash(cards);

 

结果输出

已洗牌一次

技术图片

检查重复

技术图片

技术图片

 

 

用原生JS写洗扑克牌

标签:check   else   字符   ++   OLE   遍历   结果   putc   ons   

原文地址:https://www.cnblogs.com/MaricoCheung/p/13782964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!