self.menu = Menu(self.screen) TypeError: 'module' object is not callable
from threading import Thread
import pygame
import Game
import Menu
import Network
class Main:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((450, 740))
pygame.display.set_caption("Морской бой")
self.running = True
self.clock = pygame.time.Clock()
self.menu = Menu(self.screen)
self.game = None
self.thread_started = False
def run(self):
while self.running:
if self.menu.show_menu:
if (r := self.menu.run()) :
if r == "QUIT":
self.running = False
break
if not self.game:
self.game = Game(self.screen, Network())
self.game.n.send(r)
if not self.thread_started:
if r == "СОЗДАТЬ":
self.recv_thread = Thread(
target=self.game.receiving_thread,
kwargs={"menu": self.menu},
)
elif (d := self.game.n.receive()) != "НЕПРАВИЛЬНО":
if d == "ВЗЯТЬ":
self.menu.game_taken = True
continue
else:
self.recv_thread = Thread(
target=self.game.receiving_thread,
args=(d, self.menu),
)
else:
self.menu.invalid_code = True
continue
self.recv_thread.daemon = True
self.recv_thread.start()
self.thread_started = True
if not (self.menu.invalid_code or self.menu.game_taken):
self.menu.show_menu = False
elif self.game.run() == "MENU":
self.menu.show_menu = True
self.menu.reset()
self.game.reset()
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.running = False
pygame.display.flip()
self.clock.tick(30)
return pygame.quit()
if __name__ == "__main__":
Main().run()
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Если у вас в модуле Menu функция или класс Menu: self.menu = Menu.Menu(self.screen)