Reset Button - Rock/Paper/Scissors
Stackoverflow - 55052041
by Lawlesss
HTML
<section class="game">
<div class="score">
<div class="player-score">
<h2>Player</h2>
<p>0</p>
</div>
<div class="computer-score">
<h2>Computer</h2>
<p>0</p>
</div>
</div>
<div class="intro">
<h1>Rock Paper and Scissors</h1>
<button>Let's Play</button>
</div>
<div class="match fadeOut">
<h2 class="winner">Choose an option</h2>
<div class="hands">
<img class="player-hand" src="https://raw.githubusercontent.com/SandroGamrekelashvili/New-folder/master/assets/paper.png" alt="" />
<img class="computer-hand" src="https://raw.githubusercontent.com/SandroGamrekelashvili/New-folder/master/assets/rock.png" alt="" />
</div>
<!--https://raw.githubusercontent.com/SandroGamrekelashvili/New-folder/master/assets/scissors.png-->
<div class="options">
<button class="rock">rock</button>
<button class="paper">paper</button>
<button class="scissors">scissors</button>
</div>
<button class="startOver">Reset</button>
</div>
</section>
CSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
section {
height: 100vh;
background-color: rgb(39, 41, 68);
font-family: sans-serif;
}
.score {
color: rgb(224, 224, 224);
height: 20vh;
display: flex;
justify-content: space-around;
align-items: center;
}
.score h2 {
font-size: 30px;
}
.score p {
text-align: center;
padding: 10px;
font-size: 25px;
}
.intro {
color: rgb(224, 224, 224);
height: 50vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
transition: opacity 0.5s ease;
}
.intro h1 {
font-size: 50px;
}
.intro button,
.match button {
width: 150px;
height: 50px;
background: none;
border: none;
color: rgb(224, 224, 224);
font-size: 20px;
background: rgb(45, 117, 96);
border-radius: 3px;
cursor: pointer;
}
.match {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transition: opacity 0.5s ease 0.5s;
}
.winner {
color: rgb(224, 224, 224);
text-align: center;
font-size: 50px;
}
.hands,
.options {
display: flex;
justify-content: space-around;
align-items: center;
}
.player-hand {
transform: rotateY(180deg);
}
div.fadeOut {
opacity: 0;
pointer-events: none;
}
div.fadeIn {
opacity: 1;
pointer-events: all;
}
@keyframes shakePlayer {
0% {
transform: rotateY(180deg) translateY(0px);
}
15% {
transform: rotateY(180deg) translateY(-50px);
}
25% {
transform: rotateY(180deg) translateY(0px);
}
35% {
transform: rotateY(180deg) translateY(-50px);
}
50% {
transform: rotateY(180deg) translateY(0px);
}
65% {
transform: rotateY(180deg) translateY(-50px);
}
75% {
transform: rotateY(180deg) translateY(0px);
}
85% {
transform: rotateY(180deg) translateY(-50px);
}
100% {
transform: rotateY(180deg) translateY(0px);
}
}
@keyframes shakeComputer {
0% {
transform: translateY(0px);
}
15% {
transform: translateY(-50px);
}
...
JavaScript
const game = () => {
let pScore = 0;
let cScore = 0;
const gameContainer = document.querySelector("section.game");
const playBtn = gameContainer.querySelector(".intro button");
const resetBtn = gameContainer.querySelector("button.startOver");
const introScreen = gameContainer.querySelector(".intro");
const match = gameContainer.querySelector(".match");
const options = gameContainer.querySelectorAll(".options button");
const playerHand = gameContainer.querySelector(".player-hand");
const computerHand = gameContainer.querySelector(".computer-hand");
const hands = gameContainer.querySelectorAll(".hands img");
const playerScore = document.querySelector(".player-score p");
const computerScore = document.querySelector(".computer-score p");
const startGame = () => {
playBtn.addEventListener("click", () => {
introScreen.classList.add("fadeOut");
match.classList.add("fadeIn");
});
resetBtn.addEventListener("click", () => {
playerScore.innerText = '0';
computerScore.innerText = '0';
pScore = cScore = 0;
console.log("rest");
});
};
const playMatch = () => {
hands.forEach(hand => {
hand.addEventListener("animationend", function() {
this.style.animation = "";
});
});
const computerOptions = ["rock", "paper", "scissors"];
options.forEach(option => {
option.addEventListener("click", function() {
const computerNumber = Math.round(Math.random() * 3);
const computerChoice = computerOptions[computerNumber];
setTimeout(() => {
compareHands(this.textContent, computerChoice);
playerHand.src = `https://raw.githubusercontent.com/SandroGamrekelashvili/New-folder/master/assets/${this.textContent}.png`;
computerHand.src = `https://raw.githubusercontent.com/SandroGamrekelashvili/New-folder/master/assets/${computerChoice}.png`;
}, 2000);
playerHand.style.animation = "shakePlayer...