JSFiddle - React, Tailwind, and code Playground
by Copopops
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="style.css" />
<title>Pig Game</title>
</head>
<body>
<main>
<section class="player player--0 player--active">
<h2 class="name" id="name--0">Player 1</h2>
<p class="score" id="score--0">0</p>
<div class="current">
<p class="current-label">Current</p>
<p class="current-score" id="current--0">0</p>
</div>
</section>
<section class="player player--1">
<h2 class="name" id="name--1">Player 2</h2>
<p class="score" id="score--1">0</p>
<div class="current">
<p class="current-label">Current</p>
<p class="current-score" id="current--1">0</p>
</div>
</section>
<img src="dice-5.png" alt="Playing dice" class="dice hidden" />
<button class="btn btn--new">🔄 New game</button>
<button class="btn btn--roll">🎲 Roll dice</button>
<button class="btn btn--hold">📥 Hold</button>
</main>
<script src="script.js"></script>
</body>
</html>
JavaScript
'use strict';
const btnRoll = document.querySelector('.btn--roll');
const btnNew = document.querySelector('.btn--new');
const btnHold = document.querySelector('.btn--hold');
const dice = document.querySelector('.dice');
let player1 = {
totalScore: 0,
currentScore: 0,
totalScoreBox: document.querySelector('#score--0').textContent,
currentScoreBox: document.querySelector('#current--0').textContent
}
let player2 = {
totalScore: 0,
currentScore: 0,
totalScoreBox: document.querySelector('#score--1').textContent,
currentScoreBox: document.querySelector('#current--1').textContent
}
let currentPlayer = player1;
btnRoll.addEventListener('click', () => {
dice.classList.remove('hidden');
rollDice();
})
const rollDice = () => {
let diceNum = Math.trunc(Math.random() * 6) + 1;
switch (diceNum) {
case 1:
dice.src = 'dice-1.png';
resetPlayerScore(currentPlayer);
break;
case 2:
dice.src = 'dice-2.png';
updatePlayerScore(currentPlayer, 2)
break;
case 3:
dice.src = 'dice-3.png';
updatePlayerScore(currentPlayer, 3)
break;
case 4:
dice.src = 'dice-4.png';
updatePlayerScore(currentPlayer, 4)
break;
case 5:
dice.src = 'dice-5.png';
updatePlayerScore(currentPlayer, 5)
break;
case 6:
dice.src = 'dice-6.png';
updatePlayerScore(currentPlayer, 6)
break;
}
}
const updatePlayerScore = (player, value) => {
player.totalScore += value;
player.currentScore += value;
player.currentScoreBox = parseFloat(player.currentScore);
}
const resetPlayerScore = player => {
player.totalScore = 0;
player.currentScore = 0;
}