Jan-22-2020, 07:53 AM
Example how I would handle it.
import os import pygame import random from pygame.sprite import Sprite, Group, spritecollide class Engine: def __init__(self, title, width, height, center=True, flags=0): if center: os.environ['SDL_VIDEO_CENTERED'] = '1' pygame.display.set_caption(title) self.surface = pygame.display.set_mode((width, height), flags) self.rect = self.surface.get_rect() self.clock = pygame.time.Clock() self.running = False self.delta = 0 self.fps = 60 class Images: def __init__(self): self.platforms = [] self.create_platforms() def create_platforms(self): colors = pygame.Color("orange"), pygame.Color("firebrick") for enum, width in enumerate(range(50, 101, 5)): platform = pygame.Surface((width, 10)) platform.fill(colors[enum % 2]) self.platforms.append(platform) class Platform(Sprite): def __init__(self, image, position, anchor="topleft"): Sprite.__init__(self) self.image = image self.rect = image.get_rect(**{anchor: position}) self.center = pygame.Vector2(self.rect.center) self.speed = 0.08 def update(self, delta, engine): self.center.y += self.speed * delta self.rect.center = self.center if self.rect.y > engine.rect.bottom: self.kill() def main(): engine = Engine("Moving Platforms", 120, 400) platforms = Group() images = Images() countdown = 1000 interval = 1000 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False countdown -= engine.delta if countdown < 0 and len(platforms) < 7: countdown = interval image = random.choice(images.platforms) width = image.get_rect().width position = random.randrange(0, engine.rect.width - width), random.randrange(-60, -40) platform = Platform(image, position) if len(spritecollide(platform, platforms, False)) == 0: platforms.add(platform) platforms.update(engine.delta, engine) engine.surface.fill(pygame.Color("black")) platforms.draw(engine.surface) pygame.display.flip() engine.delta = engine.clock.tick(engine.fps) main()
99 percent of computer problems exists between chair and keyboard.