Skip to content

Instantly share code, notes, and snippets.

@HuangStanley050
Created December 29, 2017 10:12
Show Gist options
  • Save HuangStanley050/d89d26089f47406a1e63ff7f2cf1ab33 to your computer and use it in GitHub Desktop.
Save HuangStanley050/d89d26089f47406a1e63ff7f2cf1ab33 to your computer and use it in GitHub Desktop.
Match Game
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Title Goes Here</title>
<link href="./resources/something.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Work+Sans" rel="stylesheet">
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm-4">
<h1>Match Game</h1>
<h3>Rules</h3>
<p>
Click on a card to reveal the number on the other side. Click on a second card to try and find a match to the first. If you succeed, the pair will be removed from play. If not, try again!
</p>
<h3>How to Win</h3>
<p>
You win when all pairs have been found.
</p>
</div>
<div class="col-sm-8">
<div class="row">
<div class="col-sm-3">
<div class="card" id="card1">
</div>
<div class="card" id="card2">
</div>
<div class="card" id="card3">
</div>
<div class="card" id="card4">
</div>
</div>
<div class="col-sm-3">
<div class="card" id="card5">
</div>
<div class="card" id="card6">
</div>
<div class="card" id="card7">
</div>
<div class="card" id="card8">
</div>
</div>
<div class="col-sm-3">
<div class="card" id="card9">
</div>
<div class="card" id="card10">
</div>
<div class="card" id="card11">
</div>
<div class="card" id="card12">
</div>
</div>
<div class="col-sm-3">
<div class="card" id="card13">
</div>
<div class="card" id="card14">
</div>
<div class="card" id="card15">
</div>
<div class="card" id="card16">
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
$(document).ready(function() {
var card_position = [];
var card_position2 = [];
var final_pos = [];
var cards_flipped=[];
var number;
var pre_click;
var current_click;
var pre_id;
var cur_id;
var clicks = 0;
var match_count = 0;
for (var i = 0; i < 8; i++) {
//fill in the first half of the card positions
number = Math.floor(Math.random() * 8) + 1;
if (card_position.indexOf(number) == -1) {
card_position[i] = number;
} else {
i--;
}
}
for (i = 0; i < 8; i++) {
//fill in the 2nd half of the card positions
number = Math.floor(Math.random() * 8) + 1;
if (card_position2.indexOf(number) == -1) {
card_position2[i] = number;
} else {
i--;
}
}
final_pos = card_position.concat(card_position2);
//console.log(final_pos);
//assign card position to dom element
$("#card1").val(final_pos[0]);
$("#card2").val(final_pos[1]);
$("#card3").val(final_pos[2]);
$("#card4").val(final_pos[3]);
$("#card5").val(final_pos[4]);
$("#card6").val(final_pos[5]);
$("#card7").val(final_pos[6]);
$("#card8").val(final_pos[7]);
$("#card9").val(final_pos[8]);
$("#card10").val(final_pos[9]);
$("#card11").val(final_pos[10]);
$("#card12").val(final_pos[11]);
$("#card13").val(final_pos[12]);
$("#card14").val(final_pos[13]);
$("#card15").val(final_pos[14]);
$("#card16").val(final_pos[15]);
//$(".card").click(function(event) {
// alert($(this).val());
$(".card").on("click", function() {
if (clicks == 0) {
//$(this).css("background-color", "red");ge
console.log(cur_id);
pre_id = $(this).attr("id");
// cards_flipped.push(pre_id);
pre_click = $(this).val();
//alert(pre_click);
change_color(pre_click, pre_id);
//console.log(pre_id);
//console.log(pre_click);
clicks++;
console.log(cards_flipped);
} else if (clicks == 1) {
//$(this).css("background-color", "red");
//$(this).on("click");
//$("#"+pre_id).on("click");
cur_id = $(this).attr("id");
//cards_flipped.push(cur_id);
current_click = $(this).val();
console.log(cards_flipped);
//$("#"+cur_id).on("click");
if(cur_id==pre_id){
alert("clicked on the same button");
//$("#"+cur_id).off();
}
else{
change_color(current_click, cur_id);
}
//alert(current_click);
//console.log(current_click);
if (pre_click === current_click && pre_id != cur_id) {
//alert("Match");
match_count++;
//console.log(match_count);
$("#" + pre_id).css("background-color", "rgb(153,153,153)");
$("#" + cur_id).css("background-color", "rgb(153,153,153)");
$("#" + pre_id).off();
$("#" + cur_id).off();
win_condition(match_count);
} else {
/*$("#" + pre_id).css("background-color", "rgb(32,64,86)");
$("#" + cur_id).css("background-color", "rgb(32,64,86)");*/
//after wrong selection, color changes back in 1.5 sec
//$("#"+pre_id).on("click");
setTimeout(function() {
$("#" + pre_id).css("background-color", "rgb(32,64,86)");
$("#" + pre_id).empty();
$("#" + cur_id).css("background-color", "rgb(32,64,86)");
$("#" + cur_id).empty();
}, 300);
}
clicks = 0;
console.log(clicks);
}//click ==1 if statement end
}); //click function end
}); //document onload function end
function win_condition(count) {
if (count == 8) {
alert("You win!");
}
}
function change_color(card, ID) {
//$("#"+ID).css("background-color", "red");
if (card == 1) {
$("#" + ID).css("background-color", "hsl(25,85%,65%)");
$("#" + ID)
.append("<h4>1</h4>")
.addClass("number");
}
if (card == 2) {
$("#" + ID).css("background-color", "hsl(55,85%,65%)");
$("#" + ID)
.append("<h4>2</h4>")
.addClass("number");
}
if (card == 3) {
$("#" + ID).css("background-color", "hsl(90,85%,65%)");
$("#" + ID)
.append("<h4>3</h4>")
.addClass("number");
}
if (card == 4) {
$("#" + ID).css("background-color", "hsl(160,85%,65%)");
$("#" + ID)
.append("<h4>4</h4>")
.addClass("number");
}
if (card == 5) {
$("#" + ID).css("background-color", "hsl(220,85%,65%)");
$("#" + ID)
.append("<h4>5</h4>")
.addClass("number");
}
if (card == 6) {
$("#" + ID).css("background-color", "hsl(265,85%,65%)");
$("#" + ID)
.append("<h4>6</h4>")
.addClass("number");
}
if (card == 7) {
$("#" + ID).css("background-color", "hsl(310,85%,65%)");
$("#" + ID)
.append("<h4>7</h4>")
.addClass("number");
}
if (card == 8) {
$("#" + ID).css("background-color", "hsl(360,85%,65%)");
$("#" + ID)
.append("<h4>8</h4>")
.addClass("number");
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
html {
font-size: 14px;
font-family: "Work Sans", sans-serif;
}
.container-fluid{
background-color: rgb(255,242,242);
/*height: 800px;*/
margin-top: 5.25rem;
}
.row{
/*background-color: blue;*/
height: 700px;
}
.col-sm-4{
/*background-color: orange;*/
heigth: 400px;
}
.col-sm-8{
/*background-color: pink;*/
}
h1{
font-weight: bold;
font-size: 2.5rem;
color: rgb(32,64,86);
}
h3 {
font-weight: bold;
font-size: 1rem;
color: rgb(32,64,86);
}
p{
rgb(74,74,74);
}
.col-sm-3{
/* background-color: orange;*/
height: 100%;
}
.card {
background-color: rgb(32,64,86);
height: 22%;
width: 100%;
margin-top: 4px;
border: 4px solid #ffffff;
border-radius: 8px;
}
.number h4{
font-weight: 900;
font-size: 7rem;
color: rgb(255,255,255);
/*margin-left: 20px;*/
display:flex;
align-content: center;
justify-content: center;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment