SwVitaliy

Untitled

Dec 15th, 2012
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. (function() {
  2.  
  3. function arr(w,h) { var i, r = new Array(w); for (i=0; i<w; i++) r[i] = new Array(h); return r; }
  4. function random(l) { return Math.floor(Math.random() * l); }
  5.  
  6. var screen = arr(40, 80),
  7. screen_x = 0,
  8. screen_y = 0;
  9.  
  10. var i, j;
  11.  
  12. for (i=0; i<40; i++) {
  13. for (j=0; j<80; j++) {
  14. screen[i][j] = ' ';
  15. }
  16. }
  17.  
  18. function cprintf(str) { var i; for (i=0; i<str.length; i++) {
  19. screen[screen_y][screen_x] = str.charAt(i);
  20. if (++screen_x >= 80) { screen_x = 0; ++screen_y; }
  21. }
  22. return true; }
  23. function screen_flush() {
  24. var i;
  25. for (i=0; i<20; i++) {
  26. console.log(screen[i].join(''));
  27. }
  28. }
  29. function gotoxy(x,y) { screen_x=x; screen_y=y; }
  30.  
  31. const size = 20;
  32. const fullfill = 100; // in %
  33. const wallshort= 50; // in %
  34.  
  35. var m = arr(size+1, size+1), r = arr(2,size/2*size/2), h;
  36.  
  37. function initrandom () {
  38. var y, x, j = 0;
  39. for (y = 2; y < size; y += 2)
  40. for (x = 2; x < size; x += 2) {
  41. r[0][j] = x;
  42. r[1][j] = y;
  43. j++;
  44. }
  45. h = j - 1;
  46. }
  47. function getrandom(p) {
  48. var i = random (h);
  49. p.x = r[0][i];
  50. p.y = r[1][i];
  51. r[0][i] = r[0][h];
  52. r[1][i] = r[1][h];
  53. return h--;
  54. }
  55. function view() {
  56. var x, y;
  57. for (y=0; y<=size; y++)
  58. for (x=0; x<=size; x++) {
  59. gotoxy (x*2+1,y+1);
  60. if (m[y][x]==0) cprintf (".");
  61. if (m[y][x]==1) cprintf ("_");
  62. }
  63.  
  64. screen_flush();
  65. }
  66.  
  67. function main() {
  68.  
  69.  
  70. var c, i;
  71. for (c = 0; c < size*size; c++) m[c] = 0;
  72.  
  73. // Make border
  74.  
  75. for (i = 0; i <= size; i++) {
  76. m[0][i] = 1;
  77. m[size][i] = 1;
  78. m[i][0] = 1;
  79. m[i][size] = 1;
  80. }
  81.  
  82. // view ();
  83. initrandom();
  84. var startx, starty, start = {}, sx, sy;
  85.  
  86. while (getrandom (start)) {
  87. startx = start.x, starty = start.y;
  88. if (m[starty][startx]==1) continue;
  89. if (random (100) > fullfill) continue;
  90.  
  91. sx=0,sy=0;
  92.  
  93. do {
  94. sx=random (3)-1;
  95. sy=random (3)-1;
  96. } while (sx==0 && sy==0 || sx!=0 && sy!=0); //sx==0 and sy==0
  97.  
  98. while (m[starty][startx]==0) {
  99. if (random (100) > wallshort) {
  100. m[starty][startx] = 1;
  101. break;
  102. }
  103.  
  104. m[starty][startx] = 1;
  105.  
  106. startx+=sx;
  107. starty+=sy;
  108.  
  109. m[starty][startx] = 1;
  110.  
  111. startx +=sx;
  112. starty+=sy;
  113. }
  114.  
  115. }
  116.  
  117. view();
  118. /* */
  119. return 0;
  120.  
  121. }
  122.  
  123. main();
  124.  
  125. })()
Advertisement
Add Comment
Please, Sign In to add comment