当前位置:首页 > JavaScript

js实现斗牛

2026-02-02 12:17:56JavaScript

实现斗牛游戏的JavaScript代码

斗牛是一种流行的扑克游戏,玩家需要将手中的五张牌分成三张和两张两组,三张牌的点数之和必须是10的倍数(称为"有牛"),剩余两张牌的点数之和的个位数即为"牛几"(如7点称为"牛七")。若无法分成这样的组合,则为"无牛"。

以下是一个完整的JavaScript实现:

// 定义牌型
const cardValues = {
    'A': 1, '2': 2, '3': 3, '4': 4, '5': 5,
    '6': 6, '7': 7, '8': 8, '9': 9, '10': 10,
    'J': 10, 'Q': 10, 'K': 10
};

// 计算牛几
function calculateBull(cards) {
    // 转换牌为点数
    const points = cards.map(card => cardValues[card]);

    // 检查所有可能的三张组合
    for (let i = 0; i < 3; i++) {
        for (let j = i + 1; j < 4; j++) {
            for (let k = j + 1; k < 5; k++) {
                const sum = points[i] + points[j] + points[k];
                if (sum % 10 === 0) {
                    // 计算剩余两张牌的点数和
                    const remainingSum = points.reduce((total, val, index) => 
                        (index === i || index === j || index === k) ? total : total + val, 0);
                    const bull = remainingSum % 10;
                    return bull === 0 ? '牛牛' : `牛${bull}`;
                }
            }
        }
    }

    return '无牛';
}

// 示例使用
const hand1 = ['A', '2', '3', '4', '5'];  // 无牛
const hand2 = ['J', 'Q', 'K', '10', 'A']; // 牛牛
const hand3 = ['5', '5', '10', 'J', '3']; // 牛三

console.log(calculateBull(hand1)); // 输出: 无牛
console.log(calculateBull(hand2)); // 输出: 牛牛
console.log(calculateBull(hand3)); // 输出: 牛三

实现说明

  1. 牌值定义:使用对象cardValues定义了每张牌对应的点数,A为1点,J/Q/K为10点,其他牌按面值计算。

  2. 核心算法:通过三重循环检查所有可能的三张牌组合,判断是否存在三张牌点数和为10的倍数。

  3. 结果计算:找到符合条件的组合后,计算剩余两张牌的点数和,取个位数作为"牛几"的结果。若和为10的倍数则返回"牛牛"。

  4. 无牛情况:若所有三张牌组合都无法满足条件,则返回"无牛"。

扩展功能

可以添加以下功能增强游戏体验:

  • 洗牌和发牌功能
  • 多个玩家比较大小的逻辑
  • 图形界面展示

这个实现提供了斗牛游戏的核心算法,可以直接在浏览器或Node.js环境中运行。

js实现斗牛

标签: js
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Ja…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…