Python 使用pygame在屏幕上创建雨滴

Python 使用pygame在屏幕上创建雨滴,python,pygame,Python,Pygame,这是速成班的一个练习-在这个阶段,我试图创造一排雨滴,但我相信我的for循环,有些东西坏了。。我在每次迭代时更新图像的rect位置,然后将其添加到sprite组中,为什么不在屏幕上绘制() import sys import pygame from raindrops import Raindrop from pygame.sprite import Group def let_it_rain(): '''initialize pygame, settings, and scree

这是速成班的一个练习-在这个阶段,我试图创造一排雨滴,但我相信我的for循环,有些东西坏了。。我在每次迭代时更新图像的rect位置,然后将其添加到sprite组中,为什么不在屏幕上绘制()

import sys
import pygame
from raindrops import Raindrop
from pygame.sprite import Group 


def let_it_rain():
    '''initialize pygame, settings, and screen object'''
    pygame.init()
    screen_width = 1200
    screen_height = 800
    bg_color = (144, 177, 226)
    screen = pygame.display.set_mode((screen_width, screen_height))
    pygame.display.set_caption("Let It Rain")

    raindrop = Raindrop(screen)
    raindrops = Group()

    #number of drops in a row
    spacex = screen_width - (2 * raindrop.rect.width)
    raindrop_number_x = int(spacex / (2 * raindrop.rect.width))


    #start window for raindrops
    while True:
        screen.fill(bg_color)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        for raindrop_number in range(raindrop_number_x):
            raindrop = Raindrop(screen)
            raindrop.rect.x = raindrop.rect.x + 2 * raindrop.rect.x * raindrop_number_x
            raindrops.add(raindrop)

        raindrops.draw(screen)
        pygame.display.flip()

let_it_rain()

这是我在另一个模块上的雨滴课

import pygame
from pygame.sprite import Sprite


class Raindrop(Sprite):

    def __init__(self, screen):

        #load image
        super(Raindrop, self).__init__()
        self.screen = screen
        self.pic = pygame.image.load('rain.png')
        self.image = pygame.transform.smoothscale(self.pic,(50,60))
        self.rect = self.image.get_rect()

        #starting position
        self.rect.x = self.rect.width 
        self.rect.y = self.rect.height 

    def blit(self):
        raindrops.draw(screen)
        # self.screen.blit(self.image, self.rect)

感觉这与blit vs.draw有关,或者我的位置没有以某种方式更新主循环中的位置,在设置下降矩形时,使用循环变量而不是下降计数:

for raindrop_number in range(raindrop_number_x):
    raindrop = Raindrop(screen)
    raindrop.rect.x = raindrop.rect.x + 2 * raindrop.rect.x * raindrop_number  # use loop variable
    raindrops.add(raindrop)