Documentation de la bibliothèque MLV-0.5

advanced/11_animation_book.c

Ce programme charge un enseble d'animation a partir d'un fichier de configuration au format xml et d'un certain nombre d'image donnée.

#include <MLV/MLV_all.h>


//
// Attention ! 
// Pour pouvoir compiler ce programme sous windows et sous macintosh,
// il faut, pour la déclaration du main, respecter strictement la syntaxe
// suivante :
//
int main( int argc, char *argv[] ){
        
        int touche;
        int width = 640, height = 480;
        int x_walk = 0, y = 0, x_run = 100;

        MLV_init_audio();
        MLV_create_window( "advanced - 9 animation", "animation", width, height );

        MLV_Animation_book *book;
        MLV_Animation_sequence *run_sequence, *walk_sequence;
        MLV_Animation* run_animation, *walk_animation;

        book = MLV_load_animation_book( "./animation_book.xml", NULL, NULL );

        walk_sequence = MLV_get_animation_from_name( book, "walk" );
        run_sequence = MLV_get_animation_from_name( book, "run" );

        walk_animation = MLV_create_animation( walk_sequence );
        run_animation = MLV_create_animation( run_sequence );

        MLV_play_animation( walk_animation );
        MLV_turn_off_sound_on_animation( walk_animation, 0 );
        MLV_change_sound_volume_on_animation( walk_animation, 0, 0.2 );

        MLV_play_animation( run_animation );
        MLV_turn_off_sound_on_animation( run_animation, 0 );
        MLV_change_sound_volume_on_animation( run_animation, 0, 0.2 );

        MLV_change_frame_rate( 24 );

        int sound = 0;
        while( 
                MLV_get_event (
                        &touche, NULL, NULL,
                        NULL, NULL,
                        NULL, NULL, NULL,
                        NULL
                ) == MLV_NONE ||
                touche != MLV_KEYBOARD_ESCAPE
        ){
                MLV_update_animation( run_animation );
                MLV_update_animation( walk_animation );


                MLV_draw_filled_rectangle( 0,0, width, height, MLV_COLOR_YELLOW );
                MLV_draw_text( 
                        20,150, 
                        "Laissez la touche m appuyee pour entendre le son des animations.", 
                        MLV_COLOR_BLACK
                );
                MLV_draw_animation(     run_animation, 0, x_run, y );
                MLV_draw_animation( walk_animation, 0, x_walk, y );
                MLV_actualise_window();

                if( touche==MLV_KEYBOARD_m ){
                        if( sound ){
                                MLV_turn_off_sound_on_animation( walk_animation, 0 );
                                MLV_turn_off_sound_on_animation( run_animation, 0 );
                                sound = 0;
                        }else{
                                MLV_turn_on_sound_on_animation( walk_animation, 0 );
                                MLV_turn_on_sound_on_animation( run_animation, 0 );
                                sound = 1;
                        }
                        touche = MLV_NONE;
                }

                MLV_delay_according_to_frame_rate();
        }

        MLV_stop_all_sounds();

        MLV_free_animation( walk_animation );
        MLV_free_animation( run_animation );
        MLV_free_animation_book( book );

        MLV_free_window();
        MLV_free_audio();

        return 0;
}