Documentation de la bibliothèque MLV-0.6.705

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[] ){
        
        MLV_Keyboard_button touche = MLV_KEYBOARD_UNKNOWN;
        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 *run_animation, *walk_animation;
        MLV_Animation_player* run_animation_player, *walk_animation_player;

        const char* book_file_path = "animation_book.xml";
        book = MLV_load_animation_book( book_file_path, NULL, NULL );
        if( ! book ){
                fprintf( stderr, "Failed to load the file %s\n", book_file_path );
                exit(1);
        }

        walk_animation = MLV_get_animation_from_name( book, "walk" );
        run_animation = MLV_get_animation_from_name( book, "run" );

        walk_animation_player = MLV_create_animation_player( walk_animation );
        run_animation_player = MLV_create_animation_player( run_animation );

        MLV_play_animation_player( walk_animation_player );
        MLV_turn_off_sound_of_animation_player( walk_animation_player, 0 );
        MLV_change_sound_volume_of_animation_player( walk_animation_player, 0, 0.2 );

        MLV_play_animation_player( run_animation_player );
        MLV_turn_off_sound_of_animation_player( run_animation_player, 0 );
        MLV_change_sound_volume_of_animation_player( run_animation_player, 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_player( run_animation_player );
                MLV_update_animation_player( walk_animation_player );


                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_image_from_animation_player(   run_animation_player, 0, x_run, y );
                MLV_draw_image_from_animation_player( walk_animation_player, 0, x_walk, y );
                MLV_actualise_window();
                MLV_play_sound_from_animation_player( run_animation_player, 0 );
                MLV_play_sound_from_animation_player( walk_animation_player, 0 );

                if( touche==MLV_KEYBOARD_m ){
                        if( sound ){
                                MLV_turn_off_sound_of_animation_player( walk_animation_player, 0 );
                                MLV_turn_off_sound_of_animation_player( run_animation_player, 0 );
                                sound = 0;
                        }else{
                                MLV_turn_on_sound_of_animation_player( walk_animation_player, 0 );
                                MLV_turn_on_sound_of_animation_player( run_animation_player, 0 );
                                sound = 1;
                        }
                        touche = MLV_NONE;
                }

                MLV_delay_according_to_frame_rate();
        }

        MLV_stop_all_sounds();

        MLV_free_animation_player( walk_animation_player );
        MLV_free_animation_player( run_animation_player );
        MLV_free_animation_book( book );

        MLV_free_window();
        MLV_free_audio();

        return 0;
}