JSFiddle - React, Tailwind, and code Playground
by bigbadwaffle
HTML
<canvas id='canvas'></canvas>
CSS
body {
margin:0
}
JavaScript
var Dungeon = {
size: 64,
data: [],
Generate: function () {
for (var i = 0; i < this.size; i++) {
this.data.push([]);
for (var j = 0; j < this.size; j++) {
this.data[i].push(0);
}
}
var min_size = 10;
var max_size = 20;
var pos = {
x: 0,
y: 0
};
for (var a = 0; a < 25; a++) {
var size = Helpers.GetRandom(min_size, max_size);
pos.x = Helpers.GetRandom(0, this.size - max_size);
pos.y = Helpers.GetRandom(0, this.size - max_size);
for (var i = pos.x; i <= pos.x + size; i++) {
for (var j = pos.y; j <= pos.y + size; j++) {
var tile = this.data[i][j];
if (tile != 0)
continue;
if ((i == pos.x) || (j == pos.y) || (i == pos.x + size) || (j == pos.y + size)) this.data[i][j] = 2;
else this.data[i][j] = 1;
}
}
}
var count = 0;
while (true) {
count++;
var pos = {};
for (var i = 0; i < this.size; i++) {
for (var j = 0; j < this.size; j++) {
if (this.data[i][j] == 1) {
pos.x = i;
pos.y = j;
i = this.size;
j = this.size;
}
}
}
this.recurse(pos.x, pos.y, 1, 100);
this.recurse_find(pos.x, pos.y, 100, 1);
var found = false;
for (var i = 0; i < this.size; i++) {
for (var j = 0; j < this.size; j++) {
if (this.data[i][j] == 1) {
found = true
i = this.size;
j = this.size;
}
}
}
...