mma689
Окт. 4, 2014 12:16:41
Доброго времени суток!
Пишу свою игру “Жизнь”. Весь функционал написан, работает… Вопрос возникает в графике. Задумал отрисовать все это с помощью matplotlib, но не могу разобраться нормально. Подскажите пожалуйста как мне анимировать картинку? Или может использовать другое решение?
4kpt_II
Окт. 4, 2014 12:52:14
pygame
JOHN_16
Окт. 5, 2014 00:58:46
mma689
matplotlib совсем для другого. Это условная реплика функционала MATLAB для отрисовки графиков,а не графики
mma689
Окт. 5, 2014 07:42:34
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()
Но в чем проблема?
а)Утекает память.
б)После нескольких итераций виснет оО
JOHN_16
Окт. 6, 2014 01:17:56
mma689а) я не вижу утечки памяти

б) код входит в бесконечный цикл (while True) который выполняет отрисовку одного и того же (!) набора данных. Сам процес отрисовки ресурсозатратный. поэтому получается что программа “виснит”, ведь по сути она выполняет ровно то что ей вы задали - бекончено рисовать один и тот же набор данных
mma689
Окт. 6, 2014 14:02:38
а)Хммм….
б)Почему одного и того же? С каждым проходом по циклу while генерируется новый массив => происходит разная отрисовка. Или важна суть именно новой точки, а не ее цвета?
JOHN_16
Окт. 6, 2014 23:51:12
mma689
прошу прощения, был не прав. Дело не в наборах данных, а в самом matplotlib, “виснит” даже не он, а окно которое пытается отрисовать все это. Попробуйте запустить ваш код и передвинуть окно - оно “зависнет”.
Так что как то так.
mma689
Окт. 7, 2014 11:27:05
JOHN_16
Вот да… И в чем же проблема? Я так понимаю функции типа animation позволяют рисовать, но подходит ли это для цикла типа While(True)?
Или не могли бы Вы подсказать какое решение? Я частично уже потыкался в pygame, успех кое какой есть, но как минимум надо обточить алгоритм, ибо там выдает очень маленьких фпс.
JOHN_16
Окт. 7, 2014 11:47:10
mma689
я не подскажу, могу лишь посоветовать посмотреть открытые проекты (игры) сделанные на pygame. Возможно подчеркнете для себя много полезного. В целом, насколько я видел, недостатка быстродействия там для подобных задач там не наблюдается.
mma689
Окт. 7, 2014 12:47:09
JOHN_16
Жаль, но спасибо!