【问题标题】:Making a JS card game制作一个JS卡牌游戏
【发布时间】:2020-08-11 00:56:59
【问题描述】:

正如标题所示,我正在尝试使用标准的 52 张卡片组制作浏览器纸牌游戏。我试图不使用其他人的代码并尽可能多地自己做。我对我现在需要做的事情做了一个粗略的计划。

  1. 制作卡片对象。卡片对象将包含它的数字和花色的值。
  2. 制作一个甲板对象。卡片组包含一组卡片对象,并具有 shuffle 和 deal 功能,它们都可以操作数组。洗牌会重新排列牌,发牌会 pop() 一定数量的牌到玩家的手上。
  3. 制作一个 playerHand 数组。该数组将保存玩家从牌组对象中抽取的卡片对象。
  4. 制作一个 botHand 数组。与 playerHand 相同,但用于对手(机器人)。

我刚开始,已经卡住了。我制作了一个 Card 构造函数,现在正在制作卡片组对象。我的主要问题是如何在甲板对象中创建一个数组,该数组基本上使用了我制作了 52 次的 Card 构造函数。我假设我只是运行一个 for 循环,但不确定语法是否正确。这就是我到目前为止所拥有的,对于我制作游戏的逻辑的任何其他建议将不胜感激。

function Card(value, suit) {
    this.value = value;
    this.suit = suit;
}

var deck = {
    cards: new Array(52),

    shuffle: function() {

    },

    deal: function() {

    }
}

【问题讨论】:

  • for 循环的语法你不确定吗?你试过什么?
  • 我相信你让这件事变得更难了。不要使用 Card 构造函数,只需使用数字 1-52 并为每个范围分配一个花色。例如 1-13 是红心。然后你可以创建一个数字数组并找到一种方法来随机化顺序。我不知道这是否能解决你的问题,因为你可能真的想使用构造函数。
  • 对于for循环,我想我会做这样的事情对吗? for(var i = 0; i

标签: javascript


【解决方案1】:

不确定这是否正是您想要的,但是,您可以这样做:

for (let i = 1; i < 14; i++){
    cards.push(Card(i, 'Spade'));
    cards.push(Card(i, 'Diamond'));
    cards.push(Card(i, 'Clubs'));
    cards.push(Card(i, 'Hearts'));
}

卡片数组将有 52 个卡片对象,按以下顺序排列: 1 of Spades, 1 of Diamonds, 1 of Clubs, 1 of hearts, 2 of Spades, 2 of Diamonds....

【讨论】:

  • 是的,这可以添加到数组中,但我的主要问题是如果有意义的话,我应该把这个 for 循环放在哪里?
  • 你可以把它放在构造函数中,这样每当你创建 Deck 对象的实例时它就会运行
  • 我明白了,这就解释了。我对使用对象真的很陌生,所以我很难考虑它们。谢谢。
  • 没问题!很高兴我能帮上忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
相关资源
最近更新 更多