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 相关文章推荐
JavaScript Event事件学习第一章 Event介绍
Feb 07 Javascript
jquery绑定原理 简单解析与实现代码分享
Sep 06 Javascript
Jquery提交表单 Form.js官方插件介绍
Mar 01 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
Jquery对数组的操作技巧整理
Mar 25 Javascript
setTimeout()递归调用不加引号出错的解决方法
Sep 05 Javascript
Css3制作变形与动画效果
Jul 24 Javascript
JavaScript设置表单上传时文件个数的方法
Aug 11 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
May 26 Javascript
手写Node静态资源服务器的实现方法
Mar 20 Javascript
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 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的十大要点(上)
2009/02/04 PHP
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
原生js实现日历效果
2020/03/02 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
python中如何使用insert函数
2020/01/09 Python
Python运行异常管理解决方案
2020/03/09 Python
测绘工程个人的自我评价
2013/11/23 职场文书
计算机相关的自我评价
2014/01/15 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
先进教师事迹材料
2014/12/16 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
导游词书写之黄山
2019/08/06 职场文书
详解pytorch创建tensor函数
2022/03/22 Python