当前位置:首页 > JavaScript

程序实现斗牛js

2026-03-16 04:09:25JavaScript

程序实现斗牛js

斗牛游戏规则简介

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

程序实现斗牛js

核心算法实现

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

// 生成一副扑克牌(不含大小王)
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
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

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

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…