跳到主要内容

JavaScript程序洗牌

要理解这个示例,你应该具备以下 JavaScript 编程 主题的知识:

示例:洗牌(纸牌)

// 程序用于洗牌

// 声明纸牌元素
const suits = ["黑桃", "方块", "梅花", "红心"];
const values = [
"A",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"J",
"Q",
"K",
];

// 用于存放纸牌的空数组
let deck = [];

// 创建一副纸牌
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);
}
}

// 洗牌
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("前五张牌是:");

// 显示前 5 张牌
for (let i = 0; i < 5; i++) {
console.log(`${deck[i].Value}${deck[i].Suit}`);
}

输出

前五张牌是:
4 的 梅花
5 的 方块
J 的 方块
2 的 梅花
4 的 黑桃

在上述程序中,suits 和 values 变量包含了一张纸牌的元素。

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

  • 我们需要创建一副包含所有花色及其对应点数的纸牌。因此,第一个 for 循环遍历所有花色,第二个 for 循环遍历所有点数。然后,元素被创建并添加到 deck 数组中。
  • 数组元素以对象的形式存储:
[{Value: "A", Suit: "黑桃"}, {Value: "2", Suit: "黑桃"}.....]

第二个 for 循环用于洗牌。

  • Math.random() 生成一个随机数。
  • Math.floor() 函数将数值减小到最近的整数值。
  • 051 之间生成一个随机数,并交换两张牌的位置。

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