Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- function arr(w,h) { var i, r = new Array(w); for (i=0; i<w; i++) r[i] = new Array(h); return r; }
- function random(l) { return Math.floor(Math.random() * l); }
- var screen = arr(40, 80),
- screen_x = 0,
- screen_y = 0;
- var i, j;
- for (i=0; i<40; i++) {
- for (j=0; j<80; j++) {
- screen[i][j] = ' ';
- }
- }
- function cprintf(str) { var i; for (i=0; i<str.length; i++) {
- screen[screen_y][screen_x] = str.charAt(i);
- if (++screen_x >= 80) { screen_x = 0; ++screen_y; }
- }
- return true; }
- function screen_flush() {
- var i;
- for (i=0; i<20; i++) {
- console.log(screen[i].join(''));
- }
- }
- function gotoxy(x,y) { screen_x=x; screen_y=y; }
- const size = 20;
- const fullfill = 100; // in %
- const wallshort= 50; // in %
- var m = arr(size+1, size+1), r = arr(2,size/2*size/2), h;
- function initrandom () {
- var y, x, j = 0;
- for (y = 2; y < size; y += 2)
- for (x = 2; x < size; x += 2) {
- r[0][j] = x;
- r[1][j] = y;
- j++;
- }
- h = j - 1;
- }
- function getrandom(p) {
- var i = random (h);
- p.x = r[0][i];
- p.y = r[1][i];
- r[0][i] = r[0][h];
- r[1][i] = r[1][h];
- return h--;
- }
- function view() {
- var x, y;
- for (y=0; y<=size; y++)
- for (x=0; x<=size; x++) {
- gotoxy (x*2+1,y+1);
- if (m[y][x]==0) cprintf (".");
- if (m[y][x]==1) cprintf ("_");
- }
- screen_flush();
- }
- function main() {
- var c, i;
- for (c = 0; c < size*size; c++) m[c] = 0;
- // Make border
- for (i = 0; i <= size; i++) {
- m[0][i] = 1;
- m[size][i] = 1;
- m[i][0] = 1;
- m[i][size] = 1;
- }
- // view ();
- initrandom();
- var startx, starty, start = {}, sx, sy;
- while (getrandom (start)) {
- startx = start.x, starty = start.y;
- if (m[starty][startx]==1) continue;
- if (random (100) > fullfill) continue;
- sx=0,sy=0;
- do {
- sx=random (3)-1;
- sy=random (3)-1;
- } while (sx==0 && sy==0 || sx!=0 && sy!=0); //sx==0 and sy==0
- while (m[starty][startx]==0) {
- if (random (100) > wallshort) {
- m[starty][startx] = 1;
- break;
- }
- m[starty][startx] = 1;
- startx+=sx;
- starty+=sy;
- m[starty][startx] = 1;
- startx +=sx;
- starty+=sy;
- }
- }
- view();
- /* */
- return 0;
- }
- main();
- })()
Advertisement
Add Comment
Please, Sign In to add comment