繁体   English   中英

洗牌/显示牌到二十一点游戏(Javascript)

[英]Shuffle / display cards to a blackjack game (Javascript)

你知道为什么“card2”会随机将一个对象放入数组中吗? 它应该始终将一个对象放入数组中。

 const cards=[ { card: '&#127137', value: '1' }, { card: '&#127138', value: '2' }, { card: '&#127139', value: '3' }, { card: '&#127140', value: '4' }, { card: '&#127141', value: '5' }, { card: '&#127142', value: '6' }, { card: '&#127143', value: '7' }, { card: '&#127144', value: '8' }, { card: '&#127145', value: '9' }, { card: '&#127146', value: '10' } ]; var deck = []; shuffleDeck = () =>{ var tempDeck = [...cards]; var card1 = [0]; var card2 = [0]; while(0 !== tempDeck.length) { var randomIndex = Math.floor(Math.random() * tempDeck.length); card1 = tempDeck.splice(randomIndex, 1); card2 = tempDeck.splice(randomIndex, 1); deck = [...card1, ...card2]; } } shuffleDeck(); for(var i = 0; i <= deck.length; i++){ console.log(deck[i]); }

我想这个问题应该更清楚......但是运行你的应该并认为代码应该洗牌我猜你的错误是在那行deck = [...card1, ...card2]; 因为你在一个循环中,你只是在你的新牌组中放了 2 张牌,所以在下一次交互中他们会忽略最后的值并覆盖它,你应该使用deck.push在牌deck.push中添加新牌。

 const cards=[ { card: '&#127137', value: '1' }, { card: '&#127138', value: '2' }, { card: '&#127139', value: '3' }, { card: '&#127140', value: '4' }, { card: '&#127141', value: '5' }, { card: '&#127142', value: '6' }, { card: '&#127143', value: '7' }, { card: '&#127144', value: '8' }, { card: '&#127145', value: '9' }, { card: '&#127146', value: '10' } ]; var deck = []; shuffleDeck = () => { var tempDeck = [...cards]; var card1 = [0]; var card2 = [0]; while(0 !== tempDeck.length) { var randomIndex = Math.floor(Math.random() * tempDeck.length); card1 = tempDeck.splice(randomIndex, 1); card2 = tempDeck.splice(randomIndex, 1); deck.push(...card1, ...card2); } } shuffleDeck(); for(var i = 0; i < deck.length; i++){ console.log(deck[i]); }

您需要在代码中修复两件事:

  1. while设置randomIndex了一次,并且用它来botth, card1card2 ,但是当你设置card1 ,它使用splice和删除索引,所以卡2是不确定的。
    FIX:设置randomIndex设置后再次card1

  2. for循环中,你需要i < deck.length而不是i <= deck.length ,这将避免未定义的值,因为当i等于deck.length时它将是2,而deck 没有索引2,它只有索引 0 和 1。

 const cards = [{card: '&#127137', value: '1'}, {card: '&#127138', value: '2'}, {card: '&#127139', value: '3'}, {card: '&#127140', value: '4'}, {card: '&#127141', value: '5'}, {card: '&#127142', value: '6'}, {card: '&#127143', value: '7'}, {card: '&#127144', value: '8'}, {card: '&#127145', value: '9'}, {card: '&#127146', value: '10'}]; var deck = []; shuffleDeck = () =>{ var tempDeck = [...cards]; var card1 = [0]; var card2 = [0]; while(0 !== tempDeck.length) { var randomIndex = Math.floor(Math.random() * tempDeck.length); card1 = tempDeck.splice(randomIndex, 1); randomIndex = Math.floor(Math.random() * tempDeck.length); card2 = tempDeck.splice(randomIndex, 1); deck = [...card1, ...card2]; } } shuffleDeck(); for(var i = 0; i < deck.length; i++){ console.log(deck[i]); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM