rock_spawner()


#
# Main
#######
if __name__ == '__main__':
    # Create frame
    frame = simplegui.create_frame('Spaceship prototype',
                                   SCREEN_WIDTH, SCREEN_HEIGHT, 100)

    # Create FPS
    fps = FPS()

    # Load medias
    loader = Loader(frame, SCREEN_WIDTH, start)

    # Images by Kim Lathrop
    loader.add_image('http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_blue.png',
                     'asteroid')
    loader.add_image('http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/debris2_blue.png',
                     'debris')
    loader.add_image('http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/shot2.png',
                     'missile')
    loader.add_image('http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/nebula_brown.png',
                     'nebula')
    loader.add_image('http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/double_ship.png',
                     'ship')

    asteroid_info = ImageInfo((45, 45), (90, 90), 40)
    debris_info = ImageInfo((320, 240), (640, 480))
    def load_medias(self):
        """
        Load images and sounds and waiting all is loaded,
        the set the general draw handler.
        """
        self.img_infos = {
            'asteroid-1':
            ImageInfo((45, 45), (90, 90), 40),
            'asteroid-2':
            ImageInfo((45, 45), (90, 90), 40),
            'asteroid-3':
            ImageInfo((45, 45), (90, 90), 38),
            'asteroid_explosion':
            ImageInfo((64, 64), (128, 128), 17, 24, True),
            'asteroid_collide_explosion':
            ImageInfo((64, 64), (128, 128), 17, 24, True),
            'bomb':
            ImageInfo((10, 10), (20, 20)),
            'debris':
            ImageInfo((320, 240), (640, 480)),
            'little-asteroid-1':
            ImageInfo((45, 45), (90, 90), 27, None, False, (60, 60)),
            'little-asteroid-2':
            ImageInfo((45, 45), (90, 90), 27, None, False, (60, 60)),
            'little-asteroid-3':
            ImageInfo((45, 45), (90, 90), 26, None, False, (60, 60)),
            'live_explosion':
            ImageInfo((64, 64), (128, 128), 17, 24, True),
            'missile':
            ImageInfo((5, 5), (10, 10), 3, 50),
            'nebula':
            ImageInfo((400, 300), (800, 600)),
            'ship':
            ImageInfo((45, 45), (90, 90), 35),
            'ship_explosion':
            ImageInfo((64, 64), (128, 128), 17, 24, True),
            'splash':
            ImageInfo((200, 150), (400, 300))
        }

        def init():
            """
            Init the game after medias loaded.
            """
            if SIMPLEGUICS2PYGAME:
                frame._set_canvas_background_image(
                    self.medias.get_image('nebula'))

            self.medias._images['live_explosion'] = \
                self.medias._images['ship_explosion']

            for i in range(1, 4):
                self.medias._images['little-asteroid-' + str(i)] = \
                    self.medias._images['asteroid-' + str(i)]

            self.medias._sounds['asteroid_collide_explosion'] = \
                self.medias._sounds['asteroid_explosion']

            self.medias.get_sound('missile').set_volume(.5)

            self.my_ship = Ship((SCREEN_WIDTH / 2.0, SCREEN_HEIGHT / 2.0),
                                (0, 0), -math.pi / 2, 'ship')

            frame.set_draw_handler(self.draw_and_update)

            frame.set_keydown_handler(keydown)
            frame.set_keyup_handler(keyup)

            frame.set_mouseclick_handler(click)

            if self.music_active:
                self.medias.get_sound('intro').play()

            self.loaded = True

        self.medias = Loader(frame, SCREEN_WIDTH, init)

        # Images by Kim Lathrop
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_blend.png',
            'asteroid-1')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_blue.png',
            'asteroid-2')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_brown.png',
            'asteroid-3')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/explosion_alpha.png',
            'asteroid_explosion')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/explosion_alpha2.png',
            'asteroid_collide_explosion')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/shot3.png',
            'bomb')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/debris2_blue.png',
            'debris')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/shot2.png',
            'missile')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/nebula_brown.png',
            'nebula')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/double_ship.png',
            'ship')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/explosion_orange.png',
            'ship_explosion')
        self.medias.add_image(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/splash.png',
            'splash')

        # Sounds from http://www.sounddogs.com/ (not free)
        self.medias.add_sound(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/sounddogs/explosion.ogg',
            'asteroid_explosion')
        self.medias.add_sound(
            'http://rpg.hamsterrepublic.com/wiki-images/f/f4/StormMagic.ogg',
            'bomb_explode')
        self.medias.add_sound(
            'http://commondatastorage.googleapis.com/codeskulptor-demos/pyman_assets/extralife.ogg',
            'bomb_extra')
        self.medias.add_sound(
            'http://commondatastorage.googleapis.com/codeskulptor-demos/pyman_assets/eatedible.ogg',
            'collide')
        self.medias.add_sound(
            'http://rpg.hamsterrepublic.com/wiki-images/5/58/Death.ogg',
            'death')
        self.medias.add_sound(
            'http://commondatastorage.googleapis.com/codeskulptor-demos/pyman_assets/intromusic.ogg',
            'intro')
        self.medias.add_sound(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/sounddogs/soundtrack.ogg',
            'soundtrack')
        self.medias.add_sound(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/sounddogs/missile.ogg',
            'missile')
        self.medias.add_sound(
            'http://commondatastorage.googleapis.com/codeskulptor-assets/sounddogs/thrust.ogg',
            'ship_thrust')

        self.medias.load()

        self.medias.wait_loaded()
    """
    if not SIMPLEGUICS2PYGAME:
        global logo

        logo = loader.get_image('logo')

    frame.set_draw_handler(draw)

    if SIMPLEGUICS2PYGAME:
        from sys import argv

        if len(argv) == 2:
            frame._save_canvas_and_stop(argv[1])


loader = Loader(frame, WIDTH, init)
loader.add_image(
    'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/double_ship.png',
    'double_ship')
if not SIMPLEGUICS2PYGAME:
    loader.add_image(
        'http://simpleguics2pygame.readthedocs.org/en/latest/_images/SimpleGUICS2Pygame_64x64_t.png',
        'logo')
loader.load()

loader.wait_loaded()

if SIMPLEGUICS2PYGAME:
    logo = simplegui._load_local_image(
        '../_img/SimpleGUICS2Pygame_64x64_t.png')
    # Set the real draw handler
    frame.set_draw_handler(draw)


def quit_prog():
    """
    Stop sounds and frame
    """
    loader.pause_sounds()  # stop all sounds
    frame.stop()
    if SIMPLEGUICS2PYGAME and frame._print_stats_cache:
        loader.print_stats_cache()


loader = Loader(
    frame,  # the frame
    WIDTH,  # the width frame
    init)  # the function to call after loading

# Specified images to load with its URL and give them a name.
loader.add_image(
    'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_blend.png',
    'asteroid')
loader.add_image(
    'http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/double_ship.png',
    'double_ship')
loader.add_image('xxx', 'incorrect url')

# Specified sounds to load with its URL and give them a name.
loader.add_sound(
    'http://commondatastorage.googleapis.com/codeskulptor-assets/sounddogs/explosion.ogg',
    'explosion')