MartinBot

Nyan

Apr 20th, 2017
980
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. nyan = (function() {
  2.     var MP3_SRC = "https://raw.githubusercontent.com/jimpo/nyancat/master/nyancat.mp3";
  3.     var IMG_SRC = "https://raw.githubusercontent.com/jimpo/nyancat/master/nyancat.gif";
  4.  
  5.     var STEP_SIZE = 25;
  6.     var audio, body, img, targetX, targetY, mouseX = 0, mouseY = 0;
  7.  
  8.  
  9.     function createAudioElement() {
  10.         audio = document.createElement('embed');
  11.         audio.src = MP3_SRC;
  12.         audio.setAttribute('hidden', 'true');
  13.         audio.setAttribute('autostart', 'true');
  14.         audio.setAttribute('loop', 'true');
  15.     }
  16.  
  17.     function createImgElement() {
  18.         img = document.createElement('img');
  19.         img.src = IMG_SRC;
  20.         img.style['width'] = '200px';
  21.         img.style['z-index'] = '100';
  22.         img.style['position'] = 'fixed';
  23.         img.style['left'] = 0;
  24.         img.style['top'] = 0;
  25.     }
  26.  
  27.     function randomWalk() {
  28.         setRandomTarget();
  29.         setInterval(function () {
  30.             if (atTarget()) {
  31.                 setRandomTarget()
  32.             }
  33.             stepTowardsTarget();
  34.         }, 20);
  35.     }
  36.  
  37.     function speed() {
  38.         var bonus = 0;
  39.         var dx = mouseX - posX();
  40.         var dy = mouseY - posY();
  41.         var dist = Math.sqrt(dx * dx + dy * dy);
  42.         if (dist < 500) {
  43.             bonus = (500 - dist) / 10;
  44.         }
  45.         return STEP_SIZE + bonus;
  46.     }
  47.  
  48.     function atTarget() {
  49.         return posX() == targetX && posY() == targetY;
  50.     }
  51.  
  52.     function setRandomTarget() {
  53.         targetX = Math.floor(Math.random() * window.innerWidth);
  54.         targetY = Math.floor(Math.random() * window.innerHeight);
  55.     }
  56.  
  57.     function posX() {
  58.         return parseFloat(img.style['left']);
  59.     }
  60.  
  61.     function posY() {
  62.         return parseFloat(img.style['top']);
  63.     }
  64.  
  65.     function stepTowardsTarget() {
  66.         var dx = targetX - posX();
  67.         var dy = targetY - posY();
  68.         var d = Math.sqrt(dx * dx + dy * dy);
  69.         var step = speed();
  70.         if (d <= step) {
  71.             img.style['left'] = targetX + 'px';
  72.             img.style['top']  = targetY + 'px';
  73.         }
  74.         else {
  75.             img.style['left'] = posX() + dx * step / d + 'px';
  76.             img.style['top']  = posY() + dy * step / d + 'px';
  77.         }
  78.     }
  79.  
  80.     function setMouseListener() {
  81.         window.addEventListener('mousemove', function () {
  82.             mouseX = window.event.clientX;
  83.             mouseY = window.event.clientY;
  84.         });
  85.     }
  86.  
  87.     return function() {
  88.         createAudioElement()
  89.         createImgElement()
  90.         body = document.getElementsByTagName('body')[0];
  91.         body.appendChild(audio);
  92.         body.appendChild(img);
  93.         setMouseListener();
  94.         randomWalk();
  95.     };
  96.  
  97. });
  98.  
  99. function setCookie(c_name,value,exdays) {
  100. var exdate=new Date();
  101. exdate.setDate(exdate.getDate() + exdays);
  102. var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
  103. document.cookie=c_name + "=" + c_value;
  104. }
  105.  
  106. function getCookie(c_name) {
  107. var i,x,y,ARRcookies=document.cookie.split(";");
  108. for (i=0;i<ARRcookies.length;i++)
  109. {
  110.   x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  111.   y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  112.   x=x.replace(/^\s+|\s+$/g,"");
  113.   if (x==c_name)
  114.     {
  115.     return unescape(y);
  116.     }
  117.   }
  118. }
  119.  
  120. nyan()();
  121. nyan()();
  122. nyan()();
  123. nyan()();
  124. nyan()();
  125. nyan()();
Advertisement
Add Comment
Please, Sign In to add comment