Bonjour à tous,
Je suis entrain de coder une fonction qui me permet de de faire un scrolling grâce aux touche j'aimerais la transformé pour utilisé la souri

Ça ce complique car je ne sais pas trop comment utiliser le SDL_MOUSEMOTION pour réussir mon affaire.

Je ne sais pas non plus comment récupérer le sens de déplacement.J'avais dans l'idée de réutiliser le modulo mais c'est un peu fastidieu à organiser

Et enfin j'aimerais éviter d'avoir un phénomène trop rapide car ca va être très gourmand en mémoire

voici le code:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
#define SPEED 1
#define IMX 368
#define IMY 388
 
SDL_Surface* ChargerBMP(const char* fic)
{
	SDL_Surface *res;
	SDL_Surface* tmp = SDL_LoadBMP(fic);
	if (tmp==NULL)
	{
		printf("Erreur chargement %s\n",fic);
		exit(-1);
	}
	res = SDL_DisplayFormat(tmp);
	SDL_FreeSurface(tmp);
	return res;
}
 
int modulo(int x,int mod)
{
	if (x>=0)
		return x%mod;
	return (x%mod)+mod;
}
 
int main(int argc,char** argv)
{
	SDL_Surface* fond,*screen;
	Uint8* key;
	int x,y;
	x=y=0;
	SDL_Init(SDL_INIT_VIDEO);
	screen=SDL_SetVideoMode(IMX,IMY,32,SDL_SWSURFACE|SDL_DOUBLEBUF);
	fond=ChargerBMP("fond.bmp");
	do
	{
		SDL_Rect positionfenetre;
		key = SDL_GetKeyState(NULL);
		SDL_PumpEvents();
 
		if (key[SDL_MOUSEMOTION])
			x-=SPEED;
		if (key[SDLK_RIGHT])
			x+=SPEED;
		if (key[SDLK_UP])
			y-=SPEED;
		if (key[SDLK_DOWN])
			y+=SPEED;
 
		positionfenetre.x = modulo(x,IMX);
		positionfenetre.y = modulo(y,IMY);
		SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
		positionfenetre.x = modulo(x,IMX) - IMX;
		positionfenetre.y = modulo(y,IMY);
		SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
		positionfenetre.x = modulo(x,IMX) - IMX;
		positionfenetre.y = modulo(y,IMY) - IMY;
		SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
		positionfenetre.x = modulo(x,IMX);
		positionfenetre.y = modulo(y,IMY) - IMY;
 
 
		SDL_BlitSurface(fond,NULL,screen,&positionfenetre);
		SDL_Flip(screen);
		SDL_Delay(3);
	}
	while(!key[SDLK_ESCAPE]);
	SDL_FreeSurface(fond);
	SDL_Quit();
	return 0;
}