/********************************************************
1ers exemples d'affichage graphique et du texte...
********************************************************/

#include <allegro.h>
#include <time.h>

int main(int argc, char *argv[])
{
    int c,x,y,tx,ty;

    // Initialiser le générateur aléatoire (si utilisation de rand)
    srand(time(NULL));

    // Pour disposer des caractères ascii étendus (avec accents)
    set_uformat(U_ASCII);

    allegro_init();
    install_keyboard();

    set_color_depth(desktop_color_depth());
    if (set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0)!=0)
    {
        allegro_message("prb gfx mode");
        allegro_exit();
        exit(EXIT_FAILURE);
    }

    // Avoir une couleur (ici du blanc)
    c=makecol(255,255,255);

    // afficher du texte avec accents
    // attention pas de \n : pour un retour ligne afficher avec ordonnées plus grandes !
    textprintf_ex(screen,font,40,70,c,-1,"Accents éèàùïôê ?");
    textprintf_ex(screen,font,40,85,c,-1,"Grâce à l'appel à set_uformat(U_ASCII) au début");
    textprintf_ex(screen,font,40,120,c,-1,"Affichage de valeurs : 3+4=%d",3+4);
    textprintf_ex(screen,font,40,135,c,-1,"Résolution graphique : %dx%d",SCREEN_W,SCREEN_H);

    // On affiche du texte où on veut quand on veut...
    c=makecol(255,0,255);
    textprintf_ex(screen,font,550,20,c,-1,"ici");
    textprintf_ex(screen,font,500,100,c,-1,"là");
    textprintf_ex(screen,font,630,60,c,-1,"ailleurs");

    readkey();

    // test rect et cercle, remplis ou contours
    while (!keypressed())
    {
        y=250+rand()%(SCREEN_H-400);
        x=rand()%SCREEN_W;
        tx=rand()%100;
        ty=rand()%100;
        c=makecol(rand()%256,rand()%256,rand()%256);
        switch (rand()%4)
        {
        case 0 :
            rect(screen, x,y,x+tx,y+ty,c);
            break;
        case 1 :
            rectfill(screen,x,y,x+tx,y+ty,c);
            break;
        case 2 :
            circle(screen,x,y,tx,c);
            break;
        case 3 :
            circlefill(screen,x,y,tx/3,c);
            break;
        }
        rest(100);
    }

    return 0;
}
END_OF_MAIN();