Я пытаюсь создать игру в блэкджек. Это перетасовка и работающая часть игры. Массив Deck содержит все 52 карты колоды (будут добавлены костюмы для карт).
Этот массив передается в функцию Shuffle , которая использует алгоритм Shuffle Fisher Yates.
let deck = [{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1}]
let userHand = []
let dealerHand = []
function shuffle(array) {
let currentIndex = array.length;
// While there remain elements to shuffle...
while (currentIndex != 0) {
// Pick a remaining element...
let randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// And swap it with the current element.
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]];
}
}
shuffle(deck)
console.log(deck)
function deal(){
userHand.push(deck.shift()); // Removes and gives first card
dealerHand.push(deck.shift()); // Removes and gives second card
userHand.push(deck.shift()); // Removes and gives third card
dealerHand.push(deck.shift()); // Removes and gives fourth card
console.log(userHand, dealerHand)
console.log(deck)
}
deal()
Функция Deal - это место, где у меня возникают проблемы. Цель состоит в том, чтобы карта в индексе [0] перетасованной колоды, которая должна быть выведена и добавлена в массив пользователя . Затем следующая карта в индексе [0] будет добавлено в массив Dierhand , пока пользователь и дилер не получит по 2 карты.
Вместо этого этого не происходит. Вместо deck.shift () Удаление индекса [0] obj из колоды, он удаляет объект при случайном индексе и добавляет его в пользовательскую руку /
Я пытаюсь создать игру в блэкджек. Это перетасовка и работающая часть игры. Массив Deck содержит все 52 карты колоды (будут добавлены костюмы для карт). Этот массив передается в функцию Shuffle , которая использует алгоритм Shuffle Fisher Yates. [code]let deck = [{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1}] let userHand = [] let dealerHand = [] function shuffle(array) { let currentIndex = array.length;
// While there remain elements to shuffle... while (currentIndex != 0) {
// Pick a remaining element... let randomIndex = Math.floor(Math.random() * currentIndex); currentIndex--;
// And swap it with the current element. [array[currentIndex], array[randomIndex]] = [ array[randomIndex], array[currentIndex]]; } }
shuffle(deck) console.log(deck)
function deal(){ userHand.push(deck.shift()); // Removes and gives first card dealerHand.push(deck.shift()); // Removes and gives second card userHand.push(deck.shift()); // Removes and gives third card dealerHand.push(deck.shift()); // Removes and gives fourth card console.log(userHand, dealerHand) console.log(deck) } deal() [/code] Функция Deal - это место, где у меня возникают проблемы. Цель состоит в том, чтобы карта в индексе [0] перетасованной колоды, которая должна быть выведена и добавлена в массив пользователя . Затем следующая карта в индексе [0] будет добавлено в массив Dierhand , пока пользователь и дилер не получит по 2 карты. Вместо этого этого не происходит. Вместо deck.shift () Удаление индекса [0] obj из колоды, он удаляет объект при случайном индексе и добавляет его в пользовательскую руку /[code]dealerHand[/code] массивы. перетасованная колода после выполнения функции сделки