Top.Mail.Ru
Ответы

Ошибка в коде JavaScript

всем здравствуйте я написал код загрузил его нажал ран и выдаёт ошибку исправляю но всё равно подскажите где она

// Evaluate
      let payout = 0;
      // three of a kind
      if(result[0]===result[1] && result[1]===result[2]){
        // special for 7
        payout = (result[0]==='7️⃣') ? bet*10 : bet*5;
        slotMsg.textContent = Три ${result[0]}! Вы выиграли ${payout} фишек.;
      } else if(result[0]===result[1] || result[1]===result[2] || result[0]===result[2]){
        payout = bet*1.5; // pair
        payout = Math.floor(payout);
        slotMsg.textContent = Пара! Вы выиграли ${payout} фишек.;
      } else {
        slotMsg.textContent = 'Увы, проигрыш.';
      }
      if(payout>0){ chips += payout; save(); logВыигрыш в слотах: ${payout}); } else { logПроигрыш в слотах: ${bet}); }
    }
  }
  document.getElementById('spin').onclick = spinReels;

  // CARDS (simplified Blackjack)
  const deckFactory = ()=>{
    const ranks = ['A','2','3','4','5','6','7','8','9','10','J','Q','K'];
    const suits = ['♣','♦','♥','♠'];
    let deck = [];
    suits.forEach(s=>ranks.forEach(r=>deck.push(r+s)));
    // shuffle
    for(let i=deck.length-1;i>0;i--){
      const j=Math.floor(Math.random()*(i+1));
      [deck[i],deck[j]]=[deck[j],deck[i]];
    }
    return deck;
  };

  let deck = [], playerHand = [], dealerHand = [], roundActive = false;

  function cardValue(card){
    const r = card.slice(0, -1);
    if(r==='A') return 11;
    if(['J','Q','K'].includes(r)) return 10;
    return Number(r);
  }
  function handValue(hand){
    let sum = 0, aces = 0;
    hand.forEach(c=>{ const v=cardValue(c); sum+=v; if(c.slice(0,-1)==='A') aces++; });
    while(sum>21 && aces>0){ sum-=10; aces--; }
    return sum;
  }

  function resetRound(){
    deck = deckFactory();
    playerHand=[]; dealerHand=[]; roundActive=false;
    playerCardsEl.innerHTML=''; dealerCardsEl.innerHTML=''; playerValEl.textContent='0'; dealerValEl.textContent='0';
    document.getElementById('hit').classList.add('hidden');
    document.getElementById('stand').classList.add('hidden');
    cardMsg.textContent='';
  }

  function deal(){
    const bet = Math.floor(Math.max(1, Number(cardBet.value)));
    if(bet>chips){ cardMsg.textContent='Недостаточно фишек.'; return; }
    chips -= bet; save();
    logСтавка в карты: ${bet});
    deck = deckFactory();
    playerHand = [deck.pop(), deck.pop()];
    dealerHand = [deck.pop(), deck.pop()];
    roundActive = true;
    renderHands(true);
    // check blackjack
    const pv = handValue(playerHand), dv = handValue(dealerHand);
    if(pv===21){
      // player blackjack pays 3:2
      const payout = Math.floor(bet*2.5);
      chips += payout; save();
      cardMsg.textContent = Блэкджек! Вы выиграли ${payout} фишек.;
      logБлэкджек: выигрыш ${payout});
      roundActive=false;
      document.getElementById('hit').classList.add('hidden');
      document.getElementById('stand').classList.add('hidden');
    } else {
      document.getElementById('hit').classList.remove('hidden');
      document.getElementById('stand').classList.remove('hidden');
      cardMsg.textContent = 'Игра начата. Хит или Стоп?';
      // store current bet for resolution
      document.getElementById('deal').dataset.currentBet = bet;
    }
  }

  function renderHands(hideDealerFirst){
    playerCardsEl.textContent = playerHand.join(' ');
    playerValEl.textContent = handValue(playerHand);
    if(hideDealerFirst){
      dealerCardsEl.textContent = dealerHand[0] + ' ??';
      dealerValEl.textContent = '?';
    } else {
      dealerCardsEl.textContent = dealerHand.join(' ');
      dealerValEl.textContent = handValue(dealerHand);
    }
  }

  function hit(){
    if(!roundAct

ive) return;
    playerHand.push(deck.pop());
    renderHands(true);
    const pv = handValue(playerHand);
    if(pv>21){
      cardMsg.textContent = Перебор ${pv}. Проигрыш.;
      logКарты: перебор игрока ${pv});
      roundActive=false;
      document.getElementById('hit').classList.add('hidden');
      document.getElementById('stand').classList.add('hidden');
    }
  }

  function stand(){
    if(!roundActive) return;
    // dealer plays
    while(handValue(dealerHand) < 17) dealerHand.push(deck.pop());
    const pv = handValue(playerHand), dv = handValue(dealerHand);
    const bet = Number(document.getElementById('deal').dataset.currentBet || 0);
    renderHands(false);
    let message='';
    if(dv>21 || pv>dv){
      // player wins 1:1
      chips += bet*2; // return + win
      save();
      message = Вы выиграли! ${bet*1} фишек.;
      logКарты: игрок ${pv} vs дилер ${dv} — выигрыш ${bet});
    } else if(pv===dv){
      // push: return bet
      chips += bet;
      save();
      message = 'Ничья. Ставка возвращена.';
      logКарты: ничья ${pv});
    } else {
      message = Дилер выиграл (${dv}). Вы проиграли.;
      logКарты: дилер ${dv} побеждает игрока ${pv});
    }
    cardMsg.textContent = message;
    roundActive=false;
    document.getElementById('hit').classList.add('hidden');
    document.getElementById('stand').classList.add('hidden');
  }

  document.getElementById('deal').onclick = ()=>{ resetRound(); deal(); };
  document.getElementById('hit').onclick = hit;
  document.getElementById('stand').onclick = stand;

  // init
  resetRound();
  log('Казино готово. Удачи!');
})();
</script>
</body>
</html>

По дате
По рейтингу
Аватар пользователя
blueberry_3185Знаток
4мес

Скинь сам код или скриншот ошибки из консоли браузера, а то непонятно, в чем именно проблема. Обычно дело в забытой точке с запятой или лишней скобке, проверь внимательно синтаксис.

Аватар пользователя
oak_8168Ученик
4мес

Приложи сам код или хотя бы текст ошибки из консоли, а то так сложно гадать. Скорее всего, где-то забыл скобку или точку с запятой, либо обращаешься к переменной, которую еще не объявил. Посмотри внимательно на номер строки в браузере, там обычно пишется причина.

Аватар пользователя
artvpnТролль
4мес

У тебя ошибка из-за строк с ${...} — ты используешь шаблонные строки, но забыл обернуть их в обратные кавычки.

Аватар пользователя
alex_zero_emmisionТролль
4мес
Изменено

.



Видео по теме