JSFiddle - React, Tailwind, and code Playground
HTML
<div class="game">
<div class="row">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div class="row">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div class="row">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div class="row">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div id="scorediv">
Score: <span id="score">0</span><br />
</div>
</div>
CSS
.game {
width: 416px;
padding: 4px;
background-color: #ccc;
margin: 20px auto;
border: 1px solid black;
box-shadow: 0 0 3px black;
}
.cell {
width: 50px;
height: 50px;
display: inline-block;
margin: 2px;
border: 1px solid black;
background-color: #999;
}
.cell.active {
background-color: green;
box-shadow: inset 0 0 3px #000;
}
.cell.squashed {
background-color: red;
box-shadow: inset 0 0 5px #000;
}
#scorediv {
text-align: center;
}
JavaScript
(function (delay, diffMultiplier) {
var $prev = $(null), clk;
(function w() {
var $cells = $(".cell:not(.active,.squashed)"),
$next = $($cells.get(0 | (Math.random() * $cells.size())));
$prev.removeClass("active").off("click", clk);
$prev = $next.addClass("active").on("click", (clk = function () {
$("#score").text(50 + (+$("#score").text()));
delay *= diffMultiplier;
$next.addClass("squashed").removeClass("active").off("click", clk);
setTimeout(function() { $next.removeClass("squashed") }, 250);
}));
setTimeout(w, delay);
}());
}(1000, .98));
//The two arguments are:
//1: Starting delay in milliseconds
//2: Difficulty multiplier (lower this to make things harder faster).