Я кодирую небольшую игру-змейку на javascript, чтобы я и мои друзья могли играть в нее только один раз и сравнивать наши рекорды. Но когда вы заканчиваете игру, вам нужно перезагрузить сайт, и вы не можете просто нажать кнопку типа «Попробовать снова», и игра перезапускается / перезагружается javascript.

if(snakeX < box || snakeX > 17 * box || snakeY < 3*box || snakeY > 17*box || collision(newHead,snake)){
    clearInterval(game);
    dead.play();
}

Это интервал "игры" let game = setInterval(draw,100);

0
Narrox YT 22 Окт 2019 в 23:07
3
Сделайте функцию, которая запускает игру и управляется кнопкой, а не загрузкой страницы. Если вы хотите получить более точный ответ, укажите более подходящий код.
 – 
mwilson
22 Окт 2019 в 23:10

2 ответа

Используйте location.reload ()

<button onclick="location.reload();">Try again</button>
0
Ole 22 Окт 2019 в 23:33
<button id="retry" style="display:none">Retry</button>
function Box() {...}

function Snake() {...}

function Game() {
    this._box = new Box()
    this._snake = new Snake()
    this._retry = document.getElementById('retry')

    this._retry.addEventListener('click', function () {
        this.start()
    })
}

Game.prototype.displayRetry = function () {
    this._retry.style = 'display:block'
}

Game.prototype.hideRetry = function () {
    this._retry.style = 'display:none'
}

Game.prototype.start = function () {
    this.hideRetry()
    this._snake.alive()
    this._interval = setInterval(function () { this.draw() }, 100)
}

Game.prototype.check = function () {
    var bounds = this._box.bounds
    var position = this._snake.position

    return position.x < bounds.xMin || position.x > bounds.xMax || position.y < bounds.yMin || position.y > bounds.yMax || this._snake.hasCollidedWithSelf()
}

Game.prototype.draw = function () {
   // ...

   if (this.check()) {
       this.end()
   }
}

Game.prototype.end = function () {
    this._snake.dead()
    this.displayRetry()
}
0
ArrayKnight 22 Окт 2019 в 23:34