IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[allegro]quand je comprend pas pourquoi ça marche !?:)


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Points : 17
    Points
    17
    Par défaut [allegro]quand je comprend pas pourquoi ça marche !?:)
    Voila une boucle qui fonctionne très bien . elle fait deplacer une une bille dans l´ecran avec les fleches du clavier.

    Ce que je comprend pas , c´est ce qui fait que quand l´image "picture.bmp" est déplacé, l´ancienne est effacé
    alors que si j´enchaine 2 blit() de la meme image à la suite , il affiche les 2 et ne garde pas uniquement la deuxième.

    (c´est ce que je veux! mais je comprend pas pourquoi ca se fait automatiquement vu qu´il n´y a aucune ligne de code dédiée à ça ! )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    BITMAP *my_pic = NULL; //Declare a BITMAP called my_pic 
    my_pic = load_bitmap("picture.bmp", NULL); // Load our picture
    /* Declare another bitmap. This will be our 'buffer'. */
    BITMAP *buffer = NULL; //Declare a BITMAP called buffer.
     
    buffer = create_bitmap(640,480); //Create an empty bitmap.
    int my_pic_x = 0;// Holds our pictures X coorinate 
    int my_pic_y = 0;// Holds our picture's Y coordinate
     
     
    while(!key[KEY_ESC]) //If the user hits escape, quit the program 
    	{
     
    		if(key[KEY_RIGHT]) 
    		{ 
    			my_pic_x ++; 
    		} 
    		else if(key[KEY_LEFT])		{ 
    			my_pic_x --; 
    		}
    		else if(key[KEY_UP]) 
    		{
    			my_pic_y --; 
    		} 
    		else if(key[KEY_DOWN])  
    		{ 
    			my_pic_y ++; 
    		}
     
    draw_sprite(buffer, my_pic, my_pic_x, my_pic_y); 
    blit(buffer, screen, 0,0,0,0,640,480); // Draw the buffer to the screen 
    clear_bitmap(buffer); 
     
    }
    merci d´avance de votre aide !

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Je ne suis pas un expert en Allegro mais il me semble que ce code copie simplement le buffer sur la fenêtre... Vu ce que tu dis, j'ai l'impression que le buffer doit faire la taille de la fenêtre et que donc la fonction fait ceci:

    A chaque appel:

    - Création d'une image vide (taille de la fenetre)
    - Copie de l'objet dans le buffer a la position voulue
    - Copie de l'image dans la fenêtre.

    Donc finalement il copie l'image qui fait la taille de la fenetre, la mise a zero de cette image permet d'effacer l'ancienne position...

    Voila ce que j'en pense...

    Ne connaissant pas assez pour le certifier, il doit avoir une commande qui efface le buffer sans faire un blit de ce genre...

    Jc

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse mais ce n´etait pas ca
    je viens de comprendre.
    c´est tout con et désolé pour ma question débile ...

    enfait l´image à un bord noir ( dc de la couleur du fond ) de 1 pixel.
    docn vu que je bouge l´image pixel par pixel. l´image se charge elle meme d´effacer le reste de l´ancienne
    c´est très malin !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide pour css, je ne comprends pas pourquoi ça ne marche pas
    Par xds74 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/07/2012, 14h49
  2. Ca marche mais je ne comprend pas pourquoi
    Par murgen23 dans le forum Composants
    Réponses: 5
    Dernier message: 14/11/2008, 13h25
  3. COM : _com_ptr_t ca marche mais je ne comprend pas pourquoi
    Par dockurt2k dans le forum Visual C++
    Réponses: 4
    Dernier message: 21/08/2006, 12h28
  4. Comprends pas pourquoi ca marche pas
    Par cellimo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/11/2005, 22h10
  5. error LNK 2019... comprends pas pourquoi ?
    Par MonsieurAk dans le forum MFC
    Réponses: 2
    Dernier message: 29/04/2005, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo