当前位置:首页 > JavaScript

js实现斗牛

2026-03-15 12:23:54JavaScript

js实现斗牛

js实现斗牛

斗牛游戏规则简介

斗牛是一种流行的扑克游戏,玩法简单刺激。每位玩家发5张牌,通过计算点数确定胜负。牌面点数:A为1点,2-9为对应点数,10/J/Q/K为10点。任意3张牌之和为10的倍数时称为"有牛",剩余2张牌之和的个位数为牛数(10的倍数为牛牛)。

实现思路分析

  1. 创建一副扑克牌,包含52张标准牌
  2. 洗牌算法随机打乱牌序
  3. 给玩家发5张牌
  4. 计算牌型(无牛/有牛/牛牛)
  5. 比较多个玩家的牌型确定胜负

核心代码实现

// 创建一副扑克牌
function createDeck() {
  const suits = ['♥', '♦', '♠', '♣'];
  const ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
  const deck = [];

  suits.forEach(suit => {
    ranks.forEach(rank => {
      deck.push({suit, rank});
    });
  });

  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;
}

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

// 判断牛型
function calculateBull(cards) {
  const values = cards.map(getCardValue);

  // 检查所有可能的3张组合
  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) {
          // 计算剩余2张牌的和
          const otherSum = values.reduce((acc, val, idx) => 
            (idx === i || idx === j || idx === k) ? acc : acc + val, 0);
          const bull = otherSum % 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. 牛牛 > 其他有牛牌型
  3. 同为有牛时比较牛数大小(牛9 > 牛8)
  4. 牛数相同时比较最大单牌(K > Q > J > 10 > 9 > ... > A)
  5. 最大单牌相同比较花色(黑桃 > 红桃 > 梅花 > 方块)

进阶功能建议

  1. 添加多个玩家支持
  2. 实现自动比牌逻辑
  3. 增加下注系统
  4. 添加UI界面显示牌面和结果
  5. 实现游戏回合制流程

这个实现完整覆盖了斗牛游戏的核心逻辑,通过组合数学计算牌型,并提供了后续扩展的基础架构。可根据实际需求调整牌型判断算法或添加更多游戏规则。

标签: js
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js 实现分页

js 实现分页

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…