JSFiddle - React, Tailwind, and code Playground
by bigbadwaffle
HTML
<canvas id='canvas'></canvas>
JavaScript
Math.seed = 6;
Math.seededRandom = function (max, min) {
max = (max + 1) || 1;
min = min || 0;
Math.seed = (Math.seed * 9301 + 49297) % 233280;
var rnd = Math.seed / 233280;
return min + rnd * ((max + 1) - min);
}
function get2DArray(size) {
var map = [];
for (var i = 0; i < size; i++) {
map.push([]);
for (var j = 0; j < size; j++) {
map[i].push(0);
}
}
return map;
}
var size = 64;
var map = get2DArray(size);
for (var i = 0; i < size; i++) {
for (var j = 0; j < size; j++) {
map[i][j] = Math.seededRandom(1, 0);
}
}
for (var i = 0; i < 10; i++) {
var new_map = get2DArray(size);
for (var x = 0; x < size; x++) {
for (var y = 0; y < size; y++) {
var x_range = {low: Math.max(0, x - 1), high: Math.min(size - 1, x + 1)};
var y_range = {low: Math.max(0, y - 1), high: Math.min(size - 1, y + 1)};
var wall_count = 0;
for (var a = x_range.low; a <= x_range.high; a++) {
for (var b = y_range.low; b <= y_range.high; b++) {
if ((a == x) && (b == y))
continue;
wall_count += (255 - map[a][b]) / 255;
}
}
if (((map[x][y] == 0) && (wall_count >= 4)) ||
((map[x][y] == 255) && (wall_count >= 5)))
new_map[x][y] = 0;
else
new_map[x][y] = 255;
}
}
map = new_map;
}
var Renderer = {
canvas: null,
ctx: null,
size: 512,
scale: 0,
Initialize: function () {
this.canvas = document.getElementById('canvas');
this.canvas.width = this.size;
this.canvas.height = this.size;
this.ctx = canvas.getContext('2d');
this.scale = this.canvas.width / size;
},
Update: function () {
for (var y = 0; y < size; y++) {
for (var x = 0; x < size;...