如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六

  1 <!DOCTYPE html>
  2 <html>
  3  <head>
  4   <title>如何计算扑克牌中的顺子、对子、半顺、豹子、杂六</title>
  5   <meta charset="utf-8"/>
  6   </head>
  7  <body>
  8          号码1:<input type="number" value="5" id="num1"/><br />
  9          号码2:<input type="number" value="6" id="num2"/><br />
 10          号码3:<input type="number" value="1" id="num3"/><br />
 11          <button onclick="calc()">计算</button><span style="color:red;margin-left:50px;">计算结果:<b id="result" style="color:blue"></b></span>
 12    <script>
 13
 14      /**
 15       * 计算
 16       */
 17      function calc(){
 18         var numberArray = new Array(3);
 19         for(var i = 0;i < 3;i++){
 20            numberArray[i] = document.getElementById("num"+(i+1)).value;
 21         }
 22         var resultArray = calcGamePlayResult(numberArray);
 23         var value = ‘‘;
 24         if(resultArray[0] == 1){
 25            value = "对子";
 26         }else if(resultArray[0] == 2){
 27             value = "豹子";
 28         }else if(resultArray[1] == 1){
 29             value = "半顺";
 30         }else if(resultArray[1] == 2){
 31             value = "顺子";
 32         }else{
 33             value = "杂六";
 34         }
 35         document.getElementById("result").innerHTML=value;
 36      }
 37
 38      /**
 39       * 计算顺子、对子、半顺、豹子、杂六
 40       *
 41       * @arguments array 数组
 42       *
 43       * @returns 数组下标0 对应豹子、对子   数组下标1 对应顺子、半顺、杂六
 44       */
 45      function calcGamePlayResult(array){
 46         array = Arrays.toNumArray(array);
 47         array = Arrays.sortAsc(array);
 48         //存储计算结果
 49         var resultArray = new Array(2);
 50
 51         //计算豹子、对子
 52         resultArray[0] = array[2] - array[1] == 0 ? 1 : 0;
 53         resultArray[0] = array[1] - array[0] == 0 ? ++resultArray[0] : resultArray[0];
 54
 55         //计算顺子、半顺、杂六
 56         resultArray[1] = array[2] - array[1] == 1 ? 1 : 0;
 57         resultArray[1] = array[1] - array[0] == 1 ? ++resultArray[1] :  resultArray[1];
 58
 59         return resultArray;
 60      }
 61
 62     /**
 63      * 数组操作类
 64      */
 65     function Arrays(){
 66
 67     }
 68
 69     /**
 70       * 对整型数组进行升序排序
 71       *
 72       * @arguments array 整型数组
 73       *
 74       * @returns 排序后的数组
 75       */
 76      Arrays.sortAsc = function (array){
 77          for(var i  = 0;i < array.length;i++){
 78            for(var x = i;x < array.length;x++){
 79               if(array[i] > array[x]){
 80                  var temp = array[x];
 81                  array[x] = array[i];
 82                  array[i] = temp;
 83               }
 84            }
 85          }
 86         return array;
 87      }
 88
 89      /**
 90       * 将字符串数组转换为整型数组
 91       *
 92       * @arguments strArray 字符串数组
 93       *
 94       * @returns 整型数组
 95       */
 96      Arrays.toNumArray = function (strArray){
 97         var numArray = new Array(strArray.length);
 98         for(var i = 0;i < strArray.length;i++){
 99             numArray[i] = Number(strArray[i]);
100         }
101         return numArray;
102      }
103    </script>
104  </body>
105 </html>
时间: 2024-12-28 16:03:37

如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六的相关文章

iOS7中计算UILabel中字符串的高度

iOS7中出现了新的方法计算UILabel中根据给定的Font以及str计算UILabel的frameSize的方法.本人提供category如下: UILabel+StringFrame.h ////  UILabel+StringFrame.h//  LabelHeight////  Copyright (c) 2014年 Y.X. All rights reserved.//#import <UIKit/UIKit.h>@interface UILabel (StringFrame)- 

unity中计算ugui中Text控件的所需长度

背景是这样的,我在unity中需要在我按下某个按键的时候,然后显示出被射线碰撞到的物体的信息.物体的信息之前已经整理好成txt文本了.读取一下就可以了.那么这时候就有一个问题,因为每个物体的介绍信息不是一样的长度,那么如果当text控件里面文字的长度超过显示的长度时,超过部分就不再显示.那么这该怎么办. 我是通过去便利txt文本中的所有文字和符号,然后将所有换行符也就是/n的个数记录下来,然后计算一下对应字体大小一行有几个字,比如我的是18号字体,那么一行可以写30个字,然后计算一下txt文本中

如何在JS中应用正则表达式

背景:在之前的随笔中写过C#中如何使用正则表达式,这篇随笔主要讲如何在js中应用正则表达式 如下代码: 1 $("#zhengze").click(function () { 2 var tmp = "我是中国人" + '\n' + "我来自beijing"; 3 //var pattern = /[\n]/; 4 //tmp = tmp.replace(pattern, " "); 5 alert(tmp); 6 }); 当

js/java中计算年龄

js中计算年龄  /**  * 将生日转换成年龄  */  function birthDayToAge(){  var aDate=new Date();  var thisYear = aDate.getFullYear();  var thisMonth = aDate.getMonth()+1;  var thisDay = aDate.getDate();  var currentDate = thisYear+"-"+thisMonth+"-"+this

关于select中操作,以及js前台计算,span简单操作

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset =utf-8"> <title>js获取数据</title> </head> <body> <span id="s1">111</span><br

【翻译】在Ext JS和Sencha Touch中创建自定义布局

原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置,因而,不需要手动去管理那些碎片.Ext JS与Sencha Touch的布局类有许多相似之处,最近在 Ivan Jouikov的这篇博文中对他们进行了详细的分析. 虽然是这样,但很多Ext JS和Sencha Touch开发人员可能永远都不会去了解布局系统的机制原理.Sencha框架已经提供了最常

Js中去除数组中重复元素的4种方法

今天工作遇到此问题,尝试多个方法不尽人意,故此写个博客来总结一下如何在js中去除重复元素. 方法1:         Array.prototype.method1 = function(){             var arr[];    //定义一个临时数组             for(var i = 0; i < this.length; i++){    //循环遍历当前数组                 //判断当前数组下标为i的元素是否已经保存到临时数组          

Chart.js在Laravel项目中的应用

本文为转载,原文:Chart.js在Laravel项目中的应用 介绍 Chart.js是一个HTML5图表库,使用canvas元素来展示各式各样的客户端图表,支持折线图.柱形图.雷达图.饼图.环形图等, 本文将介绍如何在laravel项目中使用chart.js 安装 可以通过以下命令在 npm 或 bower 中来安装chart.js. npm install chart.js --save bower install chart.js --save 可以在你的项目中使用 CDN link. h

【vue】如何在 Vue-cli 创建的项目中引入 iView

根据vue项目的搭建教程,以下记录如何在Vue-cli创建的项目中引入iView. 1)iView的安装,在项目下使用 npm 安装iView cnpm install  iview  --save 2)在 webpack 入口页面 main.js   (E:\managerSys\manager-sys\src\main.js)中 添加 如下配置: import iView from 'iview'; // 导入组件库import 'iview/dist/styles/iview.css';