Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Как остановить программу до нажатия любой клавиши "Press any key to continue"? (https://javascript.ru/forum/css-html-firefox-mizilla/72042-kak-ostanovit-programmu-do-nazhatiya-lyubojj-klavishi-press-any-key-continue.html)

Olegus79 03.01.2018 11:40

Как остановить программу до нажатия любой клавиши "Press any key to continue"?
 
Я попробовал introloop: if (onkeydown == false) continue introloop;
но это не работает (((

Какэто сделать?
превращать программу в функцию обработчика события keydownя не могу так как такая задержка встречается не один раз

например после нажатия на паузу появляется предложение press any key to continue

Aetae 03.01.2018 14:42

Программу нельзя просто взять и остановить на любом месте.
Делишь программу на логические блоки - функции, которые вызывают друг друга рождая взаимодействие - программу. Вот между этими самыми вызовами уже можно остановиться - просто не вызывая следующей функции, которую вызвать уже только на событие от пользователя.

Olegus79 03.01.2018 15:26

Смысл в том, чтобы игровой цикл останавливался при нажатии на паузу.
Если весь игровой цикл сделать функцией реакции на any key, то это будет неправильно

Aetae 03.01.2018 15:34

В js нет никакого игрового цикла, потому что в js нельзя зафигачить какой-нить sleep.

Olegus79 03.01.2018 16:10

В джаве есть game loop - в инете немало инфы об этом
Как он устроен я разбираюсь.

Aetae 03.01.2018 16:24

Во первых java тут не при чём, а во вторых для js это просто называние утянутое из других языков и к циклам, как конструкциям языка, отношения не имеет. В js у нас события и цепочки событий.

Olegus79 03.01.2018 17:00

В JS есть рекурсия. Вызов функции из нее самой. Это и есть игровой цикл.
Вызов функции по таймеру вроде тоже есть. Можно сделать функцию gameloop, которая вызывает функции элементов игрового мира.

Aetae 03.01.2018 18:23

>В JS есть рекурсия. Вызов функции из нее самой.
Есть.
>Это и есть игровой цикл.
Нет.

Я так полагаю вы начитались уроков по игроделу на js в интернете без малейшего базового понимания js. Это печально.
Возов функции через requestAnimationFrame - это не рекурсия и не цикл. AnimationFrame - это тоже событие готовности фрейма и совершенно не обязательно сработает прямо сейчас. Вот в промежуток между одним фремом и другим могут приходить пользовательские события, на которые вам следует реагировать и просто не запрашивать следующий фрейм если нужно остановится.

Olegus79 03.01.2018 23:43

Моё восприятие программирование находится на уровне "А как это можно сделать без операторов Goto и Gosub-Return"?
Для меня программа - это цикл, который вызывает подпрограммы.
А тут все по-другому....

Aetae 04.01.2018 02:08

http://isaacsukin.com/news/2015/01/d...ops-and-timing
Тут всё хорошо расписано. В том числе и остановка.


Часовой пояс GMT +3, время: 03:37.