JSFiddle - React, Tailwind, and code Playground
by mauricederegt
JavaScript
function setBlocks() {
//start
bR = 0;
counts = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
var mR = 5, mC = 6;
var tempFloor, tempRow, tempBlock;
var floors = $('ul');
floors.empty();
for (var f = 0; f < 4; f++) {
bM[f] = [];
for (var r = 0; r < mR; r++) {
bM[f][r] = [];
tempRow = $('<li></li>');
$(floors[f]).append(tempRow);
for (var c = 0; c < mC; c++) {
var randomNoRequired = true;
var randomClass;
while(randomNoRequired) {
randomClass = Math.round(Math.random() * 10 + 0);
if (counts[randomClass] < 6 || bR >= 66) {
randomNoRequired = false;
}
}
if (bR > 65) {
tempBlock = $('<a class="a" data-t="a" style="display:none;"></a>');
bM[f][r][c] = {idx:null,type:null,v:0,e:null};
} else {
tempBlock = $('<a class="' + classes[randomClass] + '" data-i="' + bR + '" data-t="' + classes[randomClass] + '" data-f="' + f + '" data-r="' + r + '" data-c="' + c + '"></a>');
bM[f][r][c] = {idx:bR,type:classes[randomClass],v:1,e:tempBlock};
counts[randomClass]++;
bR++;
}
tempBlock.css('margin-top', ((-(mR * 3.05 / 2) + (3.05 * r)) - .15) + 'em');
tempBlock.css('margin-left', (-(mC * 2.3 / 2) + (2.3 * c)) + 'em');
tempRow.append(tempBlock);
}
}
mR--;
mC--;
}
//stop
if (!checkAllBlocks()) {
setBlocks();
} else {
$('#s2 a').click(function(){
var cB = $(this);
var f = parseInt(cB.attr('data-f'));
var r = parseInt(cB.attr('data-r'));
var c = parseInt(cB.attr('data-c'));
if (pA == false && !isClickAllowed(f,r,c)) {
...