Следующий код позволяет вам совместимость с Python 2/3:
try:
reload
except NameError:
# Python 3
from imp import reload
Вы можете использовать его как reload()
в обеих версиях, что упрощает работу.
Если вы хотите создать простую игру на холсте, вы можете использовать следующие вкладки (классы):
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()
.