Новое затмение и нуждается в руководстве

Следующий код позволяет вам совместимость с Python 2/3:

try:
    reload
except NameError:
    # Python 3
    from imp import reload

Вы можете использовать его как reload() в обеих версиях, что упрощает работу.

0
задан Nicholas K 3 March 2019 в 12:35
поделиться

1 ответ

Если вы хотите создать простую игру на холсте, вы можете использовать следующие вкладки (классы):

MainThread - этот класс обновляет холст (скажем) на 60 fps, он вызывает update() и draw(Canvas canvas) в классе GamePanel.

GamePanel - этот класс имеет поле GameplayScene, экземпляр GameplayScene - это сцена, которая в данный момент отображается на холсте. В классе GamePanel у вас есть (как минимум) два метода: update() и draw(Canvas canvas), которые вызывают одни и те же методы в экземпляре GameplayScene.

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

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

В каждой сцене, опять же, у вас есть методы update() и draw(Canvas canvas), которые вызывают одни и те же методы в случаях GameObject. Класс сцены отвечает за отслеживание счета игрока, когда игрок умирает, или за то, что игра возобновляется, когда игрок умирает.

GameObject - я бы сделал это интерфейсом, чтобы вы могли иметь несколько объектов, реализующих интерфейс.

Игровым объектом может быть игрок, препятствие, кнопка, враг, все, что нарисовано на холсте.

В методе update() игрового объекта вы (например) устанавливаете положение объекта на основе некоторых вычислений или проверяете, сталкивается ли противник с игроком.
В методе draw(Canvas canvas) игрового объекта единственное, что вы делаете, это рисуете объект на canvas. Вы делаете вычисления в методе update().

0
ответ дан Sacha 3 March 2019 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: