2011-03-03 3 views
0

J'ai essayé d'apprendre pygame le dernier jour, et j'ai essayé d'écrire un programme de base qui a juste une petite image d'une feuille qui tombe du haut de l'écran. Rien n'apparaît quand je le lance, et j'imagine qu'il me manque quelque chose d'évident dans la façon dont je le fais. (Je peux dire que c'est une façon très inefficace de le faire aussi bien, si des conseils serait appréciée!)Python Programme de base Pygame

Voici le code:

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

Une fois que vous obtenez ce travail, si vous êtes à la recherche pour plus de conseils sur la façon de * améliorer * votre code, vous devez demander sur http: // CodeReview. stackexchange.com/ – SingleNegationElimination

Répondre

7

Vous ne voulez probablement pas cette séquence:

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


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


pygame.display.flip() 

Vous dessinez les feuilles, puis remplissez tout l'écran avec du blanc, puis affichez l'écran.

remplir l'écran, puis dessiner les feuilles, puis flip()

+0

Merci! Cela a beaucoup plus de sens maintenant. – Ryan

+0

si sa réponse fonctionne, alors vous devez cliquer sur la coche à côté de sa réponse. –