self.running = False def start_loop(self): t = threading.Thread(target=self._loop, args=(), daemon=True) t.start() return t if __name__ == '__main__': size = [800, 600] screen = pygame.display.set_mode(size) g = SnakeGame(size[1] // 10, size[0] // 10) rrunning = True while rrunning: g.initialize() g.place_food() game_surf = pygame.Surface(size) font = pygame.font.SysFont('roboto', 16) gt = BoardLogic(g) gt.start_loop() running = True while running: if not gt.running: running = False for event in pygame.event.get(): if event.type == pygame.QUIT: running = False