A Pen by rafaelcastrocouto on CodePen.
-
-
Save leestott/3b13154df9d89d1f4d080bf3b8e00e83 to your computer and use it in GitHub Desktop.
Rock paper scissors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<span id="pc" class="hidden">✊</span> | |
<div id="player"> | |
<span id="rock">✊</span> | |
<span id="paper">🤚</span> | |
<span id="scissor">✌️</span> | |
</div> | |
<p class="hidden">You Win</p> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"title": "Rock paper scissors", | |
"description": "Rock paper scissors", | |
"steps": [ | |
{ | |
"file": "index.html", | |
"line": 5, | |
"description": "These elements define the game \"hands\" using simple emoji characters. Try changing them and watch it take effect immediately." | |
}, | |
{ | |
"file": "style.css", | |
"line": 6, | |
"description": "This is the game board's background color. Click on the color swatch to bring up a picker that you can easily explore." | |
}, | |
{ | |
"file": "script.js", | |
"line": 33, | |
"description": "This sets the message when you win the game. Change it and make sure you get the credit you so glaringly deserve." | |
} | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const spans = document.querySelectorAll('#player span'); | |
const pc = document.querySelector('#pc'); | |
const msg = document.querySelector('p'); | |
var target; | |
const clicked = function (event) { | |
if (!document.body.classList.contains('noclick')) { | |
document.body.classList.add('noclick'); | |
target = event.target; | |
for (var span of spans) { | |
if (target !== span) { | |
span.classList.add('hidden'); | |
} | |
} | |
var random = parseInt(Math.random() * 3); | |
pc.textContent = spans[random].textContent; | |
pc.dataset.id = spans[random].id; | |
pc.classList.remove('hidden'); | |
setTimeout(results, 250); | |
} | |
}; | |
const results = function () { | |
if (target.id == pc.dataset.id) { | |
msg.textContent = 'Draw'; | |
} | |
if (target.id == 'rock' && pc.dataset.id == 'paper' || | |
target.id == 'paper' && pc.dataset.id == 'scissor'|| | |
target.id == 'scissor' && pc.dataset.id == 'rock') { | |
msg.textContent = 'You lost'; | |
} | |
if (target.id == 'rock' && pc.dataset.id == 'scissor' || | |
target.id == 'paper' && pc.dataset.id == 'rock' || | |
target.id == 'scissor' && pc.dataset.id == 'paper') { | |
msg.textContent = 'You Win!'; | |
} | |
msg.classList.remove('hidden'); | |
setTimeout(reset, 1500); | |
} | |
const reset = function () { | |
for (var span of spans) { | |
span.classList.remove('hidden'); | |
} | |
msg.classList.add('hidden'); | |
pc.classList.add('hidden'); | |
setTimeout(function () { | |
document.body.classList.remove('noclick'); | |
}, 500); | |
} | |
for (var span of spans) { | |
span.addEventListener('click', clicked); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body { | |
display: grid; | |
place-content: center; | |
height: 100vh; | |
font-size: 80px; | |
background: rgb(29, 212, 29); | |
overflow: hidden; | |
min-width: 300px; | |
user-select: none; | |
} | |
#player span { | |
cursor: pointer; | |
transition: opacity 0.5s; | |
opacity: 1; | |
color: white; | |
} | |
#player span.hidden { | |
opacity: 0; | |
} | |
#pc { | |
position: absolute; | |
top: 40px; | |
left: calc(50vw - 40px); | |
transform: rotate(180deg); | |
transition: top 0.5s; | |
} | |
#pc.hidden { | |
top: -120px; | |
} | |
p { | |
position: absolute; | |
width: 100vw; | |
text-align: center; | |
bottom: 40px; | |
margin: 0; | |
color: #fff; | |
transition: bottom 0.5s; | |
} | |
p.hidden { | |
bottom: -200px; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment