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


Posted in Javascript onMarch 04, 2015

本文实例讲述了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. 运行效果如下图所示:

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

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

Javascript 相关文章推荐
使用prototype.js进行异步操作
Feb 07 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
Apr 24 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
Apr 03 Javascript
JavaScript中的原型和继承详解(图文)
Jul 18 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
javascript实现简单的分页特效
Aug 12 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
Feb 23 Javascript
深入理解MVC中的时间js格式化
May 19 Javascript
对layui中table组件工具栏的使用详解
Sep 19 Javascript
javascript刷新父页面方法汇总详解
Oct 10 Javascript
基于JS实现table导出Excel并保留样式
May 19 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
Aug 04 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 #Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 #Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
Mar 04 #Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 #Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 #Javascript
javascript下拉框选项单击事件的例子分享
Mar 04 #Javascript
js实现仿QQ秀换装效果的方法
Mar 04 #Javascript
You might like
PHP调用C#开发的dll类库方法
2014/07/28 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
Python处理中文标点符号大集合
2018/05/14 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
幼儿教师自我剖析材料
2014/09/29 职场文书
客户经理岗位职责
2015/01/31 职场文书
技术员岗位职责
2015/02/04 职场文书
反邪教观后感
2015/06/11 职场文书
结婚典礼主持词
2015/06/29 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
2016国培学习心得体会
2016/01/08 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
Java 异步任务计算FutureTask
2022/04/28 Java/Android