Задать вопрос
@spoT1

Блекджек на js?

let arr = [6,7,8,9,10,11]
function randomInteger(min, max) {
    // случайное число от min до (max+1)
    let rand = min + Math.random() * (max + 1 - min);
    return Math.floor(rand);
  }
 

  
  

  function blackjack(){
    let sum = 0;
    let x = arr[randomInteger(1,6)]
    alert(`Ваше число на данный момент${sum= sum + x}`)
    let conf = confirm('Возьмете еще?')
    if(conf == true){
        blackjack()
    }
    if(sum>21){
        alert(`Вы проиграли ваше число ${sum}`);
        return 
    }
    if(conf == false){
        alert(`Вы спасовали ваше число ${sum}`)
    }
  }
blackjack()

Где в моем коде ошибка? Моя идея сделать через рекурсию,но знаний по ней мало
  • Вопрос задан
  • 350 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
1. Массивы индексируются с 0 а не с 1
randomInteger(1,6)


2. Проверка на проигрыш логически должна быть раньше чем запрос новой карты

3. Рекурсия имеет ограниченную вложенность, хотя если исправить ошибку №2, то Вы в нее не упретесь, но тем не менее не зачем использовать рекурсию там, где легко можно обойтись циклом:
const cards = [6, 7, 8, 9, 10, 11];

function randomArrayElement(array) {
  return array[Math.floor(Math.random() * array.length)];
}

function blackjack() {
  let sum = 0;
  while (sum < 22) {
    sum += randomArrayElement(cards);
    alert(`Ваше число на данный момент ${sum}`);
    if (!confirm('Возьмете еще?')) {
      alert(`Вы спасовали ваше число ${sum}`);
      return;
    }
  }
  alert(`Вы проиграли ваше число ${sum}`);
}

blackjack();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы