Photo Pair’s Game using Html, CSS & JavaScript

Hello friends, in today’s blog we are going to make a photo pair game using HTML CSS and JS.

Step 01 :- Create a file in VS code and named it index.html

HTML Code –

<link rel="stylesheet" href="style.css">
<div class="wrapper">
    <h1>pairs Game</h1>
    <h3>Click Card to begins !</h3>
    <p><span id="seconds">00</span>:<span id="tens">00</span></p>
    <p id ="text"></p>
    <div id="container">
    </div>
    </div>
    <script src="script.js"></script>

Step 02 :- Create another file and named it style.css

CSS Code –

body {
    background: #8284e5;
    font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
    height: 100%;
    color: #000000;
    text-align: center;
    }
    h1, h2 {
    font-family: 'Roboto', sans-serif;
    font-weight: 100;
    font-size: 2.6em;
    text-transform: uppercase;
    color: orange;
    }
    h3 {
    font-family: 'Roboto', sans-serif;
    font-weight: 100;
    font-size: 1.4em;
    text-transform: uppercase;
    color: orange;
    }
    #seconds, #tens {
    font-size: 2em;
    }
    button {
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    -khtml-border-radius: 5px;
    background: #82e582;
    color: #fff;
    border: solid 1px #fff;
    text-decoration: none;
    cursor: pointer;
    font-size: 1.2em;
    padding: 18px 10px;
    width: 180px;
    margin: 10px;
    outline: none;
    }
    button:hover {
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
    background: #fff;
    border: solid 1px #fff;
    color: #82d2e5;
    }
    #container {
    width: 630px;
    margin: 10px auto;
    }
    #container:after {
    content: "";
    display: table;
    clear: both;
    }
    [data-view="card"] {
    transform: rotateY(180deg);
    width: 100px;
    height: 140px;
    border: solid 1px #d3cece;
    border-radius: 5px;
    float: left;
    margin: 10px;
    cursor: pointer;
    background: linear-gradient(135deg, #4acdc2 22px, #000000 22px, #000000 24px, transparent 24px, transparent 67px, #000000 67px, #000000 69px, transparent 69px), linear-gradient(225deg, #4acdc2 22px, #000000 22px, #000000 24px, transparent 24px, transparent 67px, #000000 67px, #000000 69px, transparent 69px) 0 64px;
    background-color: #4acdc2;
    background-size: 64px 128px;
    }
    .flipped {
    transition: 0.6s;
    transform-style: preserve-3d;
    position: relative;
    transform: rotateY(0deg);
    }
    .reverse {
    transition: 0.6s;
    transform-style: preserve-3d;
    position: relative;
    transform: rotateY(180deg);
    }
    .correct {
    opacity: 0.5;
    cursor: default;
    transform-style: preserve-3d;
    position: relative;
    transform: rotateY(0deg);
    }
    .correct[data-item="sass"], .flipped[data-item="sass"] {
    background: url("https://cdn.pixabay.com/photo/2018/03/12/12/32/woman-3219507_1280.jpg") left center no-repeat #fff;
    background-size: contain;
    }
    .correct[data-item="gulp"], .flipped[data-item="gulp"] {
    background: url("https://cdn.pixabay.com/photo/2018/01/06/09/25/hijab-3064633_1280.jpg") left center no-repeat #fff;
    background-size: contain;
    }
    .correct[data-item="grunt"], .flipped[data-item="grunt"] {
    background: url("https://cdn.pixabay.com/photo/2019/10/23/08/03/woman-4570763_1280.jpg") left center no-repeat #fff;
    background-size: contain;
    }
    .correct[data-item="git"], .flipped[data-item="git"] {
    background: url("https://cdn.pixabay.com/photo/2021/04/07/17/01/woman-6159648_1280.jpg") left center no-repeat #fff;
    background-size: contain;
    }
    .correct[data-item="css"], .flipped[data-item="css"] {
    background: url("https://cdn.pixabay.com/photo/2022/01/30/15/01/girl-6981336_1280.jpg") left center no-repeat #fff;
    background-size: contain;
    }

Step 03 :- Create another file named script.js

JavaScript Code –

var myCards = document.getElementById('container');
var resultsArray = [];
var counter = 0;
var text = document.getElementById('text');
var seconds = 1;
var tens = 1;
var appendTens = document.getElementById("tens");
var appendSeconds = document.getElementById("seconds");
var Interval ;
var images = [
'sass',
'git',
'gulp',
'css',
'grunt'
];
var clone = images.slice(0); 
var cards = images.concat(clone); 

function shuffle(o){
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
shuffle(cards);
for (var i = 0; i < cards.length; i++) {
card = document.createElement('div');
card.dataset.item = cards[i];
card.dataset.view = "card";
myCards.appendChild(card);
card.onclick = function () {
if (this.className != 'flipped' && this.className != 'correct'){
this.className = 'flipped';
var result = this.dataset.item;
resultsArray.push(result);
clearInterval(Interval);
Interval = setInterval(startTimer, 10);
}
if (resultsArray.length > 1) {
if (resultsArray[0] === resultsArray[1]) {
check("correct");
counter ++;
win();
resultsArray = [];
} else {
check("reverse");
resultsArray = [];
}
}
}
};
var check = function(className) {
var x = document.getElementsByClassName("flipped");
setTimeout(function() {
for(var i = (x.length - 1); i >= 0; i--) {
x[i].className = className;
}
},500);
}
var win = function () {
if(counter === 5) {
clearInterval(Interval);
text.innerHTML = "Your time was " + seconds + ":" + tens;
}
}
function startTimer () {
tens++;
if(tens < 9){
appendTens.innerHTML = "0" + tens;
}
if (tens > 9){
appendTens.innerHTML = tens;
}
if (tens > 99) {
seconds++;
appendSeconds.innerHTML = "0" + seconds;
tens = 0;
appendTens.innerHTML = "0" + 0;
}
if (seconds > 9){
appendSeconds.innerHTML = seconds;
}
}

OutPut :-

pairs-game-codejuster

pair-game-codejuster

 

Leave a Comment

Your email address will not be published. Required fields are marked *