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