当前位置:首页 > JavaScript

程序实现斗牛js

2026-03-16 04:09:25JavaScript

斗牛游戏规则简介

斗牛是一种流行的扑克游戏,玩家需要将手中的五张牌分成三张和两张两组,三张牌之和为10的倍数(即“有牛”),剩余两张牌之和的个位数即为牛数(如牛7、牛8等)。若无法分成10的倍数,则为“无牛”。

核心算法实现

以下是一个用JavaScript实现斗牛游戏逻辑的代码示例,包含发牌、计算牛数及判断胜负的功能:

程序实现斗牛js

// 生成一副扑克牌(不含大小王)
function createDeck() {
    const suits = ['♥', '♦', '♠', '♣'];
    const values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
    const deck = [];
    for (const suit of suits) {
        for (const value of values) {
            deck.push({ suit, value });
        }
    }
    return deck;
}

// 洗牌函数
function shuffleDeck(deck) {
    for (let i = deck.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [deck[i], deck[j]] = [deck[j], deck[i]];
    }
    return deck;
}

// 计算牌的点数(A为1,JQK为10)
function getCardValue(card) {
    const value = card.value;
    if (['J', 'Q', 'K'].includes(value)) return 10;
    if (value === 'A') return 1;
    return parseInt(value);
}

// 判断牛数
function calculateBull(cards) {
    const values = cards.map(getCardValue);
    // 遍历所有三张牌的组合
    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 = values[i] + values[j] + values[k];
                if (sum % 10 === 0) {
                    const remainingSum = values.reduce((acc, val, idx) => 
                        idx !== i && idx !== j && idx !== k ? acc + val : acc, 0);
                    const bull = remainingSum % 10;
                    return bull === 0 ? '牛牛' : `牛${bull}`;
                }
            }
        }
    }
    return '无牛';
}

// 示例使用
const deck = shuffleDeck(createDeck());
const playerCards = deck.slice(0, 5);
console.log('玩家牌:', playerCards);
console.log('结果:', calculateBull(playerCards));

功能扩展建议

  1. 多人游戏逻辑:可扩展为支持多个玩家比较牛数大小,牛数相同则比较最大单牌。
  2. 特殊牌型:增加“五花牛”(全为JQK)、“炸弹牛”(四张相同点数)等特殊牌型判断。
  3. 界面交互:使用HTML/CSS构建可视化界面,展示发牌过程和结果。

注意事项

  • 牌值计算时需注意A为1点,J/Q/K为10点。
  • 若三张牌之和为10的倍数且剩余两张之和也为10的倍数,称为“牛牛”。
  • 无牛时需比较所有五张牌中最大的单牌决定胜负。

该实现覆盖了斗牛的核心规则,可根据实际需求进一步扩展交互或多人对战功能。

标签: 程序js
分享给朋友:

相关文章

vue实现cs程序

vue实现cs程序

Vue 实现 CS(客户端-服务器)程序 Vue 本身是一个前端框架,主要用于构建用户界面。要实现一个完整的 CS(客户端-服务器)程序,需要结合后端技术。以下是实现的基本思路和步骤: 前端部分(V…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js 实现分页

js 实现分页

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

js实现抽奖

js实现抽奖

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

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…