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.
A voir également:

2 réponses

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