2011-03-03 84 views
0

我一直在試圖學習pygame的最後一天左右,並試圖編寫一個基本的程序,只是從屏幕的頂部落葉的小圖像。 當我運行它時,沒有任何東西出現,我想我錯過了一些明顯的東西,我在做這件事。 (我可以告訴大家,這是這樣做還有一個非常低效的方式,所以建議將不勝感激!)Python Pygame基本程序

下面的代碼:

import pygame 
from pygame.locals import * 
import random 

pygame.init() 


class Leaf: 
    def __init__(self): 
     self.leafimage = pygame.image.load('fallingleaf.jpg').convert() 
     self.leafrect = self.leafimage.get_rect() 
     xpos = random.randint(0, 640) 
     self.leafrect.midtop = (xpos, 0) 
    def move(self): 
     self.leafrect = self.leafrect.move([0, 1]) 

def main(): 
    width= 640 
    heigth = 480 
    dimensions = (width, heigth) 
    screen = pygame.display.set_mode(dimensions) 
    pygame.display.set_caption('Some Epic Pygame Stuff') 

    clock = pygame.time.Clock() 

    leaves = [] 
    for i in range(5): 
     leaves.append(Leaf()) 

    running = 1 
    while running: 
     clock.tick(60) 

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



     for i in leaves: 
      i.move() 
      screen.blit(i.leafimage, i.leafrect) 


     screen.fill((255, 255, 255)) 


     pygame.display.flip() 





    if __name__ == '__main__': main() 
+1

一旦你得到這個工作,如果你正在尋找更多的建議有關如何提高* *你的代碼,你應該問在http://代碼審查。 stackexchange.com/ – SingleNegationElimination 2011-03-03 05:35:17

回答

7

你可能不希望這個順序:

for i in leaves: 
    i.move() 
    screen.blit(i.leafimage, i.leafrect) 


screen.fill((255, 255, 255)) 


pygame.display.flip() 

您繪製樹葉,然後用白色填充整個屏幕,然後顯示屏幕。

填滿屏幕,然後繪製葉子,然後flip()

+0

謝謝!這使現在更有意義。 – Ryan 2011-03-03 05:34:07

+0

如果他的答案有效,那麼你應該點擊答案旁邊的複選標記。 – 2012-08-14 01:45:24