Allegro souris

roman91tic -  
 albey -
Bonjour,
J'ai un problème.
Je code en C et je n'arrive pas à coder le déplacement d'un personnage à la sourirs sous Allegro.
Je n'ai aucune idée pour faire cela.
Merci de votre aide.
Configuration: Windows Vista
Firefox 3.0.7

2 réponses

  1. ECE
     
    Bonjour,

    il faut d'abord savoir que par défaut, les coordonnées de ta souris te sont données par : mouse_x et mouse_y.
    A partir de cela, il te suffit de créer un algorithme du type : (cest simplifié) :

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

    int main()
    {
    allegro_init(); // init allegro
    install_keyboard(); // pour avoir le clavier
    install_mouse(); // pour avoir la souris
    srand(time(NULL)); // pour suite de nombrea aléatoires
    set_color_depth(16); // couleurs 16 bits
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0); //window 800x600

    BITMAP *page; //notre double buffer
    page=create_bitmap(SCREEN_W,SCREEN_H);

    show_mouse(screen); //on voit la souris a l'écran

    int pos_x = 100; //position x initiale
    int pos_y = 100; //position y initiale

    int clicx;
    int clicy; //nos coordonnées de la souris quand on clic

    rectfill(screen,pos_x,pos_y,pos_x+10,pos_y+10,makecol(255,255,255)); //on affiche notre 'personnage' initialement

    while (!key[KEY_ESC]) //tant qu'on appuie pas sur la touche ESC
    {

    if (mouse_b & 1) // Si lutilisateur clique sur le bouton gauche de la souris
    {
    clicx=mouse_x;
    clicy=mouse_y; //on garde en mémoire le clic de lutilisateur

    while (pos_x != clicx || pos_y != clicy)
    {
    clear_bitmap(page); //on efface notre DB

    if (pos_x < clicx) //si le perso est a gauche de lendroit darrivee
    pos_x++; // on augmente labcisse du perso > on va a droite

    else if (pos_x > clicx) //si le perso est a gauche de lendroit darrivee
    pos_x--;// on diminue labcisse du perso > on va a gauche

    else if (pos_y < clicy) //si le perso est en haut de lendroit darrivee
    pos_y++;// on augmente l'oordonnee du perso > on va en bas

    else if (pos_y > clicy) //si le perso est en bas de lendroit darrivee
    pos_y--;// on diminue l'ordonnee du perso > on va en haut

    rectfill(page,pos_x,pos_y,pos_x+10,pos_y+10,makecol(255,255,255)); //on affiche notre 'personnage'

    blit(page,screen,0,0,0,0,SCREEN_W,SCREEN_H); // on affiche notre DB a lecran
    }
    }
    }

    }END_OF_MAIN();

    Avec ça, on obtient un simple rendu d'un carré qui se balade grace à un déplacement souris. Il ne te reste plus qu'à remplacer le carré par l'image de ton personnage, et le tour est joué !
    9
    1. roman91tic
       
      a merci beaucoup...Moi aussi chui bloké sur le projet de mr Ravault..Bonne soirée
      0
    2. Alfy89
       
      Merci monsieur Ségado !
      1
      1. roman91tic > Alfy89
         
        Monsieur Segado sur le forum de commentcamarche! Quelle surprise ^^
        En tout cas merci de votre aide même si je suis dans le mzi... Les deux autres avec qui je suis ne travaille pas du tout.Résultat j'ai tout fais tout seul un maximum et je n'ai que 400 lignes de code.C'est triste la vie....Bonne journée monsieur ECE
        0
    3. albey
       
      bonjour, je suis aussi a l'ece et je narrive pas a faire suivre une image a chaque deplacement de la souris ( pus compliqué qu'une forme)
      merci
      0
  2. ECE
     
    PS : Ce n'est pas Mr Ravaut, mais simplement un élève qui fait le projet aussi (a)
    Bonne chance :)
    2