Beispiel #1
0
class Background():
    def __init__(self, screen, settings, group):
        self.max_stars = 250
        self.star_speed = 2
        self.stars = []
        self.group = group
        self.screen = screen

        # galaxy sprite
        self.galaxy_last_release = pygame.time.get_ticks()
        self.galaxy_released = True
        self.galaxy_period = 10000
        self.galaxy_speedx = 0
        self.galaxy_speedy = 3
        self.galaxy = GameObject(group, self.galaxy_speedx, self.galaxy_speedy,
                                 randrange(100, 539), -100)
        self.galaxy.set_image("assets/objects/galaxy.png")

    def init_bkg(self):
        """ Create the starfield """
        for i in range(self.max_stars):
            # A star is represented as a list with this format: [X,Y]
            star = [
                randrange(0,
                          self.screen.get_width() - 1),
                randrange(0,
                          self.screen.get_height() - 1)
            ]
            self.stars.append(star)

    def update_stars(self):
        """ Move and draw the stars in the given screen """
        for star in self.stars:
            star[1] += self.star_speed
            # If the star hit the bottom border then we reposition
            # it in the top of the screen with a random X coordinate.
            if star[1] >= self.screen.get_height():
                star[1] = 0
                star[0] = randrange(0, 639)

    def update_galaxy(self):
        now = pygame.time.get_ticks()
        if self.galaxy_released:
            if now - self.galaxy_last_release > self.galaxy_period:
                self.galaxy.set_y(-100)
                self.galaxy.set_x(randrange(0, 639))
                self.galaxy.set_speed_y(randrange(1, 3))
                self.group.add(self.galaxy)
                self.galaxy_released = False
                self.galaxy_last_release = now
        else:
            if self.galaxy.get_y() >= self.screen.get_height():
                self.galaxy_last_release = now
                self.galaxy_released = True
                self.galaxy.kill()

    def update(self):
        self.update_stars()
        self.update_galaxy()

    def draw(self):
        for star in self.stars:
            self.screen.set_at(star, (255, 255, 255))