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 相关文章推荐
获取当前网页document.url location.href区别总结
May 10 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
JQuery中使用.each()遍历元素学习笔记
Nov 08 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
Aug 12 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
Javascript 实现放大镜效果实例详解
Dec 03 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
Jun 28 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
Node.js API详解之 zlib模块用法分析
May 19 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 Javascript
vue动态合并单元格并添加小计合计功能示例
Nov 26 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中常用编辑器推荐
2007/01/02 PHP
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php socket通信简单实现
2016/11/18 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
js编写简易的计算器
2020/07/29 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
Python文本相似性计算之编辑距离详解
2016/11/28 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
致跳远运动员广播稿
2014/02/11 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
正确的理解和使用Django信号(Signals)
2021/04/14 Python
如何获取numpy array前N个最大值
2021/05/14 Python
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
vue中data里面的数据相互使用方式
2022/06/05 Vue.js