Выразительный JavaScript.

Пауза.

Сделайте возможным ставить и снимать игру с паузы по нажатию клавиши Esc.

Этого можно достичь, поменяв функцию runLevel, чтобы она использовала другой обработчик событий клавиатуры, и прерывала и возобновляла анимацию по нажатию Esc.

На первый взгляд может показаться, что интерфейс runAnimation не предназначен для этого – но если вы поменяете его вызов из runLevel, всё получится.

Когда получится, можете попробовать ещё кое-что. Мы регистрируем события с клавиатуры не самым лучшим способом. Объект arrows – глобальная переменная, и его обработчики событий находятся в памяти, даже если игра не запущена. Можно сказать, они утекают из системы. Расширьте trackKeys, чтоб можно было разрегистрировать обработчики и затем поменяйте runLevel, чтоб она регистрировала их на старте, и разрегистрировала на финише.

<link rel="stylesheet" href="css/game.css">

<body>

<script>

// Старая функция runLevel – поменяйте её...

Function runLevel(level, Display, andThen) {

Var display = new Display(document.body, level);

RunAnimation(function(step) {

Level.animate(step, arrows);

Display.drawFrame(step);

If (level.isFinished()) {

Display.clear();

If (andThen).

AndThen(level.status);

Return false;

}

});

}

RunGame(GAME_LEVELS, DOMDisplay);

</script>

</body>