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 相关文章推荐
jquery获取焦点和失去焦点事件代码
Apr 21 Javascript
解析Jquery取得iframe中元素的几种方法
Jul 04 Javascript
JS文本框默认值处理详解
Jul 10 Javascript
JavaScript 数组详解
Oct 10 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
JavaScript生成随机字符串的方法
Mar 19 Javascript
arcgis for js 修改infowindow样式的方法
Nov 02 Javascript
JavaScript编写的网页小游戏,很给力
Aug 18 Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
Sep 04 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 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具体实现代码
2010/10/12 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
python中函数传参详解
2016/07/03 Python
Sanic框架路由用法实例分析
2018/07/16 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
pytest中文文档之编写断言
2019/09/12 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
Django权限设置及验证方式
2020/05/13 Python
python网络编程之五子棋游戏
2020/05/14 Python
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
个人实习生的自我评价
2014/02/16 职场文书
股东合作协议书
2014/09/12 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
雨中的树观后感
2015/06/03 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Python OpenCV实现图形检测示例详解
2022/04/08 Python
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL