Я недавно начал изучать pygame. Я хотел бы смоделировать дождь в одном из моих проектов. Моя проблема в том, что капли дождя в программе оставляют следы. Программа также содержит функцию pygame.display.flip (), но безуспешно. У меня также была программа с кораблем, которой я могу управлять, и это работает правильно, несмотря на то, что код почти такой же.
Может кто-нибудь объяснить мне причину?
Вот код. Спасибо за помощь.
import sys
import pygame
class Rain:
"""Class to simulate rain."""
def __init__(self):
"""Initialize rain attributes."""
pygame.init()
self.screen = pygame.display.set_mode((1200, 650))
self.settings = Settings()
self.raindrop = Raindrop(self)
def check_key_events(self):
"""Check key and mouse events."""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
def update_screen(self):
"""Update screen."""
self.raindrop.blitme()
pygame.display.flip()
def run_simulation(self):
"""Main loop for simulation."""
while True:
self.check_key_events()
self.raindrop.movement()
self.update_screen()
class Raindrop:
"""Class to represent single raindrop."""
def __init__(self, rain_sim):
"""Initialize raindrop attributes."""
self.screen = rain_sim.screen
self.settings = rain_sim.settings
self.screen_rect = rain_sim.screen.get_rect()
self.image = pygame.image.load('raindrop.png')
self.image = pygame.transform.scale(self.image, (25, 40))
self.rect = self.image.get_rect()
self.y = float(self.rect.y)
def movement(self):
"""Function to move raindrop."""
self.y += self.settings.raindrop_speed
self.rect.y = int(self.y)
def blitme(self):
"""Draw raindrop at the current location."""
self.screen.blit(self.image, self.rect)
class Settings:
"""Class that store settings."""
def __init__(self):
"""Set settings for single parts of program."""
self.raindrop_speed = 1.5
if __name__ == '__main__':
rain_sim = Rain()
rain_sim.run_simulation()