当前位置:首页 > 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. 无牛情况:若所有三张牌组合都无法满足条件,则返回"无牛"。

扩展功能

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

js实现斗牛

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

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

标签: js
分享给朋友:

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…