Python , практическое задание из книги
Капли: найдите изображение дождевой капли и создайте сетку из капель. Капли должны постепенно опускаться вниз и исчезать у нижнего края экрана. Вот что нужно сделать
rain.py
import pygame.image
from pygame.sprite import Sprite
class Rain(Sprite):
def **__init__**(self, r_setting, screen):
super().**__init__**()
self.r_setting = r_setting
self.screen = screen
self.image = pygame.image.load('rain.bmp')
self.rect = self.image.get_rect()
self.y = float(self.rect.y)
self.screen_rect = screen.get_rect()
def update(self):
self.y += self.r_setting.rain_speed
self.rect.y = self.y
def blitme(self):
self.screen.blit(self.image, self.rect)
game_functions.py
import pygame
import sys
from rain import Rain
def check_event():
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
sys.exit()
def update_screen(r_setting, screen, rain):
**pygame.init()**
screen.fill(r_setting.bg_color)
rain.draw(screen)
check_screen_rect_bottom(r_setting, screen, rain)
pygame.display.flip()
def update_rain(r_settings, screen, rain):
rain.update()
rain1 = Rain(r_settings, screen)
rain1_w = rain1.rect.width
available_space = r_settings.screen_width - 2 * rain1_w
much_rain = int(available_space / (2 * rain1_w))
for rainy in range(much_rain):
rain12 = Rain(r_settings, screen)
rain12.x = rain1_w + 2 * rain1_w * rainy
rain12.rect.x = rain12.x
rain.add(rain12)
def check_screen_rect_bottom(r_settings, screen, rain):
rain1 = Rain(r_settings, screen)
for raine in rain.copy():
if raine.rect.bottom >= rain1.screen_rect.bottom:
rain.remove(raine)
rain_settings.py
class Settings():
def **__init__**(self):
self.screen_width = 1550
self.screen_height = 800
self.rain_speed = 1
self.drop_rain = 5
self.bg_color = (255, 255, 255)
main.py
import pygame
from rain_settings import Settings
import game_functions as gf
from pygame.sprite import Group
from rain import Rain
def run_game():
r_settings = Settings()
screen = pygame.display.set_mode((r_settings.screen_width, r_settings.screen_height))
rain = Group()
#rain = Rain(r_settings, screen)
pygame.display.set_caption('Rain')
while True:
gf.check_event()
rain.update()
gf.update_rain(r_settings, screen, rain)
gf.update_screen(r_settings, screen, rain)
run_game()
Вот мой код, получается ряд капель я создал, но когда запускаю код капли остаются на месте, а вместо их падения рисуются просто линии. Когда делаю все для одной капли , то работает все как надо, то есть она падает как и должна