Navette 1.1

Description

Nouvelle version de ce prog comme promis . J' ai donc essayer de corriger le clipping (vous savez lorsque l'on voit que la navette j ' efface et ce redessine) et j' ai tout simplement utiliser une synchronisation d'écran . Le code a un peu changer égalemnt car j' ai fait des fonctions pour rendre le code plus clair .

Source / Exemple :


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

//declaration des pointeurs que je ne metrise pas parfaitement
BITMAP *ovni;
BITMAP *buffer;
PALLETE pallete;

int x,y,a; //declaration des variables
void draw();

main()
{
x=320;  //initialisation des variables
y=200;
allegro_init();   //inintialisation d'allegro
install_keyboard();//inintialisation du clavier
install_timer();

printf("-version 2 de pallette, il y a maintenat la synchronisation d'‚cran\n");
printf("le mouvement est donc plus fluide\n\n");
printf("-appuie sur les fleches pour diriger la navette\n\n");
printf("-si tu sors de l'ecran tu reapparaŒtras de l' autre c“t‚\n\n");
printf("-appuies sur ESC pour quitter\n\n\n\n\n\n");
printf("maintenant appuie sur une touche pour commencer\n");
readkey();
set_gfx_mode(GFX_AUTODETECT,640,480,0,0);   //mode video

buffer=create_bitmap(54,54); //creation d' une memoire virtuel
clear(buffer);

ovni=load_bitmap("ovni4.bmp",pallete);
set_pallete(pallete);
blit(ovni,buffer,0,0,0,0,54,54);   //copie de l'image da,s la memoire virtuel

blit(buffer,screen,0,0,x,y,54,54); //copiie de la memoire virtuel a l'ecran

        while(1)   //boucle attendant la pression des touches disponible
        {
        //readkey();
        draw();
        
        if(key[KEY_ESC])         // sortie de la boucle
        {
        set_gfx_mode(GFX_TEXT,640,480,0,0);
        printf("Ce programme beta a ‚t‚ fait par Lothar en janvier  2003\n");
        readkey();
        exit(0);
        }

        if(key[KEY_DOWN])
        {    //debut de if
        //clear(screen); //efface l'ecran
        y+=5;// deplacement de 20 pixels
        //blit(ovni,buffer,0,0,x,y,54,54);   //coie l'ovni qui s'est deplacer dans la memoire virtuel
             if(y>450){    //si l'ovni sors de l'ecran par le bas alors
             y=-40;        //il reapparaŒt en haut
              //blit(ovni,buffer,0,0,x,y,54,54);  //copie l'emplacement de l'ovni ds la memoire virtuel
             }   //fine du 2eme if
        } //fin du 1er if

        //les commentaires sont les meme pour les commande suivantes
        //avec qq nuances
        if(key[KEY_UP])
        {
        //clear(screen);
        y+=-5;
        //blit(ovni,buffer,0,0,0,0,54,54);
                 if(y<-40){
                 y=450;
                 //blit(ovni,buffer,0,0,x,y,54,54);
                  }
        }

         if(key[KEY_LEFT])
        {
        //clear(screen);
        x+=-5;
        //blit(ovni,buffer,0,0,0,0,54,54);
                   if(x<0){
                   x=625;
                   //blit(ovni,buffer,0,0,0,0,54,54);
                    }
        }

         if(key[KEY_RIGHT])
        {
        //clear(screen);
        x+=5;
        //blit(ovni,buffer,0,0,0,0,54,54);
            if(x>630){
            x=-40;
            //blit(ovni,buffer,0,0,0,0,54,54);
            }

        }
        //draw();
        //blit(buffer,screen,0,0,x,y,54,54);

       //j'ai mis ceci en commmentaire car c'est une erreur que j'avais faite
       //et pour ne pas le refaire et bien je l'est mise en commentaire
       // if (x>645){
       //blit(buffer,screen,0,0,-5,y,54,54);
       // }
        }  //fin de while(1)
        

}//fin de main()

//programmation des fonctions

void draw()
{
blit(ovni,buffer,0,0,0,0,54,54);
vsync();  // ici la synchronisation
clear(screen);
blit(buffer,screen,0,0,x,y,54,54);

}

Conclusion :


Prog en C compiler avec DJGPP et ALLEGRO . Il se peut que si vous possedez WinXP, a lasortie du prog votre affichage de bureau se dérègle . Dans ce cas fait juste clic droit propriéte puis paramètre et changer votre resolution puis remetter celle que vous voulez ce n'est rien mais je ne sais pas pourquoi ça fait ça .
n'oublier pas l'image de la navette sinon ça ne maechera pas

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.