Pygame не рисует - PullRequest
       11

Pygame не рисует

0 голосов
/ 21 ноября 2010

Мне нужна помощь с программой, которую я создаю.Это версия игры жизни Конвея.Сейчас эта игра состоит из 3 файлов: main.py, cellBoard.py, cell.py

main.py позаботится о том, чтобы скопировать ячейку и обновить данные, дать ввод мышью и сообщитьон рисует сам себя (ему дается экземпляр поверхности пигмеи, которая обрабатывает его для ячеек, которые являются фактическими, которые рисуют сами)

cellboard.py создает список ячеек на основе их размера иразмер экрана, чтобы заполнить его правильно.Это 2D список.Когда он создает ячейки, он устанавливает их состояние (в настоящий момент живое) и обрабатывает их экземпляр своего экземпляра исходного экземпляра поверхности.

cell.py содержит все, что может сделать ячейка: умереть, жить, бытьtoggled, be draw.

На самом деле, когда мне нужно нарисовать всю доску, я просто вызываю собственный метод drawBoard draw (), и он должен позаботиться о вызове каждой ячейки.И это так.Выполнение доходит до точки, где должна быть нарисована ячейка (проверено с помощью отпечатков), и выполняется функция заполнения пикселями (используя цикл for, чтобы покрыть область).Но на самом деле ничто не отображается на экране, или, по крайней мере, ничего не видно.

Я понятия не имею, что вызывает это.Я проверял код несколько раз, я даже переписал всю программу с нуля, чтобы сделать ее более аккуратной (и у меня была та же проблема, что и сейчас)

Что вызывает это?Моя идея состояла бы в том, что каким-то образом экземпляр поверхности Cell больше не работает, потому что с ним что-то случилось (он проходит через ячейку, прежде чем попасть в каждую ячейку, может ли это быть проблемой?)

Вот источниккод (все 3 файла, они очень короткие и скромные, поэтому их должно быть легко читать) http://dl.dropbox.com/u/2951174/src.zip

Заранее спасибо всем, кто хочет помочь.Мне нужно завершить этот проект очень быстро, поэтому ваша помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 21 ноября 2010

Первое быстрое предложение:
Люди с большей вероятностью помогут вам, если им не нужно загружать zip-файл, в следующий раз просто опубликуйте части кода, которые, как вы подозреваете, не работают.

В любом случае, проблема, кажется, в вашем основном цикле:

#Keyboard events
events = pygame.event.get()
for event in events:
    if event.type == pygame.QUIT:
        running = 0

#Mouse events
#todo

#Grid update  <------- here you update the grid and the cells are being drawn
cb.draw()

#Graphical output    <------------ here you're filling the WHOLE screen with white
screen.fill(THECOLORS["white"])    

pygame.display.flip()

Вам нужно переместить screen.fill вызов выше cb.draw, чтобы не закрашивать ячейки.

Также в cell.py ваш код рисования А) сломан и Б) плох.

Вместо того, чтобы устанавливать каждый пиксель самостоятельно, что является медленным и в его текущем состоянии не рисуетклетки правильно, вы также можете нарисовать прямоугольник:

pygame.draw.rect(self.surface, (100, 10, 10), (self.pos[0], self.pos[1], self.size, self.size))
...