Запуск нескольких сцен в Pythonista

Я изучаю Python через Pythonista на iPhone. Первое, что я сделал, это сделал простой сенсорный джойстик (контроллер). Я начинаю работать над настоящей игрой, но я не знаю, как объединить или наложить две сцены. (Одна — это настоящая игра, а другая — контроллер, который я сделал в другом файле.) Я уже пытался импортировать и запускать его, но похоже, что одновременно можно запустить только один файл: файл контроллера или файл игры. Любая помощь приветствуется.


person BrrrIce    schedule 10.05.2017    source источник
comment
Я не думаю, что есть какой-либо способ наложения сцен. Даже если бы вы могли, это означало бы, что несколько циклов событий выполняются одновременно и мешают друг другу. Вам нужно будет реализовать другие игровые объекты, наряду с контроллером, в той же сцене.   -  person Simon Hibbs    schedule 12.05.2017
comment
@SimonHibbs Итак, как мне создать сложную игру? Кажется таким грязным каждый раз просто наливать то, что мне нужно, в функцию touch_moved().   -  person BrrrIce    schedule 13.05.2017


Ответы (2)


Постараюсь дать более полный ответ, чем мой комментарий выше.

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

Однако вы должны иметь возможность создавать несколько сцен, которые не имеют перекрывающихся видов. Тогда каждое событие касания будет захвачено только той сценой, которой принадлежит область экрана, к которой вы прикасаетесь.

Вы можете наложить одну сцену поверх другой, но Сцена 'overlay' будет фиксировать все сенсорные взаимодействия.

person Simon Hibbs    schedule 15.05.2017
comment
Спасибо за помощь. Тем не менее, я нашел более полезным просто импортировать другой файл .py, который я создал с помощью джойстика, затем вставить его как модуль в основную игру, а затем просто использовать его функции. В моей основной игре это сокращается до 1 строки, что лучше. - person BrrrIce; 16.05.2017

Вместо того, чтобы размещать джойстик на отдельной сцене, вы должны нарисовать его на scene.Node. Затем в свою игровую сцену вы можете добавить его как еще один спрайт, используя Scene.add_child().

Чтобы преобразовать позиции касания в систему координат узлов, вы можете использовать Node.point_from_scene(), а чтобы преобразовать обратно в систему координат сцены, вы используете Node.point_to_scene()

person Benjie    schedule 21.02.2018