使用javascript随机生成斗地主玩家手牌

学习javascript估摸着有半个多月了,好歹自己有过编程基础,学的还算轻松,不过js里的面向对象是真的打脑壳,但都但不懂,和我以前学过的c#简直相差太远

 

今天写了个随机生成斗地主玩家手牌的代码,自己还蛮满意的,一溜叽滚下床,戳开电脑来分享一手

 

虽然这种东西根本没啥用,哈哈

 

卡牌列表数组元素类型:

[1, "黑桃", 11, "K"]

  

每一张卡牌为一个数组,有4个元素,0号元素代表当前花色大小,2号元素代表当前卡片数值大小,1号和3号都是字符串,用来表示卡牌表面信息

比较大小分为两种情况,卡片数值不同和卡片数值相同

卡片数值不同情况直接比较卡片数值大小来排序,卡片数值相同就需要比较花色大小来排序

难点就在于将手牌进行排序,有了思路以后就好做了,直接贴上代码!

 

//创建卡牌
function CreatePoker() {
    let color = [[1, "黑桃",], [2, "红桃"], [3, "梅花"], [4, "方块"]];
    let number = [[1, "3"], [2, "4"], [3, "5"], [4, "6"], [5, "7"], [6, "8"], [7, "9"], [8, "10"], [9, "J"], [10, "Q"], [11, "K"], [12, "A"], [13, "2"]];
    //创建卡牌数组,每种颜色对应一种数值
    let pokerList = [];
    for (let i = 0; i !== color.length; i++) {
        for (let j = 0; j !== number.length; j++) {
            pokerList.push([...color[i], ...number[j]]);
        }
    }
    //添加大小王
    pokerList.push(["", "", 14, "小 王"]);
    pokerList.push(["", "", 15, "大 王"]);
    //将卡牌数组打乱,随机返回-1或者是1就可以乱排序
    pokerList.sort(() => {
        return Math.random() > 0.5 ? -1 : 1;
    });
    return pokerList;//最后将得到的卡牌数组返回
}
function GivePoker(pokerList) {
    //直接从乱序数组中剔除得到17项,然后排序
    let sortArr = SortPoker(pokerList.splice(0, 17));
    //格式化输出
    let str = "";
    for (let poker of sortArr) {
        str += poker[1] + poker[3] + "\t";
    }
    return str;
}
//排序数组
function SortPoker(pokerList) {
    pokerList.sort((poker1, poker2) => {
        //卡牌数值相同比较花色
        if (poker1[2] === poker2[2]) {
            return poker1[0] - poker2[0];
        }
        //卡牌数值不同比较数值
        return poker1[2] - poker2[2];
    });
    return pokerList;
}
let pokerList = CreatePoker();
let player1Poker = GivePoker(pokerList);
let player2Poker = GivePoker(pokerList);
let player3Poker = GivePoker(pokerList);
let lastPoker = GivePoker(pokerList);
console.log("玩家1:" + player1Poker);
console.log("玩家2:" + player2Poker);
console.log("玩家3:" + player3Poker);
console.log("底 牌:" + lastPoker);

 

下午的时候写的代码有足足80行,回家后又思考优化后只有40行了,个人感觉良好,哈哈,膨胀了膨胀了,睡觉!明天继续努力学习!

转载于:https://www.cnblogs.com/sbzy/p/9153339.html

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页