Мне нужно использовать localalstorage для хранения имени, счета и даты игрока в браузере и отображения 5 самых высоких результатов в таблице. - PullRequest
0 голосов
/ 09 февраля 2020

Помощь Мне нужно использовать localalstorage для сохранения имени, счета и даты игрока в браузере и отображения 5 самых высоких результатов в таблице. Сохранить и возобновить позже вариант. Таблица лидеров с наибольшим количеством очков, полученных в игре. Самые высокие оценки для игры должны быть доступны только для браузера на компьютере. Имя игрока, полученный счет и достигнутая дата должны отображаться в таблице лидеров.

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
   body {
       background: black;
   }    

canvas {
   border:1px solid white;
   background-color: black;
   margin: 10px auto;
   position: absolute;
   left: 50%;
   top: 40%;
   transform: translate(-50%, -50%);
}
button {

 background-color: #fff;
 border: 1px solid black;
 color: black;
 padding: 15px 32px;
 text-align: center;
 text-decoration: none;
 font-size: 16px;
 margin: 4px 2px;
 cursor: pointer;


}

.buttonContainer {
   position: absolute;
   left: 50%;
   top: 80%;
   transform: translate(-50%, -50%);
}

.restart {
   position: absolute;
   left: 50%;
   top: 10%;
   transform: translate(-50%, -50%);
   background: black;
   color: white;
   border: 2px solid white;
   border-radius: 10px;
}

</style>
</head>
<body>
   <button type="button" onclick="startGame()"> Start </button>
   <p id="result" style="color: white;"> </p>
<script>


var playerName = window.prompt("Please enter your name?");
var playerScore = 1;
var today = new Date();

var testObject = { 'playerName': playerName, 'score': playerScore, 'date': today};

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

//console.log('retrievedObject: ', JSON.parse(retrievedObject));

document.getElementById("result").innerHTML = localStorage.getItem('playerName'), retrievedObject;





var myGamePiece;
var myObstacles = [];
var myScore;

function startGame() {
   myGamePiece = new component(50, 30, "white", 10, 200);
   myScore = new component("30px", "Consolas", "", 280, 40, "text");
   myGameArea.start();
}

var myGameArea = {
   canvas : document.createElement("canvas"),
   start : function() {
       this.canvas.width = 1130;
       this.canvas.height = 400;
       this.context = this.canvas.getContext("2d");
       document.body.insertBefore(this.canvas, document.body.childNodes[0]);
       this.frameNo = 0;
       this.interval = setInterval(updateGameArea, 20);
       },
   clear : function() {
       this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
   },
   stop : function() {
       clearInterval(this.interval);
   }
}

function component(width, height, color, x, y, type) {
   this.type = type;
   this.width = width;
   this.height = height;
   this.speedX = 0;
   this.speedY = 0;    
   this.x = x;
   this.y = y;    
   this.update = function() {
       ctx = myGameArea.context;
       if (this.type == "text") {
           ctx.font = this.width + " " + this.height;
           ctx.fillStyle = color;
           ctx.fillText(this.text, this.x, this.y);
       } else {
           ctx.fillStyle = color;
           ctx.fillRect(this.x, this.y, this.width, this.height);
       }
   }
   this.newPos = function() {
       this.x += this.speedX;
       this.y += this.speedY;        
   }
   this.crashWith = function(otherobj) {
       var myleft = this.x;
       var myright = this.x + (this.width);
       var mytop = this.y;
       var mybottom = this.y + (this.height);
       var otherleft = otherobj.x;
       var otherright = otherobj.x + (otherobj.width);
       var othertop = otherobj.y;
       var otherbottom = otherobj.y + (otherobj.height);
       var crash = true;
       if ((mybottom < othertop) || (mytop > otherbottom) || (myright < otherleft) || (myleft > otherright)) {
           crash = false;
       }
       return crash;
   }
}

function updateGameArea() {
   var x, height, gap, minHeight, maxHeight, minGap, maxGap;
   for (i = 0; i < myObstacles.length; i += 1) {
       if (myGamePiece.crashWith(myObstacles[i])) {
           myGameArea.stop();
           return;
       } 
   }
   myGameArea.clear();
   myGameArea.frameNo += 1;
   if (myGameArea.frameNo == 1 || everyinterval(150)) {
       x = myGameArea.canvas.width;
       minHeight = 20;
       maxHeight = 200;
       height = Math.floor(Math.random()*(maxHeight-minHeight+1)+minHeight);
       minGap = 50;
       maxGap = 200;
       gap = Math.floor(Math.random()*(maxGap-minGap+1)+minGap);
       myObstacles.push(new component(10, height, "white", x, 0));
       myObstacles.push(new component(10, x - height - gap, "white", x, height + gap));
   }
   for (i = 0; i < myObstacles.length; i += 1) {
       myObstacles[i].speedX = -1;
       myObstacles[i].newPos();
       myObstacles[i].update();
   }
   myScore.text="SCORE: " + myGameArea.frameNo;
   myScore.update();
   myGamePiece.newPos();    
   myGamePiece.update();
}

function everyinterval(n) {
   if ((myGameArea.frameNo / n) % 1 == 0) {return true;}
   return false;
}

function moveup() {
   myGamePiece.speedY = -5; 
}

function movedown() {
   myGamePiece.speedY = 5; 
}

function moveleft() {
   myGamePiece.speedX = -5; 
}

function moveright() {
   myGamePiece.speedX = 5; 
}

function clearmove() {
   myGamePiece.speedX = 0; 
   myGamePiece.speedY = 0; 
}

function reload (){
   window.location.reload(true);
}    

</script>
<div class="buttonContainer" style="text-align:center;width:480px;">
 <button onmousedown="moveup()" onmouseup="clearmove()" ontouchstart="moveup()">UP</button><br><br>
 <button onmousedown="moveleft()" onmouseup="clearmove()" ontouchstart="moveleft()">LEFT</button>
 <button onmousedown="moveright()" onmouseup="clearmove()" ontouchstart="moveright()">RIGHT</button><br><br>
 <button onmousedown="movedown()" onmouseup="clearmove()" ontouchstart="movedown()">DOWN</button>
</div>

   <button type="button" class="restart" onclick="reload()"> Restart </button>


</body>
</html> ```


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...