Web/JavaScript

(JavaScript) Pig Game Logic

haramang 2021. 10. 30. 20:46

let scores, currentScore, activePlayer, playing;

 

// Starting conditions

const init = function () {

  currentScore = 0;

  activePlayer = 0;

  playing = true;

  scores = [0, 0];

 

  player0El.classList.add('player--active');

  player1El.classList.remove('player--active');

  player0El.classList.remove('player--winner');

  player1El.classList.remove('player--winner');

  diceEl.classList.add('hidden');

 

  score0El.textContent = currentScore;

  score1El.textContent = currentScore;

  current0El.textContent = currentScore;

  current1El.textContent = currentScore;

};

 

const switchPlayer = function () {

  currentScore = 0;

  document.getElementById(`current--${activePlayer}`).textContent =

    currentScore;

 

  activePlayer = activePlayer === 0 ? 1 : 0;

  player0El.classList.toggle('player--active');

  player1El.classList.toggle('player--active');

};

 

init();

 

// Rolling dice functionality

btnRoll.addEventListener('click', function () {

  if (playing) {

    // 1. Generating a random dice roll

    const dice = Math.trunc(Math.random() * 6) + 1;

 

    // 2. Display dice

    diceEl.classList.remove('hidden');

    diceEl.src = `dice-${dice}.png`;

 

    // 3. Check for rolled 1

    if (dice !== 1) {

      // Add dice to current score

      currentScore += dice;

      document.getElementById(`current--${activePlayer}`).textContent =

        currentScore;

    } else {

      // Switch to next player

      switchPlayer();

    }

  }

});

 

btnHold.addEventListener('click', function () {

  if (playing) {

    // 1. Add current score to active player's score

    scores[activePlayer] += currentScore;

    document.getElementById(`score--${activePlayer}`).textContent =

      scores[activePlayer];

 

    // 2. Check if player's scre is >= 100

    if (scores[activePlayer] >= 10) {

      // Finish game

      playing = false;

      document

        .querySelector(`.player--${activePlayer}`)

        .classList.add('player--winner');

      document

        .querySelector(`.player--${activePlayer}`)

        .classList.remove('player--active');

 

      diceEl.classList.add('hidden');

    } else {

      // Switch next player

      switchPlayer();

    }

  }

});

 

btnNew.addEventListener('click', init);