Проблема заключается в том, что вы снова импортируете main в файл движений.
Это вызвано тем, что при импорте файла в основном выполняется его запуск, поэтому при запуске main.py вы импортируете движения Move.py и один изПервое, что вы делаете, это снова импортируете main.В Python есть некоторые функции, которые допускают циклический импорт, поэтому он не импортирует моменты снова, вызывая бесконечный цикл.Таким образом, python больше не импортирует движения, но устает создавать экземпляр Player, однако Player еще не определен.
У вас есть два решения: либо не импортировать main из файла движений, либо переместить player1 = Player(300, 300, 50, 50, 50)
в собственный метод class +.Например, класс MainGame с методом run ().Или переместите их в блок, например:
if __name__ == "__main__":
player1 = Player(300, 300, 50, 50, 50)
#... main loop of your game.
Это условие является простым условием, которое выполняется только при запуске файла Python, а не при его импорте.
Таким образом, вы можете определить некоторые вещи в вашем main.py, которые можно использовать в движениях.Однако лучше не использовать циклический импорт.
К вашему сведению, полезно посмотреть на трассировку стека, здесь вы можете увидеть, как она перешла из основного в движения, затем обратно в основную и вызвала ошибку, а не импортировала движения, а затем продолжала работать внутри основного,
Traceback (most recent call last):
File "main.py", line 1, in <module>
from movement import *
File "/home/user/temp/so/movement.py", line 2, in <module>
from main import *
File "/home/user/temp/so/main.py", line 9, in <module>
player1 = Player(300, 300, 50, 50, 50)
NameError: name 'Player' is not defined
Надеюсь, это поможет!