Array.shift Функция удаления элемента с случайным индексомJavascript

Форум по Javascript
Ответить
Anonymous
 Array.shift Функция удаления элемента с случайным индексом

Сообщение Anonymous »

Я пытаюсь создать игру в блэкджек. Это перетасовка и работающая часть игры. Массив 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 из колоды, он удаляет объект при случайном индексе и добавляет его в пользовательскую руку /

Код: Выделить всё

dealerHand
массивы.
перетасованная колода
после выполнения функции сделки

Подробнее здесь: https://stackoverflow.com/questions/795 ... ndom-index
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»