sashomaga

Using local storage & drag and drop

May 9th, 2013
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <title></title>
  5.     <style>
  6.         li
  7.         {
  8.             list-style-type: none;
  9.         }
  10.         #console
  11.         {
  12.             float: left;
  13.             width: 400px;
  14.             height: 300px;
  15.             background-color: black;
  16.             color: white;
  17.             margin-top: 30px;
  18.         }
  19.         #trash-can
  20.         {          
  21.             float: left;
  22.         }
  23.         button
  24.         {
  25.             width:100px;
  26.             height: 50px;
  27.             margin-top: 50px;
  28.             margin-left: 30px;
  29.         }
  30.     </style>
  31. </head>
  32. <body>
  33.     <img id="trash-can" src="close.png" ondrop="handleDrop(event)" ondragover="handleDragOver(event)" ondragleave="handleDragLeave(event)"/>
  34.     <button id="start">Start game</button>
  35.     <div id="console"></div>
  36.    
  37.     <script src="trash.js"></script>
  38.     <script>
  39.        
  40.         'use strict';      
  41.         document.getElementById("start").addEventListener('click', startGame);
  42.  
  43.         var startGame = (function () {
  44.             var gameStart = new Date().getTime() / 1000;
  45.             localStorage.setItem("start", gameStart);
  46.  
  47.             var trashCanHeight = 450;
  48.             var trashCount = 1;
  49.             var documentFragment = document.createDocumentFragment();
  50.  
  51.             localStorage.setItem("count", trashCount);
  52.  
  53.             for (var i = 0; i < trashCount; i++) {
  54.                 var trash = document.createElement('img');
  55.                 trash.style.position = 'absolute';
  56.                 trash.style.top = getRandomPosition(trashCanHeight, screen.height - 250) + 'px';
  57.                 trash.style.left = getRandomPosition(0, screen.width - 250) + 'px';
  58.                 trash.setAttribute('id', i);
  59.                 trash.setAttribute('src', 'trash.png');
  60.                 trash.setAttribute('draggable', 'true');
  61.                 trash.setAttribute('ondragstart', 'handleDragStart(event)');
  62.                 trash.setAttribute('ondragend', 'handleDragEnd(event)');
  63.  
  64.                 documentFragment.appendChild(trash);
  65.             }
  66.             document.body.appendChild(documentFragment);
  67.  
  68.             function getRandomPosition(start, end) {
  69.                 var random = Math.floor((Math.random() * (end - start) + start));
  70.                 return random;
  71.             }
  72.         });
  73.        
  74.         function handleDragStart(e) {        
  75.             e.dataTransfer.setData("dragged-id", e.target.id);
  76.             e.target.style.opacity = '0.5';          
  77.         }
  78.  
  79.         function handleDragOver(e) {
  80.             e.preventDefault();
  81.             e.target.setAttribute('src', 'open.png');
  82.         }
  83.  
  84.         function handleDragLeave(e) {
  85.             e.target.setAttribute('src', 'close.png');
  86.         }
  87.  
  88.         function handleDragEnd(e) {          
  89.             e.target.style.opacity = '1';
  90.         }
  91.  
  92.         function handleDrop(e) {
  93.             var currentTrashCount = localStorage.getItem('count') | 0;
  94.             var endGame = false;
  95.             if (currentTrashCount === 1) {
  96.                 var gameEnd = new Date().getTime() / 1000;
  97.                 var gameTime = gameEnd - (localStorage.getItem('start') | 0);
  98.                
  99.                 endGame = true;
  100.                
  101.             }
  102.            
  103.             localStorage.setItem("count", currentTrashCount - 1);
  104.             e.preventDefault();
  105.             var trashId = e.dataTransfer.getData("dragged-id");            
  106.             var trashNode = document.getElementById(trashId);
  107.             trashNode.parentNode.removeChild(trashNode);
  108.             e.target.setAttribute('src', 'close.png');
  109.             if (endGame === true) {
  110.                 setGameScore(gameTime);
  111.             }
  112.         }
  113.  
  114.         function getGameScore() {            
  115.             if (!localStorage.getItem('gameScore')) {                
  116.                 var gameScore = {};
  117.                 localStorage.setItem('gameScore', JSON.stringify(gameScore));
  118.             }
  119.  
  120.             return JSON.parse(localStorage.getItem('gameScore'));
  121.         }
  122.         function setGameScore (gameTime) {
  123.             var person = prompt("You Win! Please enter your name");
  124.             var scoreTable = getGameScore();
  125.            
  126.             scoreTable[person] = gameTime;
  127.  
  128.             //transfer to array
  129.             var sortableTable = [];
  130.             for (var key in scoreTable) {
  131.                 sortableTable.push([key, scoreTable[key]])
  132.             }
  133.             sortableTable.sort(function (a, b) { return a[1] - b[1] });
  134.            
  135.             if (sortableTable.length > 5) {
  136.                 var removed = sortableTable.pop();
  137.             }
  138.            
  139.             visualizeScore(sortableTable);
  140.  
  141.             //transfer to object
  142.             var object = {};
  143.             for (var i = 0; i < sortableTable.length; i++) {
  144.                 object[sortableTable[i][0]] = sortableTable[i][1];
  145.             }
  146.             console.log(object);
  147.             localStorage.setItem('gameScore', JSON.stringify(object));
  148.                              
  149.         }
  150.         function visualizeScore(score) {
  151.             var scoreTable = document.createElement('ul');
  152.             var place = 1;
  153.             for(var player in score){
  154.                 var li = document.createElement('li');
  155.                 li.innerHTML = place + ". " + score[player][0] + "-" + score[player][1] + " sec";
  156.                 scoreTable.appendChild(li);
  157.                 place++;
  158.             }
  159.             var cons = document.getElementById('console');
  160.             while (cons.firstChild) {
  161.                 cons.removeChild(cons.firstChild);
  162.             }
  163.             cons.appendChild(scoreTable);
  164.         }
  165.     </script>
  166. </body>
  167. </html>
Advertisement
Add Comment
Please, Sign In to add comment