Bonjour ,

Je désire réaliser la chose suivante.

Je cite :

Le tampon Zozor

Faites en sorte que lorsqu'on clique avec la souris sur l'écran, ça colle un Zozor à l'endroit indiqué.
Oui je sais, on l'a déjà fait pour étudier l'évènement "clic de la souris", mais cette fois je veux que l'on puisse "coller" à l'écran 10 Zozors maximum à la fois (alors qu'auparavant on ne pouvait en coller qu'un seul à la fois).

Cet exercice est en fait assez similaire au précédent : vous n'avez besoin que d'une surface Zozor, mais de plusieurs SDL_Rect (faites un tableau).
La difficulté sera de savoir comment initialiser ces positions, car il ne faut pas qu'il y ait de Zozors affichés à l'écran au départ. A vous de trouver une solution pour ne pas blitter de Zozor si, par exemple, les coordonnées sont (-1, -1).

La touche "Suppr" doit servir à effacer l'écran (il faudra réinitialiser toutes les coordonnées à (-1, -1) par exemple).
Hop j'ai modifier un peu , j'ai voulu faire en sorte que si c'est le clic droit c'est zozor qui ce colle , si c'est le clic gauche , cest moi ( ma photo )

Or le clic gauche ne marche pas , alors que le clic droit oui HELP svp

Merci d'avance

EDITE a j'oublier 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <stdlib.h>
#include <stdio.h>
#include<SDL/SDL.h>
#include<SDL/SDL_image.h>
 
 
 
int main()
{
	SDL_Surface  *ecran = NULL , *zozor = NULL  , *me = NULL ;
	SDL_Rect z[5] ,  moi[5] ;
 
	int continuer = 1 , i = 0, j=0 , b = 0;
	SDL_Event event ;
 
        for(j =0;j<5;j++)
		{
	    z[j].x=-1;
	    z[j].y=-1;
        }
 
		for ( b = 0 ; b<5 ; b++ ) // on initialise
		{
			moi[b].x=-1;
		    moi[b].y=-1;
		}
 
 
 
 
	SDL_Init(SDL_INIT_VIDEO);
 
	ecran = SDL_SetVideoMode( 800 , 600 , 32 , SDL_HWSURFACE| SDL_DOUBLEBUF);
	zozor = IMG_Load("zozor.BMP");
	SDL_SetColorKey(zozor , SDL_SRCCOLORKEY , SDL_MapRGB(zozor->format, 0, 0, 255));
	me = IMG_Load("me.BMP");
	SDL_SetColorKey(me , SDL_SRCCOLORKEY , SDL_MapRGB(me->format , 255 , 0 , 0 ));
	SDL_WM_SetCaption("zozor" , NULL);  // le tralala des images , nom de fenêtre etc 
 
 
 
	while(continuer)  // début des evenements
	{
		SDL_WaitEvent(&event);
 
		switch(event.type)
		{
		case SDL_QUIT :
			continuer = 0 ; 
		break ;
 
		case SDL_MOUSEBUTTONUP :
			if(event.button.button == SDL_BUTTON_RIGHT)  // si c'est clic droit
 
			if ( i<5 )  // maximum 5 
			{
				z[i].x = event.motion.x ;
				z[i].y = event.motion.y ; // on définit les pos de zozor
 
				i ++ ;  // on incrément i 
			}
 
		break ;
             if(event.button.button == SDL_BUTTON_LEFT) // si c'est clic gauche 
 
			 if (b<5)  
			 {
			    moi[b].x = event.motion.x;
			    moi[b].y = event.motion.y ;  // de moi
			    b++ ;
			 }
 
		break ;
 
		default :
 
			 break ;
 
 
		case SDL_KEYDOWN :
			switch(event.key.keysym.sym)
			{
 
        case SDLK_SPACE :
			i = 0 ;
			b = 0 ;
			SDL_FillRect(ecran  , NULL , SDL_MapRGB(ecran->format , 255, 255 , 255 ));
			//on vide le tableau des zozors
			for(j=0;j<5;j++)
			{
				z[j].x=-1;
				z[j].y=-1;
			}
			for(b = 0 ; b<5 ; b++ ) // a chaque fois je fais 2 boucles pour être sûr que le  problème vient pas de la 
			{
				moi[b].x = -1 ;
				moi[b].y = -1 ;
			}
			SDL_Flip(ecran); 
			break ;
 
			}
 
		 }
 
 
		SDL_FillRect(ecran  , NULL , SDL_MapRGB(ecran->format , 255, 255 , 255 ));  // ecran blanc
 
 
        for(j=0;j<5;j++)  // si 
		{
			if(z[j].x!=-1 && z[j].y!=-1)
			SDL_BlitSurface(zozor , NULL , ecran , &z[j] );  // Blit zozor
 
		}
 
		for(b = 0 ; b<5 ; b++ )
		{
			if (moi[b].x != -1 && moi[b].y !=-1)
			SDL_BlitSurface(me , NULL , ecran , &moi[b]); // Blit moi 
		}
		SDL_Flip(ecran);
	}
 
	SDL_FreeSurface(zozor);
	SDL_FreeSurface(me);
	SDL_Quit();
 
	return EXIT_SUCCESS ;
}