使用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

时间: 2024-10-07 14:42:02

使用javascript随机生成斗地主玩家手牌的相关文章

JavaScript随机生成颜色的方法

JavaScript随机生成颜色的方法 这篇文章主要介绍了JavaScript随机生成颜色的方法的相关资料,非常不错,代码简单易懂,具有参考借鉴价值,需要的朋友可以参考下 废话不多说了直接给大家贴js代码了,具体代码如下所述: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <!DOCTYPE html> <html>

JavaScript 随机生成 hex色值

本文用于提醒自己切忌遇事就想着转进制 rnd_hex:function(){ var hex = "#" for(var i = 0 ; i < 6 ; i++){ var uni = Math.round(Math.random()*22+48) if(uni<58 | uni>64){ var chr = String.fromCharCode(uni) hex = hex + chr }else{ i-- } return hex }

jj循环pk赛中败局手牌的发放

jj斗地主中pk赛中的败局 比较统一的规律为 炸(10以内)王三(A/2) 不同时出现以上内容出现的牌数在0/3/5 断点 位置(3-13)随机挑3个 现进行模仿 import numpy as np import random as random # 构建牌池 pool_1=[1,2,3,4,5,6,7,8,9,10,11,12,13] pool=np.repeat(pool_1,4).tolist() # 选择顶牌是那种方式 ## 0 炸 1给单王 2给三个 top_card=np.rand

cocos2dx《单机斗地主》源码解剖之八 电脑玩家出牌与跟牌(结束)

上一篇文章对玩家手中的牌进行分析归类,下面就该实现电脑玩家出牌与跟牌的策略了.首先我们来看看出牌的策略,代码如下: void GameScene::update(float delta){ switch (m_iState) { case 0: SendPk(); break; case 1: schedule(schedule_selector(GameScene::Call),1); break; case 2: scheduleOnce(schedule_selector(GameScen

JavaScript通过正则随机生成电话号码

没有接口,就只能自己模拟Json数据了 恰好需要模拟一些电话号码,我又懒得自己随便写, 不如写一个小功能就用来实现随机生成电话号码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale

【JavaScript】随机生成10个0~100的数字

随机生成10个0~100不重复的数字(包含0和100): 需要用到的知识点:随机数 去重 下面放代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> // 定义声明一个数组, 放随机生成的10个数字 var arr = []; for(var

selenium + python自动化测试unittest框架学习(七)随机生成姓名

在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机生成姓名的方法,在此记录下,学习来源:https://segmentfault.com/q/1010000006941249 姓氏和名字的列表: import random import string last_names = ['赵', '钱', '孙', '李', '周', '吴', '郑',

python操作redis之随机生成18位身份证号码

写一个随机生成身份证号的程序,输入多少条就产生多少个,?把产生完的数据写到redis里面,key用哈希类型?Xiaohei 410881198312031241 其中配置文件confsetting.py里的常量有: # 系统常量,包含: # LAST_NAME: 姓 # FIRST_NAME: 名 # STATE_CODE:全国大陆地区及编码 REDIS_IP = '172.16.2.163' RedisIp REDIS_PORT = 6379 REDIS_PASSWD = '222333' R

js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>js网页版小游戏</title> <style media="screen"> .wrap { width: 577px; outline: 1px solid hotpink; margin: 100px auto; box-shadow: 0 0 5px; } .