当前位置: 首页 > 编程笔记 >

js计算德州扑克牌面值的方法

子车雅珺
2023-03-14
本文向大家介绍js计算德州扑克牌面值的方法,包括了js计算德州扑克牌面值的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了js计算德州扑克牌面值的方法。分享给大家供大家参考。具体如下:
1. 代码如下:

var Poker = function(n){

    this.num = (n % 13) + 2;

    this.ch = this.num > 9 ? ("abcdef"[this.num-10]) : this.num;

    this.show = "0,1,2,3,4,5,6,7,8,9,10,J,Q,K,A".split(",")[this.num];

    this.color = "♠♥♣♦"[n / 13 | 0];

    this.toString = function(){

        return this.color + this.show;

    };

};

var z = function(arg){ //同花顺

    var a = arg,

        t = a[0];

    for (var i = 1; i < a.length; i++) {

        if( a[i].color === t.color && a[i].num === t.num + 1 ){

            t = a[i];

        }else if( i === a.length-1 && t.num === 5 && a[i].num === 14 && a[i].color === t.color){

            t = a[0];

        }else{

            return; 

        }

    };

    return "z" + t.ch;

};

var y = function(arg){ //四条

    var a = arg.map(function(p){

            return p.ch;

        }).join(""), 

        mat = a.match(/(\w*)(\w)\2\2\2(\w*)/);

    if( mat ){

        return "y"+mat[2]+mat[1]+mat[3];

    }

};

var x = function(arg){ //葫芦

    var a = arg.map(function(p){

            return p.ch;

        }).join(""), 

        mat;

    if( mat = a.match(/(\w)\1(\w)\2\2/) ){

        return "x" + mat[2] + mat[1];

    }else if( mat = a.match(/(\w)\1\1(\w)\2/) ){

        return "x" + mat[1] + mat[2];

    }

};

var w = function(arg){ //同花

    var a = arg,

        t = a[0];

    for (var i = 1; i < a.length; i++) {

        if( a[i].color === t.color ){

            t = a[i];

        }else{

            return; 

        }

    };

    return "w" + arg.map(function(p){

        return p.ch;

    }).join("");

};

var v = function(arg){ //顺子

    var a = arg,

        t = a[0];

    for (var i = 1; i < a.length; i++) {

        if( a[i].num === t.num + 1 ){

            t = a[i];

        }else if( i === a.length-1 && t.num === 5 && a[i].num === 14){

            t = a[0];

        }else{

            return; 

        }

    };

    return "v" + t.ch;

};

var u = function(arg){ //三条

    var a = arg.map(function(p){

            return p.ch;

        }).join(""), 

        mat;

    if( mat = a.match(/(\w*)(\w)\2\2(\w*)/) ){

        return "u" + mat[2] + mat[1] + mat[3];

    }

};

var t = function(arg){ //两对

    var a = arg.map(function(p){

            return p.ch;

        }).join(""), 

        mat;

    if( mat = a.match(/(\w*)(\w)\2(\w)\3(\w*)/) ){

        return "t" + mat[3] + mat[2] + mat[1] + mat[4];

    }else if( mat = a.match(/(\w)\1(\w)(\w)\3/) ){

        return "t" + mat[3] + mat[1] + mat[2];

    }

};

var s = function(arg){ //一对

    var a = arg.map(function(p){

            return p.ch;

        }).join(""), 

        mat;

    if( mat = a.match(/(\w*)(\w)\2(\w*)/) ){

        return "s" + mat[2] + mat[1] + mat[3];

    }

};

var r = function(arg){ //高牌

    return arg.map(function(p){

        return p.ch;

    }).join("");

};

var score = function(){

    var a = [].map.call(arguments, function(p){

        return new Poker(p);

    }).sort(function(p1,p2){

        return p1.num - p2.num;

    });

    console.log( a.join(",") );

    return z(a) || y(a) || x(a) || w(a) || v(a) || u(a) || t(a) || s(a) || r(a);

};

console.log( score( 50, 49, 47, 46, 48 ) ); // 同花顺

console.log( score( 36, 49, 23, 10, 48 ) ); // 四条

console.log( score( 36, 49, 23, 22, 48 ) ); // 葫芦

console.log( score( 50, 40, 47, 43, 48 ) ); // 同花

console.log( score( 50, 36, 47, 46, 48 ) ); // 顺子

console.log( score( 36, 49, 25, 22, 48 ) ); // 两对

console.log( score( 36, 49, 20, 27, 47 ) ); // 一对

console.log( score( 36, 11, 20, 27, 47 ) ); // 高牌

2. 运行效果如下图所示:

希望本文所述对大家的javascript程序设计有所帮助。

 类似资料:
  • 本文向大家介绍java用扑克牌计算24点,包括了java用扑克牌计算24点的使用技巧和注意事项,需要的朋友参考一下 一副扑克牌的每张牌表示一个数(J、Q、K 分别表示 11、12、13,两个司令都表示 6)。任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个

  • 本文向大家介绍Java扑克牌速算24的方法,包括了Java扑克牌速算24的方法的使用技巧和注意事项,需要的朋友参考一下 已知一副扑克牌有54张,去除大王和小王,剩余52张。在其中随机抽取4张牌,利用加减乘除进行计算得到24. 从A到10,他们的值分别为1到10. 从J到K,他们对应的值是减去10以后的值。编写程序生成一副扑克牌,随机抽取4张,进行计算是否能得到24. 如果可以,列出可能的计算表达式

  • 本文向大家介绍C++扑克牌的洗牌发牌游戏设计,包括了C++扑克牌的洗牌发牌游戏设计的使用技巧和注意事项,需要的朋友参考一下 笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏。具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌。然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等。 笔者在学习他人设计的基础上,完成了自己的程序设计。这里将源程序分享给大家。 

  • 本文向大家介绍写一个洗扑克牌的方法相关面试题,主要包含被问及写一个洗扑克牌的方法时的应答技巧和注意事项,需要的朋友参考一下 求教, 要比 更好吗?

  • 题目链接 NowCoder 题目描述 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 解题思路 // java public boolean isContinuous(int[] nums) { if (nums.length < 5) return false; Arrays.sort(nums); // 统计癞子数量 i

  • 仿造扑克牌效果的滚动cover flow控件,借鉴了Columns Controller的一些思路。支持ios4.3以上,内有详细的注释和demo。缺点,有点占用手机资源,望大牛给点意见。 [Code4App.com]