ganryu

Untitled

Jan 20th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. document.addEventListener('DOMContentLoaded', function() {
  4.   var canvas = document.getElementById('canvas');
  5.   var ctx = canvas.getContext('2d');
  6.  
  7.   canvas.width  = window.innerWidth;
  8.   canvas.height = window.innerHeight;
  9.  
  10.   var random_walks = [[canvas.width / 2, canvas.height / 2]];
  11.   var speed = 10;
  12.  
  13.   document.addEventListener('keypress', function (e) {
  14.     if (e.keyCode == 32 || e.key == ' ') { // space
  15.       if (random_walks.length >= 10000) {
  16.         return;
  17.       }
  18.  
  19.       var add_n = Math.ceil(Math.log(random_walks.length, 10) * 2);
  20.       for (var i = 0; i < add_n; i++) {
  21.         var x = Math.random() * canvas.width;
  22.         var y = Math.random() * canvas.height;
  23.  
  24.         random_walks.push([x, y]);
  25.       }
  26.     } else if (e.keyCode == 43 || e.key == '+') { // plus
  27.       speed++;
  28.       speed = Math.min(speed, 100);
  29.     } else if (e.keyCode == 45 || e.key == '-') { // minus
  30.       speed--;
  31.       speed = Math.max(speed, 1);
  32.     }
  33.   });
  34.  
  35.   canvas.addEventListener('mousedown', function(e) {
  36.     if (random_walks.length >= 10000) {
  37.       return;
  38.     }
  39.     var x = e.pageX - this.offsetLeft;
  40.     var y = e.pageY - this.offsetTop;
  41.  
  42.     random_walks.push([x, y]);
  43.   });
  44.  
  45.   var draw = function() {
  46.     ctx.beginPath();
  47.     ctx.fillStyle = 'rgba(255, 255, 255, 0.025)';
  48.     ctx.fillRect(0, 0, canvas.width, canvas.height);
  49.     ctx.fill();
  50.  
  51.     for (var i = 0; i < random_walks.length; i++) {
  52.       var x = random_walks[i][0];
  53.       var y = random_walks[i][1];
  54.  
  55.       var new_x = x + Math.random() * speed - speed / 2;
  56.       var new_y = y + Math.random() * speed - speed / 2;
  57.  
  58.       ctx.beginPath();
  59.       ctx.strokeStyle = 'black';
  60.       ctx.moveTo(x, y);
  61.       ctx.lineTo(new_x, new_y);
  62.       ctx.closePath();
  63.       ctx.stroke();
  64.  
  65.       if (new_x < 0 || new_x >= canvas.width) {
  66.         new_x = new_x < 0 ? canvas.width + new_x : new_x % canvas.width;
  67.       }
  68.       if (new_y < 0 || new_y >= canvas.height) {
  69.         new_y = new_y < 0 ? canvas.height + new_y : new_y % canvas.height;
  70.       }
  71.  
  72.       random_walks[i] = [new_x, new_y];
  73.     }
  74.  
  75.     requestAnimationFrame(draw);
  76.   };
  77.  
  78.   requestAnimationFrame(draw);
  79. });
Add Comment
Please, Sign In to add comment