Форум сайта python.su
0
Доброго времени суток!
Пишу свою игру “Жизнь”. Весь функционал написан, работает… Вопрос возникает в графике. Задумал отрисовать все это с помощью matplotlib, но не могу разобраться нормально. Подскажите пожалуйста как мне анимировать картинку? Или может использовать другое решение?
Офлайн
58
pygame
Офлайн
221
mma689
matplotlib совсем для другого. Это условная реплика функционала MATLAB для отрисовки графиков,а не графики
Офлайн
0
import numpy as np import matplotlib.pyplot as plt n=10 fig = plt.figure(num=1, dpi=100, facecolor='w', edgecolor='w') plt.ion() while(True): a=np.random.randint(2,size=(n,n)) for i in range(0,n): for j in range(0,n): if(a[i][j]==0): im=plt.plot(i,j,'ro') else: im=plt.plot(i,j,'bs') plt.draw() fig.clear()
Отредактировано mma689 (Окт. 5, 2014 08:13:31)
Офлайн
221
mma689
а) я не вижу утечки памяти
б) код входит в бесконечный цикл (while True) который выполняет отрисовку одного и того же (!) набора данных. Сам процес отрисовки ресурсозатратный. поэтому получается что программа “виснит”, ведь по сути она выполняет ровно то что ей вы задали - бекончено рисовать один и тот же набор данных
Офлайн
0
а)Хммм….
б)Почему одного и того же? С каждым проходом по циклу while генерируется новый массив => происходит разная отрисовка. Или важна суть именно новой точки, а не ее цвета?
Офлайн
221
mma689
прошу прощения, был не прав. Дело не в наборах данных, а в самом matplotlib, “виснит” даже не он, а окно которое пытается отрисовать все это. Попробуйте запустить ваш код и передвинуть окно - оно “зависнет”.
Так что как то так.
Офлайн
0
JOHN_16
Вот да… И в чем же проблема? Я так понимаю функции типа animation позволяют рисовать, но подходит ли это для цикла типа While(True)?
Или не могли бы Вы подсказать какое решение? Я частично уже потыкался в pygame, успех кое какой есть, но как минимум надо обточить алгоритм, ибо там выдает очень маленьких фпс.
Офлайн
221
mma689
я не подскажу, могу лишь посоветовать посмотреть открытые проекты (игры) сделанные на pygame. Возможно подчеркнете для себя много полезного. В целом, насколько я видел, недостатка быстродействия там для подобных задач там не наблюдается.
Офлайн
0
JOHN_16
Жаль, но спасибо!
Офлайн