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()

Вот мой код, получается ряд капель я создал, но когда запускаю код капли остаются на месте, а вместо их падения рисуются просто линии. Когда делаю все для одной капли , то работает все как надо, то есть она падает как и должна


Ответы (0 шт):