Allegro souris

Fermé
roman91tic - 5 mai 2009 à 16:27
 albey - 4 mars 2015 à 22:31
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.
A voir également:

2 réponses

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
a merci beaucoup...Moi aussi chui bloké sur le projet de mr Ravault..Bonne soirée
0
Merci monsieur Ségado !
1
roman91tic > Alfy89
10 mai 2009 à 14:37
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
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
PS : Ce n'est pas Mr Ravaut, mais simplement un élève qui fait le projet aussi (a)
Bonne chance :)
2