inPlay){
3 if (!hero.dead){
4 listenForKeys();
5 }
6 addFrictionAndGravity();
7 createTempPosition();
8 if (!hero.dead){
9 baddyDetection();
10 platformDetect();
11 collectableDetect();
12 detectFlag();
13 checkFloor();
14 }
15 renderScreen();
16 }
17 };
Здесь присутствует оператор if, который содержит все вызовы функций. Он выполняет действия внутри блока if, если game.inPlay равно true. Свойство inPlay объекта game установлено в true, когда вызывается функция startLevel().
В объекте hero есть свойство с именем dead. Когда герой умирает, dead устанавливается в true; иначе оно равно false. Строка 4, listenForKeys(), выполняется, если hero.dead не равно true. Функция listenForKeys() проверяет, нажаты ли стрелки направления или пробел. Если одна из этих клавиш нажата, она оказывает действие на перемещение героя. Строки 6 и 7 уменьшают скорость горизонтального движения героя за счет трения (сопротивления воздуха или трения поверхности) и увеличивают векторную скорость героя по y на величину силы тяжести.
В строке 8 мы проверяем (снова) умер ли герой. Если нет, то мы выполняем строки 9-13. В строке 9 мы проверяем столкновение героя с врагами. В строке 10 мы выполняем platformDetect(), которая проверяет столкновения между героем и платформами. Затем мы проверяем столкновения между героем и собираемыми предметами, выполняя collectableDetect() в строке 11. В строке 12 мы проверяем, достиг ли герой флага, а в строке 13 мы проверяем, упал ли герой достаточно, чтобы встать на поверхность.
listenForKeys()
Эта функция вызывается в каждом кадре событием onEnterFrame. Она проверяет, нажаты ли клавиши направления или пробел. Если любая из этих контролирующих героя кнопок нажата, то текущее состояние героя может измениться (например, ходьба изменяется на прыжок). Если вы думаете об этом с программистской точки зрения, вы можете увидеть, что управление героем и придание ему максимально реалистичного вида может немного сбить с толку