Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title></title>
- <style>
- li
- {
- list-style-type: none;
- }
- #console
- {
- float: left;
- width: 400px;
- height: 300px;
- background-color: black;
- color: white;
- margin-top: 30px;
- }
- #trash-can
- {
- float: left;
- }
- button
- {
- width:100px;
- height: 50px;
- margin-top: 50px;
- margin-left: 30px;
- }
- </style>
- </head>
- <body>
- <img id="trash-can" src="close.png" ondrop="handleDrop(event)" ondragover="handleDragOver(event)" ondragleave="handleDragLeave(event)"/>
- <button id="start">Start game</button>
- <div id="console"></div>
- <script src="trash.js"></script>
- <script>
- 'use strict';
- document.getElementById("start").addEventListener('click', startGame);
- var startGame = (function () {
- var gameStart = new Date().getTime() / 1000;
- localStorage.setItem("start", gameStart);
- var trashCanHeight = 450;
- var trashCount = 1;
- var documentFragment = document.createDocumentFragment();
- localStorage.setItem("count", trashCount);
- for (var i = 0; i < trashCount; i++) {
- var trash = document.createElement('img');
- trash.style.position = 'absolute';
- trash.style.top = getRandomPosition(trashCanHeight, screen.height - 250) + 'px';
- trash.style.left = getRandomPosition(0, screen.width - 250) + 'px';
- trash.setAttribute('id', i);
- trash.setAttribute('src', 'trash.png');
- trash.setAttribute('draggable', 'true');
- trash.setAttribute('ondragstart', 'handleDragStart(event)');
- trash.setAttribute('ondragend', 'handleDragEnd(event)');
- documentFragment.appendChild(trash);
- }
- document.body.appendChild(documentFragment);
- function getRandomPosition(start, end) {
- var random = Math.floor((Math.random() * (end - start) + start));
- return random;
- }
- });
- function handleDragStart(e) {
- e.dataTransfer.setData("dragged-id", e.target.id);
- e.target.style.opacity = '0.5';
- }
- function handleDragOver(e) {
- e.preventDefault();
- e.target.setAttribute('src', 'open.png');
- }
- function handleDragLeave(e) {
- e.target.setAttribute('src', 'close.png');
- }
- function handleDragEnd(e) {
- e.target.style.opacity = '1';
- }
- function handleDrop(e) {
- var currentTrashCount = localStorage.getItem('count') | 0;
- var endGame = false;
- if (currentTrashCount === 1) {
- var gameEnd = new Date().getTime() / 1000;
- var gameTime = gameEnd - (localStorage.getItem('start') | 0);
- endGame = true;
- }
- localStorage.setItem("count", currentTrashCount - 1);
- e.preventDefault();
- var trashId = e.dataTransfer.getData("dragged-id");
- var trashNode = document.getElementById(trashId);
- trashNode.parentNode.removeChild(trashNode);
- e.target.setAttribute('src', 'close.png');
- if (endGame === true) {
- setGameScore(gameTime);
- }
- }
- function getGameScore() {
- if (!localStorage.getItem('gameScore')) {
- var gameScore = {};
- localStorage.setItem('gameScore', JSON.stringify(gameScore));
- }
- return JSON.parse(localStorage.getItem('gameScore'));
- }
- function setGameScore (gameTime) {
- var person = prompt("You Win! Please enter your name");
- var scoreTable = getGameScore();
- scoreTable[person] = gameTime;
- //transfer to array
- var sortableTable = [];
- for (var key in scoreTable) {
- sortableTable.push([key, scoreTable[key]])
- }
- sortableTable.sort(function (a, b) { return a[1] - b[1] });
- if (sortableTable.length > 5) {
- var removed = sortableTable.pop();
- }
- visualizeScore(sortableTable);
- //transfer to object
- var object = {};
- for (var i = 0; i < sortableTable.length; i++) {
- object[sortableTable[i][0]] = sortableTable[i][1];
- }
- console.log(object);
- localStorage.setItem('gameScore', JSON.stringify(object));
- }
- function visualizeScore(score) {
- var scoreTable = document.createElement('ul');
- var place = 1;
- for(var player in score){
- var li = document.createElement('li');
- li.innerHTML = place + ". " + score[player][0] + "-" + score[player][1] + " sec";
- scoreTable.appendChild(li);
- place++;
- }
- var cons = document.getElementById('console');
- while (cons.firstChild) {
- cons.removeChild(cons.firstChild);
- }
- cons.appendChild(scoreTable);
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment