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 相关文章推荐
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
jQuery异步提交表单的两种方式
Sep 13 Javascript
JavaScript轮播图简单制作方法
Feb 20 Javascript
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
ES6中的Promise代码详解
Oct 09 Javascript
opencv 识别微信登录验证滑动块位置
Aug 07 Javascript
Vue.js 十五分钟入门图文教程
Sep 12 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
微信小程序封装分享与分销功能过程解析
Aug 13 Javascript
Vue实现下拉加载更多
May 09 Vue.js
深入理解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设计聊天室步步通
2006/10/09 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
js判断屏幕分辨率的代码
2013/07/16 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
利用Python开发实现简单的记事本
2016/11/15 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
django2笔记之路由path语法的实现
2019/07/17 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
高考考python编程是真的吗
2020/07/20 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
2014年行政工作总结
2014/11/19 职场文书
主婚人致辞精选
2015/07/28 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript