Когда я запускаю свою программу, я хочу, чтобы она запускалась start_game(self)
. Для этого нужно запустить конструктор. Без этого объекты не существуют, и поэтому их методы не могут быть запущены. Пока что так ясно. В принципе, я пытаюсь правильно «начать» этот процесс.Невозможно указать переменную self, если __name__ == '__main__': block
from Surface import Surface
from Pellet import Pellet
from Pacman import Pacman
from Ghost import Ghost
from Timer import Timer
class Controls:
def __init__(self):
global the_surface
the_surface = Surface(self)
the_pellets = []
for y in range(0, 8):
for x in range(0, 14):
pellet = Pellet(x, y)
the_pellets.append(pellet)
global the_pacman
the_pacman = Pacman(the_pellets)
the_ghosts = []
for ghost in range(0, 3):
the_ghosts.append(Ghost())
global the_timer
the_timer = Timer(self, 200)
# [...]
def start_game(self):
self.__init_game_objects()
Timer.start(the_timer)
return
def tick_timer(self):
Pacman.move(the_pacman)
return
# http://stackoverflow.com/a/419185
if __name__ == '__main__':
# need to run start_game()
То, что я пытался (все следующее после if __name__ [...]
линии, каждая точка пуля представляет одну пробу.)
первая попытка:
the_controls = Controls()
the_controls.start_game(the_controls)
Traceback (most recent call last):
File "Controls.py", line 8, in <module>
class Controls:
File "Controls.py", line 53, in Controls
the_controls = Controls()
NameError: name 'Controls' is not defined
вторую попытку :
__init__('Controls')
self.start_game(self)
Traceback (most recent call last):
File "Controls.py", line 8, in <module>
class Controls:
File "Controls.py", line 54, in Controls
self.start_game(self)
NameError: name 'self' is not defined
третья попытка (как это было предложено @ TigerhawkT3)
the_controls = Controls()
the_controls.start_game()
Traceback (most recent call last):
File "Controls.py", line 8, in <module>
class Controls:
File "Controls.py", line 53, in Controls
the_controls = Controls()
NameError: name 'Controls' is not defined
Является ли ваш отступ неправильным или является '' if __name__'' ... определенным в вашем классе? – MSeifert
@MSeifert согласно http://stackoverflow.com/a/419185/5124117 Мне не нужно определять '__name__', поскольку это автоматически настраивается при запуске программы. Я проверю свой отступ – toogley
Извините, я имел в виду '' if __name__ == '__main __': '' имеет тот же отступ, что и внутри класса в вашем первом блоке кода. (последние несколько строк) – MSeifert