Просмотр полной версии : Как остановить программу до нажатия любой клавиши "Press any key to continue"?
Olegus79
03.01.2018, 11:40
Я попробовал introloop: if (onkeydown == false) continue introloop;
но это не работает (((
Какэто сделать?
превращать программу в функцию обработчика события keydownя не могу так как такая задержка встречается не один раз
например после нажатия на паузу появляется предложение press any key to continue
Программу нельзя просто взять и остановить на любом месте.
Делишь программу на логические блоки - функции, которые вызывают друг друга рождая взаимодействие - программу. Вот между этими самыми вызовами уже можно остановиться - просто не вызывая следующей функции, которую вызвать уже только на событие от пользователя.
Olegus79
03.01.2018, 15:26
Смысл в том, чтобы игровой цикл останавливался при нажатии на паузу.
Если весь игровой цикл сделать функцией реакции на any key, то это будет неправильно
В js нет никакого игрового цикла, потому что в js нельзя зафигачить какой-нить sleep.
Olegus79
03.01.2018, 16:10
В джаве есть game loop - в инете немало инфы об этом
Как он устроен я разбираюсь.
Во первых java тут не при чём, а во вторых для js это просто называние утянутое из других языков и к циклам, как конструкциям языка, отношения не имеет. В js у нас события и цепочки событий.
Olegus79
03.01.2018, 17:00
В JS есть рекурсия. Вызов функции из нее самой. Это и есть игровой цикл.
Вызов функции по таймеру вроде тоже есть. Можно сделать функцию gameloop, которая вызывает функции элементов игрового мира.
>В JS есть рекурсия. Вызов функции из нее самой.
Есть.
>Это и есть игровой цикл.
Нет.
Я так полагаю вы начитались уроков по игроделу на js в интернете без малейшего базового понимания js. Это печально.
Возов функции через requestAnimationFrame - это не рекурсия и не цикл. AnimationFrame - это тоже событие готовности фрейма и совершенно не обязательно сработает прямо сейчас. Вот в промежуток между одним фремом и другим могут приходить пользовательские события, на которые вам следует реагировать и просто не запрашивать следующий фрейм если нужно остановится.
Olegus79
03.01.2018, 23:43
Моё восприятие программирование находится на уровне "А как это можно сделать без операторов Goto и Gosub-Return"?
Для меня программа - это цикл, который вызывает подпрограммы.
А тут все по-другому....
http://isaacsukin.com/news/2015/01/detailed-explanation-javascript-game-loops-and-timing
Тут всё хорошо расписано. В том числе и остановка.
Olegus79
04.01.2018, 16:22
Спасибо!)
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot