JavaScript 洗牌一副牌程序

要理解此示例,您应了解以下 JavaScript 编程 主题


示例:洗牌

// program to shuffle the deck of cards

// declare card elements
const suits = ["Spades", "Diamonds", "Club", "Heart"];
const values = [
  "Ace",
  "2",
  "3",
  "4",
  "5",
  "6",
  "7",
  "8",
  "9",
  "10",
  "Jack",
  "Queen",
  "King",
];

// empty array to contain cards
let deck = [];

// create a deck of cards
for (let i = 0; i < suits.length; i++) {
    for (let x = 0; x < values.length; x++) {
        let card = { Value: values[x], Suit: suits[i] };
        deck.push(card);
    }
}

// shuffle the cards
for (let i = deck.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * i);
    let temp = deck[i];
    deck[i] = deck[j];
    deck[j] = temp;
}

console.log('The first five cards are:');

// display 5 results
for (let i = 0; i < 5; i++) {
    console.log(`${deck[i].Value} of ${deck[i].Suit}`)
}

输出

The first five cards are:
4 of Club
5 of Diamonds
Jack of Diamonds
2 of Club
4 of Spades

在上面的程序中,suitsvalues 变量包含了一张牌的元素。

使用嵌套的 for 循环创建一副牌。

  • 我们需要创建一副牌,包含所有 suits 和所有的 values。因此,第一个 for 循环遍历所有 suits,第二个 for 循环遍历 values。然后,创建元素并将其添加到 deck 数组中。
  • 数组元素存储为对象,如下所示:
    [{Value: "Ace", Suit: "Spades"},{Value: "2", Suit: "Spades"}.....]

第二个 for 循环用于洗牌。

  • Math.random() 生成一个随机数。
  • Math.floor() 通过将值减小到最接近的整数值来返回数字。
  • 生成一个介于 051 之间的随机数,并交换两个牌的位置。

第三个 for 循环用于显示新牌堆中的前五张牌。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战