2010-11-20 3 views
0

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

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

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

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

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

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

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

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

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

ответ

5

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

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

#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 ваш код чертежа A) Разбитый и B) плохой.

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

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

Блин, какая глупая ошибка, которую я сделал! Большое спасибо за помощь, и спасибо за предложение о том, как правильно рисовать :) –

+0

Нет проблем. Просто не забывайте поднимать/принимать, если это было полезно. –

+0

+1 для быстрого предложения – John

Смежные вопросы