我希望程序运行时能显示4排雨滴同时下落,但程序运行时只能看见一排雨滴下落,但如果我把self.rains.update()注释掉再运行程序,4排雨滴又正常显示了
import sys
import pygame
from rain import Rain
class Xiayu:
'''创建窗体'''
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((800,600))
self.screen_rect = self.screen.get_rect()
pygame.display.set_caption("雨一直下")
self.bj_color =(255,255,255)
self.rains = pygame.sprite.Group()
self._create_fleet()
def run(self):
while True:
self.check_event()
self.rains.update()
self.screen_update()
def check_event(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
def screen_update(self):
self.screen.fill(self.bj_color)
self.rains.draw(self.screen)
pygame.display.flip()
def _create_fleet(self):
rain = Rain(self)
rain_width,rain_height = rain.rect.size
ky_screen = self.screen_rect.width - (2 * rain_width)
ky_number = ky_screen // (2 * rain_width)
for n in range(4):
for number in range(ky_number):
rain = Rain(self)
rain.x = rain_width + 2 * rain_width * number
rain.rect.x = rain.x
rain.rect.y = rain.rect.height + 2 * rain.rect.height * n
self.rains.add(rain)
if __name__ == "__main__":
a = Xiayu()
a.run()
import pygame
from pygame.sprite import Sprite
class Rain(Sprite):
def __init__(self,abc):
super().__init__()
self.screen = abc.screen
self.image = pygame.image.load('C:/Users/xcz000/Desktop/My Python/images/rain1.bmp')
self.rect = self.image.get_rect()
self.rect.x = self.rect.width
self.rect.y = self.rect.height
self.y = float(self.rect.y)
def update(self):
self.y += 0.1
self.rect.y = self.y
所以你想问什么
该回答引用GPTᴼᴾᴱᴺᴬᴵ
您好,根据您的代码和描述,可能是因为雨滴下落的速度太快,使得多排雨滴同时下落时,上方的雨滴遮盖了下方的雨滴。您可以尝试调整雨滴下落的速度,例如将 self.y += 0.1 改为 self.y += 0.05。
·
另外,您可以尝试在每个雨滴的下落轨迹上留出一定的间隔,例如将 rain.rect.y = rain.rect.height + 2 * rain.rect.height * n 改为 rain.rect.y = rain.rect.height + 2 * rain.rect.height * n + 50 * n。这样可以使得每排雨滴之间有一定的间隔,防止上方的雨滴遮盖下方的雨滴。
·
最后,如果您仍然无法解决问题,建议将具体的显示问题描述清楚,并提供完整的代码和运行环境,以便更好地定位问题。