Эффективный способ рисования в Pygame со статическими элементами и элементами, которые обновляют каждую итерацию - PullRequest
0 голосов
/ 28 октября 2019

Я кодирую задачу коммивояжера (TSP) с помощью генетического алгоритма в Python и хочу визуализировать процесс мышления с помощью pygame. Может быть, для этого есть модули лучше, чем pygame, но у меня есть другие функциональные возможности, которые решаются очень просто в pygame (выбор количества городов, численность населения, уровень мутаций и т. Д.), Поэтому я хочу использовать его и для рисования, не добавляя многодополнительный код или модули.

У меня есть функция рисования, которая в основном рисует черный экран, белые точки в качестве городов, текст, который показывает текущую наилучшую длину пути, текущее поколение и все основные параметры на выбор. Проблема в том, что во время вычислений я хочу:

  • Рисовать линии между точками, которые показывают текущий лучший путь
  • Обновлять текст, который показывает лучшую длину пути
  • Обновить текст, показывающий текущее поколение

Однако при рисовании новых линий предыдущие линии все еще остаются, и после некоторых прорастаний становится паутиной линий. Сейчас я все время делаю win.fill (0) и перерисовываю точки, текст и все, что статично, чтобы избавиться от предыдущих строк. Однако я хочу сделать его более эффективным:

init_draw()

for generation in range(max_generations):

    # Calculation formulas here....

    draw_path()

Где путь прорисовки обновляет только то, что действительно необходимо обновить, и удаляет предыдущие строки и текст, который был нарисован в этой функции в предыдущемитерации, чтобы не создавать кластер из строк и текста поверх друг друга.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...