Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de BLIT

    20 décembre 2008 à 20:16:01

    bonjour!
    j'aimerai savoir ce qui pueut empecher un blit d'etre opperationnel en general svp
    merci!!
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 décembre 2008 à 20:19:11

      Qu'il manque des arguments à ta fonction, qu'il y en ai trop, que le blit soit derrière un autre blit, que tu n'envoies pas les bons paramètres dans une fonction, que tu intervertisses le L et le S dans le mot SDL, que ton image n'existe pas ou ne contient rien...On peut en faire beaucoup comme ça :p
      Tu as un code précis ou pas ?
      • Partager sur Facebook
      • Partager sur Twitter
        20 décembre 2008 à 20:25:51

        oui j'ai mais il est legerement gros enfin un peu
        le voici:
        #include <stdio.h>
        #include <stdlib.h>
        #include <SDL/SDL.h>
        #include <SDL/SDL_image.h>
        
        int main(int argc, char *argv[])
        {
        
        SDL_Event event;
        int continuer = 1;
        int entree = 0;
        long nombremarque = 0;
        long i = 0;
        long j = 0;
        long creer = 0;
        SDL_Rect *tableau = NULL; //pointeur pour créer et redimentionner le tableau
        
        
        SDL_Surface *ecran = NULL, *elodie = NULL, *marque = NULL, *arriereplan = NULL, *fond = NULL, *cible = NULL, *cible2 = NULL, *cadre = NULL, *pistolet = NULL;
        SDL_Surface *impact[500] = {NULL}; //contiendra chaque marque chargée
        SDL_Surface *sang[500][9] = {NULL};// contiendra chaque goutte de sang chargée
        
        SDL_Rect positionFond;
        SDL_Rect positionFond2;
        SDL_Rect positioncadre;
        SDL_Rect positionpistolet;
        SDL_Rect positioncible;
        SDL_Rect positionelodie;
        SDL_Rect positionmarque;
        SDL_Rect positionsang[500][9];
        while (i<500)
        {
        	while (j<9)
        	{
        		positionsang[i][j].x = 0;
        		positionsang[i][j].y = 0;
        		j++;
        	}
        	j = 0;
        	i++;
        }
        i = 0;
        
        positionFond.x = 0;
        positionFond.y = 0;
        positionFond2.x = 0;
        positionFond2.y = 0;
        positioncadre.x = 0;
        positioncadre.y = 0;
        positionpistolet.x = 0;
        positionpistolet.y = 0;
        positioncible.x = 0;
        positioncible.y = 0;
        positionelodie.x = 290;
        positionelodie.y = 200;
        positionmarque.x = 0;
        positionmarque.y = 0;
        
        	
        		SDL_Init(SDL_INIT_VIDEO);
        		SDL_WM_SetIcon (SDL_LoadBMP("cible.bmp"), NULL);
        
        	ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
            SDL_WM_SetCaption("Kill them all!", NULL);
        
        	arriereplan = SDL_LoadBMP("fond jeu.bmp");
        	fond = SDL_LoadBMP("fond jeu pas entree.bmp");
        	cible2 = SDL_LoadBMP("cible.bmp");
        	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        	SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);
        
        	SDL_PollEvent(&event);
        	while((event.type != SDL_QUIT) && (event.key.keysym.sym != SDLK_RETURN))/*tant que je ferme pas ni appuie 
        																			sur entrée	*/
        	{
        		SDL_PollEvent(&event);
        		SDL_Delay(500);				
        			SDL_BlitSurface(fond, NULL, ecran, &positionFond2);				
        			SDL_Flip(ecran);				
        			SDL_Delay(500);					
        			SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);			
        			SDL_Flip(ecran);
        	}
        	if (event.type == SDL_QUIT)// si j'ai appuyé sur fermer
        	{
        		SDL_FreeSurface(arriereplan);
        	SDL_FreeSurface(fond);
        		continuer = 0;
        
        	}
        		else if (event.type != SDL_QUIT) // si j'ai pas appuyé sur fermer (et appuyé sur entrée)
        	{
        	SDL_FreeSurface(arriereplan);
        	SDL_FreeSurface(fond);
        	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
        
        	cadre = SDL_LoadBMP("cadre.bmp");
        	pistolet = SDL_LoadBMP("pistolet.bmp");
        	elodie = IMG_Load("elodie.png");
        	marque = SDL_LoadBMP("marque.bmp");
        
        	SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
        	SDL_SetColorKey(pistolet, SDL_SRCCOLORKEY, SDL_MapRGB(pistolet->format, 255, 255, 255));//je rend le blanc transparent AVANT de blitter l'image
        	SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
        	SDL_ShowCursor(SDL_DISABLE);
        	SDL_SetColorKey(cible2, SDL_SRCCOLORKEY, SDL_MapRGB(cible2->format, 255, 255, 255));
        	SDL_SetColorKey(marque, SDL_SRCCOLORKEY, SDL_MapRGB(marque->format, 255, 255, 255));
        	SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
        	SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
        	SDL_Flip(ecran);
        	}
        
        
        	while (continuer)
        	{
        		SDL_PollEvent(&event);
        		switch (event.type)
        		{
        			case SDL_QUIT: 
        				continuer = 0;
        				break;
        				
        			case SDL_MOUSEBUTTONDOWN:					
        				if (creer == 0)
        				{
        					tableau = malloc(500 * sizeof(SDL_Rect));
        					if (tableau == NULL)
        					{
        						fprintf(stderr, "allocation impossible%s\n", SDL_GetError());
        					}
        					else
        					{
        					creer++;
        					}
        				}
        
        					impact[nombremarque] = SDL_LoadBMP("marque.bmp");
        					while (i <9)
        					{
        						sang[nombremarque][i] = SDL_LoadBMP("sang.bmp");
        						SDL_SetColorKey(sang[nombremarque][i], SDL_SRCCOLORKEY, SDL_MapRGB(sang[nombremarque][i]->format, 255, 255, 255));
        						i++;
        					}
        					i = 0;
        					while(i < 9)
        					{
        						switch (i)
        						{
        						case 0:							
        							positionsang[nombremarque][i].x = event.motion.x;
        							positionsang[nombremarque][i].y = event.motion.y + 5;
        							i++;
        							break;
        						case 1:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y + 5;
        							i++;
        							break;
        
        						case 2:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -4;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4;
        							i++;
        							break;
        
        						case 3:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5;
        							i++;
        							break;
        
        						case 4:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4;
        							i++;
        							break;
        
        						case 5:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y+5;
        							i++;
        							break;
        
        						case 6:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4;
        							i++;
        							break;
        
        						case 7:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -4;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4;
        							i++;
        							break;
        
        						case 8:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -3;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5;
        							i++;
        							break;
        
        						case 9:
        							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x;
        							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5;
        							i++;
        							break;
        
        						}
        					}
        					i = 0;
        
        					tableau[nombremarque].x = event.motion.x; 
        					tableau[nombremarque].y = event.motion.y; 	
        
        					SDL_SetColorKey(impact[nombremarque], SDL_SRCCOLORKEY, SDL_MapRGB(impact[nombremarque]->format, 255, 255, 255));
        					SDL_BlitSurface(impact[nombremarque],NULL,ecran,&tableau[nombremarque]);
        					while(i<9)
        					{
        						SDL_Delay(60);
        						SDL_BlitSurface(sang[nombremarque][i],NULL,ecran, &positionsang[nombremarque][i]);
        						i++;
        					}
        					i = 0;
        				
        				nombremarque++;	
        
        				
        				break;
        			
        			case SDL_MOUSEMOTION:
        				positioncible.x = event.motion.x;
        				positioncible.y = event.motion.y;
        				break;
        
        		}
        		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        		SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
        		SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
        		SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
        		while (i < nombremarque)
        		{
        			SDL_BlitSurface(impact[i], NULL, ecran, &tableau[i]);
        			i++;
        		}
        		while (i < nombremarque)
        		{
        			while (j < 9)
        			{
        				SDL_BlitSurface(sang[i][j],NULL,ecran, &positionsang[i][j]);
        				j++;
        			}
        			j = 0;
        			i++;
        		}
        		i = 0;
        		SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
        		SDL_Flip(ecran);
        		i = 0;
        	}
        	
        while(i<nombremarque)
        	{
        	SDL_FreeSurface(impact[i]);
        	i++;
        	}
        	SDL_Quit();
        
            return EXIT_SUCCESS;	
        }
        


        le sang ne s'affiche pas :-° mais on voit que le temps se met en pause comme je le demande avec delay
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 décembre 2008 à 20:26:42

          Et donc ? C'est vers où que ça se passe ? :p
          • Partager sur Facebook
          • Partager sur Twitter
            20 décembre 2008 à 20:30:47

            t'a raté l'edit :p^^
            le sang ne s'affiche pas mais on voit que le temps se met en pause comme je le demande avec delay
            • Partager sur Facebook
            • Partager sur Twitter
              28 décembre 2008 à 12:45:44

              re tout le monde!
              pas d'idées?
              • Partager sur Facebook
              • Partager sur Twitter
                29 décembre 2008 à 2:19:08

                Corrige déjà ça, ça ira mieux après :

                main.c:19: warning: unused variable 'cible'
                main.c:11: warning: unused variable 'entree'
                main.c:6: warning: unused parameter 'argc'
                main.c:6: warning: unused parameter 'argv'
                main.c:249: warning: will never be executed
                main.c:247: warning: will never be executed
                main.c:253: warning: will never be executed
                main.c:245: warning: will never be executed
                Linking executable: sdltest.exe
                Process terminated with status 0 (0 minutes, 4 seconds)
                0 errors, 8 warnings
                • Partager sur Facebook
                • Partager sur Twitter
                  29 décembre 2008 à 13:07:56

                  ça me le met pas tout ça pourtant
                  sinon j'ai rajouté du son avec fmod ça marche mai j'ai toujours le probleme
                  de blit
                  le code:
                  #include <stdio.h>
                  #include <stdlib.h>
                  #include <SDL/SDL.h>
                  #include <SDL/SDL_image.h>
                  #include <FMOD/fmod.h>
                  
                  
                  int main(int argc, char *argv[])
                  {
                  
                  SDL_Event event;
                  int continuer = 1;
                  int entree = 0;
                  long nombremarque = 0;
                  long i = 0;
                  long j = 0;
                  long creer = 0;
                  SDL_Rect *tableau = NULL; //pointeur pour créer et redimentionner le tableau
                  FSOUND_SAMPLE *tir = NULL;
                  
                  SDL_Surface *ecran = NULL, *elodie = NULL, *marque = NULL, *arriereplan = NULL, *fond = NULL, *cible = NULL, *cible2 = NULL, *cadre = NULL, *pistolet = NULL;
                  SDL_Surface *impact[500] = {NULL}; //contiendra chaque marque chargée
                  SDL_Surface *sang[500][9] = {NULL};// contiendra chaque goutte de sang chargée
                  
                  SDL_Rect positionFond;
                  SDL_Rect positionFond2;
                  SDL_Rect positioncadre;
                  SDL_Rect positionpistolet;
                  SDL_Rect positioncible;
                  SDL_Rect positionelodie;
                  SDL_Rect positionmarque;
                  SDL_Rect positionsang[500][9];
                  while (i<500)
                  {
                  	while (j<9)
                  	{
                  		positionsang[i][j].x = 0;
                  		positionsang[i][j].y = 0;
                  		j++;
                  	}
                  	j = 0;
                  	i++;
                  }
                  i = 0;
                  
                  positionFond.x = 0;
                  positionFond.y = 0;
                  positionFond2.x = 0;
                  positionFond2.y = 0;
                  positioncadre.x = 0;
                  positioncadre.y = 0;
                  positionpistolet.x = 0;
                  positionpistolet.y = 0;
                  positioncible.x = 0;
                  positioncible.y = 0;
                  positionelodie.x = 290;
                  positionelodie.y = 200;
                  positionmarque.x = 0;
                  positionmarque.y = 0;	
                  
                  FSOUND_Init(44100, 32, 0);
                  		SDL_Init(SDL_INIT_VIDEO);
                  		SDL_WM_SetIcon (SDL_LoadBMP("cible.bmp"), NULL);
                  
                  	ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
                      SDL_WM_SetCaption("Kill them all!", NULL);
                  
                  	arriereplan = SDL_LoadBMP("fond jeu.bmp");
                  	fond = SDL_LoadBMP("fond jeu pas entree.bmp");
                  	cible2 = SDL_LoadBMP("cible.bmp");
                  	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                  	SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);
                  	tir = FSOUND_Sample_Load(FSOUND_FREE, "tir.mp3", 0, 0, 0);
                  
                  
                  	SDL_PollEvent(&event);
                  	while((event.type != SDL_QUIT) && (event.key.keysym.sym != SDLK_RETURN))/*tant que je ferme pas ni appuie 
                  																			sur entrée	*/
                  	{
                  		SDL_PollEvent(&event);
                  		SDL_Delay(500);				
                  			SDL_BlitSurface(fond, NULL, ecran, &positionFond2);				
                  			SDL_Flip(ecran);				
                  			SDL_Delay(500);					
                  			SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);			
                  			SDL_Flip(ecran);
                  	}
                  	if (event.type == SDL_QUIT)// si j'ai appuyé sur fermer
                  	{
                  		SDL_FreeSurface(arriereplan);
                  	SDL_FreeSurface(fond);
                  		continuer = 0;
                  
                  	}
                  		else if (event.type != SDL_QUIT) // si j'ai pas appuyé sur fermer (et appuyé sur entrée)
                  	{
                  	SDL_FreeSurface(arriereplan);
                  	SDL_FreeSurface(fond);
                  	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
                  
                  	cadre = SDL_LoadBMP("cadre.bmp");
                  	pistolet = SDL_LoadBMP("pistolet.bmp");
                  	elodie = IMG_Load("elodie.png");
                  	marque = SDL_LoadBMP("marque.bmp");
                  
                  	SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
                  	SDL_SetColorKey(pistolet, SDL_SRCCOLORKEY, SDL_MapRGB(pistolet->format, 255, 255, 255));//je rend le blanc transparent AVANT de blitter l'image
                  	SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
                  	SDL_ShowCursor(SDL_DISABLE);
                  	SDL_SetColorKey(cible2, SDL_SRCCOLORKEY, SDL_MapRGB(cible2->format, 255, 255, 255));
                  	SDL_SetColorKey(marque, SDL_SRCCOLORKEY, SDL_MapRGB(marque->format, 255, 255, 255));
                  	SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
                  	SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
                  	SDL_Flip(ecran);
                  	}
                  
                  
                  	while (continuer)
                  	{
                  		SDL_PollEvent(&event);
                  		switch (event.type)
                  		{
                  			case SDL_QUIT: 
                  				continuer = 0;
                  				break;
                  				
                  			case SDL_MOUSEBUTTONDOWN:	
                  
                  				 FSOUND_PlaySound(FSOUND_FREE, tir);
                  				if (creer == 0)
                  				{
                  					tableau = malloc(500 * sizeof(SDL_Rect));
                  					if (tableau == NULL)
                  					{
                  						fprintf(stderr, "allocation impossible%s\n", SDL_GetError());
                  					}
                  					else
                  					{
                  					creer++;
                  					}
                  				}
                  
                  					impact[nombremarque] = SDL_LoadBMP("marque.bmp");
                  					while (i <9)
                  					{
                  						sang[nombremarque][i] = SDL_LoadBMP("sang.bmp");
                  						SDL_SetColorKey(sang[nombremarque][i], SDL_SRCCOLORKEY, SDL_MapRGB(sang[nombremarque][i]->format, 255, 255, 255));
                  						i++;
                  					}
                  					i = 0;
                  					while(i < 9)
                  					{
                  						switch (i)
                  						{
                  						case 0:							
                  							positionsang[nombremarque][i].x = event.motion.x - (cible2->w /2);
                  							positionsang[nombremarque][i].y = event.motion.y + 5- (cible2->h /2);
                  							i++;
                  							break;
                  						case 1:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y + 5- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 2:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -4- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 3:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 4:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 5:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y+5- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 6:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 7:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -4- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 8:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -3- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						case 9:
                  							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                  							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                  							i++;
                  							break;
                  
                  						}
                  					}
                  					i = 0;
                  
                  					tableau[nombremarque].x = event.motion.x - (cible2->w /2); 
                  					tableau[nombremarque].y = event.motion.y - (cible2->h /2); 	
                  
                  					SDL_SetColorKey(impact[nombremarque], SDL_SRCCOLORKEY, SDL_MapRGB(impact[nombremarque]->format, 255, 255, 255));
                  					SDL_BlitSurface(impact[nombremarque],NULL,ecran,&tableau[nombremarque]);
                  					while(i<9)
                  					{
                  						SDL_Delay(60);
                  						SDL_BlitSurface(sang[nombremarque][i],NULL,ecran, &positionsang[nombremarque][i]);
                  						i++;
                  					}
                  					i = 0;
                  				
                  				nombremarque++;	
                  
                  				
                  				break;
                  			
                  			case SDL_MOUSEMOTION:
                  				positioncible.x = event.motion.x - (cible2->w /2);
                  				positioncible.y = event.motion.y - (cible2->h /2); 
                  				break;
                  
                  		}
                  		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                  		SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
                  		SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
                  		SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
                  		while (i < nombremarque)
                  		{
                  			SDL_BlitSurface(impact[i], NULL, ecran, &tableau[i]);
                  			i++;
                  		}
                  		while (i < nombremarque)
                  		{
                  			while (j < 9)
                  			{
                  				SDL_BlitSurface(sang[i][j],NULL,ecran, &positionsang[i][j]);
                  				j++;
                  			}
                  			j = 0;
                  			i++;
                  		}
                  		i = 0;
                  		SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
                  		SDL_Flip(ecran);
                  		i = 0;
                  	}
                  
                  	FSOUND_Sample_Free(tir);
                      FSOUND_Close();	
                  while(i<nombremarque)
                  	{
                  	SDL_FreeSurface(impact[i]);
                  	i++;
                  	}
                  	SDL_Quit();
                  
                      return EXIT_SUCCESS;	
                  }
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 décembre 2008 à 22:24:38

                    Citation : kanorado

                    ça me le met pas tout ça pourtant


                    http://mapage.noos.fr/emdel/codage.htm#cfg_compilo ;)

                    Corrige déjà ces warnings. Ne fais pas trop attention aux "unused parameters", qui sont là parce que tu n'utilises pas les paramètres de main. Mais occupe-toi des autres warnings, en particulier des "will never be executed", j'ai le sentiment que le problème vient de là.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 janvier 2009 à 17:32:41

                      euh...
                      au risque de passer pour un nul, comment on fait pour revoir les warnings/erreurs une fois la compilation effectué sous visual? après la compilation, ils disparaissent.

                      sinon : new code:
                      #include <stdio.h>
                      #include <stdlib.h>
                      #include <SDL/SDL.h>
                      #include <SDL/SDL_image.h>
                      #include <FMOD/fmod.h>
                      #include "fonctions.h"
                      
                      
                      
                      int main(int argc, char *argv[])
                      {
                      
                      SDL_Event event;
                      int continuer = 1;
                      int entree = 0;
                      long nombremarque = 0;
                      long i = 0;
                      long j = 0;
                      
                      //les pointeurs ci dessous servent à recuperer la couleur d'un pixel.
                      Uint8* r = NULL;
                      Uint8* g = NULL;
                      Uint8* b = NULL;
                      Uint8* a = NULL;
                      Uint32 pixel = 0;
                      
                      long creer = 0;
                      SDL_Rect *tableau = NULL; //pointeur pour créer et redimentionner le tableau
                      FSOUND_SAMPLE *tir = NULL;
                      
                      SDL_Surface *ecran = NULL, *elodie = NULL, *marque = NULL, *arriereplan = NULL, *fond = NULL, *cible = NULL, *cible2 = NULL, *cadre = NULL, *pistolet = NULL;
                      SDL_Surface *impact[500] = {NULL}; //contiendra chaque marque chargée
                      SDL_Surface *sang[500][9] = {NULL};// contiendra chaque goutte de sang chargée
                      
                      SDL_Rect positionFond;
                      SDL_Rect positionFond2;
                      SDL_Rect positioncadre;
                      SDL_Rect positionpistolet;
                      SDL_Rect positioncible;
                      SDL_Rect positionelodie;
                      SDL_Rect positionmarque;
                      SDL_Rect positionsang[500][9];
                      while (i<500)
                      {
                      	while (j<9)
                      	{
                      		positionsang[i][j].x = 0;
                      		positionsang[i][j].y = 0;
                      		j++;
                      	}
                      	j = 0;
                      	i++;
                      }
                      i = 0;
                      
                      positionFond.x = 0;
                      positionFond.y = 0;
                      positionFond2.x = 0;
                      positionFond2.y = 0;
                      positioncadre.x = 0;
                      positioncadre.y = 0;
                      positionpistolet.x = 0;
                      positionpistolet.y = 0;
                      positioncible.x = 0;
                      positioncible.y = 0;
                      positionelodie.x = 290;
                      positionelodie.y = 200;
                      positionmarque.x = 0;
                      positionmarque.y = 0;	
                      
                      FSOUND_Init(44100, 32, 0);
                      		SDL_Init(SDL_INIT_VIDEO);
                      		SDL_WM_SetIcon (SDL_LoadBMP("cible.bmp"), NULL);
                      
                      	ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
                          SDL_WM_SetCaption("Kill them all!", NULL);
                      
                      	arriereplan = SDL_LoadBMP("fond jeu.bmp");
                      	fond = SDL_LoadBMP("fond jeu pas entree.bmp");
                      	cible2 = SDL_LoadBMP("cible.bmp");
                      	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                      	SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);
                      	tir = FSOUND_Sample_Load(FSOUND_FREE, "tir.mp3", 0, 0, 0);
                      
                      
                      	SDL_PollEvent(&event);
                      	while((event.type != SDL_QUIT) && (event.key.keysym.sym != SDLK_RETURN))/*tant que je ferme pas ni appuie 
                      																			sur entrée	*/
                      	{
                      		SDL_PollEvent(&event);
                      		SDL_Delay(500);				
                      			SDL_BlitSurface(fond, NULL, ecran, &positionFond2);				
                      			SDL_Flip(ecran);				
                      			SDL_Delay(500);					
                      			SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);			
                      			SDL_Flip(ecran);
                      	}
                      	if (event.type == SDL_QUIT)// si j'ai appuyé sur fermer
                      	{
                      		SDL_FreeSurface(arriereplan);
                      	SDL_FreeSurface(fond);
                      		continuer = 0;
                      
                      	}
                      		else if (event.type != SDL_QUIT) // si j'ai pas appuyé sur fermer (et appuyé sur entrée)
                      	{
                      	SDL_FreeSurface(arriereplan);
                      	SDL_FreeSurface(fond);
                      	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
                      
                      	cadre = SDL_LoadBMP("cadre.bmp");
                      	pistolet = SDL_LoadBMP("pistolet.bmp");
                      	elodie = IMG_Load("elodie.png");
                      	marque = SDL_LoadBMP("marque.bmp");
                      
                      	SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
                      	SDL_SetColorKey(pistolet, SDL_SRCCOLORKEY, SDL_MapRGB(pistolet->format, 255, 255, 255));//je rend le blanc transparent AVANT de blitter l'image
                      	SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
                      	SDL_ShowCursor(SDL_DISABLE);
                      	SDL_SetColorKey(cible2, SDL_SRCCOLORKEY, SDL_MapRGB(cible2->format, 255, 255, 255));
                      	SDL_SetColorKey(marque, SDL_SRCCOLORKEY, SDL_MapRGB(marque->format, 255, 255, 255));
                      	SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
                      	SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
                      	SDL_Flip(ecran);
                      	}
                      
                      
                      	while (continuer)
                      	{
                      		SDL_PollEvent(&event);
                      		switch (event.type)
                      		{
                      			case SDL_QUIT: 
                      				continuer = 0;
                      				break;
                      				
                      			case SDL_MOUSEBUTTONDOWN:	
                      
                      				 FSOUND_PlaySound(FSOUND_FREE, tir);
                      				 	
                      				 pixel = obtenirPixel(ecran,event.motion.x,event.motion.y);
                      				 SDL_GetRGBA(pixel, ecran->format, &r, &g, &b, &a);
                      				 
                      				 if (event.motion.x >= 290 && event.motion.x <= 290 + 96  && event.motion.y >= 200 && event.motion.y <= 200 + 96 )
                      				 {	
                      					 if (r != 255 || g != 255 || b!= 255)
                      					 {				
                      					 
                      						 if (creer == 0)						 
                      						 {					
                      						 tableau = malloc(500 * sizeof(SDL_Rect));					
                      					
                      						 if (tableau == NULL)					
                      						 {
                      						fprintf(stderr, "allocation impossible%s\n", SDL_GetError());					
                      						 }
                      					
                      						 else					
                      						 {					
                      							 creer++;					
                      						 }				
                      					 
                      						 }
                      
                      					impact[nombremarque] = SDL_LoadBMP("marque.bmp");
                      					while (i <9)
                      					{
                      						sang[nombremarque][i] = SDL_LoadBMP("sang.bmp");
                      						SDL_SetColorKey(sang[nombremarque][i], SDL_SRCCOLORKEY, SDL_MapRGB(sang[nombremarque][i]->format, 255, 255, 255));
                      						i++;
                      					}
                      					i = 0;
                      					while(i < 9)
                      					{
                      						switch (i)
                      						{
                      						case 0:							
                      							positionsang[nombremarque][i].x = event.motion.x - (cible2->w /2);
                      							positionsang[nombremarque][i].y = event.motion.y + 5- (cible2->h /2);
                      							i++;
                      							break;
                      						case 1:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x - (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y + 5 - (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 2:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x - 4 - (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y + 4 - (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 3:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 4:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4- (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 5:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y+5- (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 6:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4- (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 7:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -4- (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 8:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -3- (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                      							i++;
                      							break;
                      
                      						case 9:
                      							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                      							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                      							i++;
                      							break;
                      
                      						}
                      					}
                      					i = 0;
                      
                      					tableau[nombremarque].x = event.motion.x - (cible2->w /2); 
                      					tableau[nombremarque].y = event.motion.y - (cible2->h /2); 	
                      
                      					SDL_SetColorKey(impact[nombremarque], SDL_SRCCOLORKEY, SDL_MapRGB(impact[nombremarque]->format, 255, 255, 255));
                      					SDL_BlitSurface(impact[nombremarque],NULL,ecran,&tableau[nombremarque]);
                      					while(i<9)
                      					{
                      						SDL_Delay(60);
                      						SDL_BlitSurface(sang[nombremarque][i],NULL,ecran, &positionsang[nombremarque][i]);
                      						i++;
                      					}
                      					i = 0;
                      				
                      				nombremarque++;	
                      				}	
                      				else
                      					SDL_Delay(80);
                      				}
                      				else
                      					SDL_Delay(80);
                      				break;
                      			
                      			case SDL_MOUSEMOTION:
                      				positioncible.x = event.motion.x - (cible2->w /2);
                      				positioncible.y = event.motion.y - (cible2->h /2); 
                      				break;
                      
                      		}
                      		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                      		SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
                      		SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
                      		SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
                      		while (i < nombremarque)
                      		{
                      			SDL_BlitSurface(impact[i], NULL, ecran, &tableau[i]);
                      			i++;
                      		}
                      		while (i < nombremarque)
                      		{
                      			while (j < 9)
                      			{
                      				SDL_BlitSurface(sang[i][j],NULL,ecran, &positionsang[i][j]);
                      				j++;
                      			}
                      			j = 0;
                      			i++;
                      		}
                      		i = 0;
                      		SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
                      		SDL_Flip(ecran);
                      		i = 0;
                      	}
                      
                      	FSOUND_Sample_Free(tir);
                          FSOUND_Close();	
                      while(i<nombremarque)
                      	{
                      	SDL_FreeSurface(impact[i]);
                      	i++;
                      	}
                      	SDL_Quit();
                      
                          return EXIT_SUCCESS;	
                      }
                      


                      edit: la fonction obtenir pixel c'est celle présentée dans un tuto , voici le code:
                      /* ********************************************************************* */
                      /*
                      obtenirPixel : permet de récupérer la couleur d'un pixel
                      Paramètres d'entrée/sortie :
                      SDL_Surface *surface : la surface sur laquelle on va récupérer la couleur d'un pixel
                      int x : la coordonnée en x du pixel à récupérer
                      int y : la coordonnée en y du pixel à récupérer
                      
                      Uint32 resultat : la fonction renvoie le pixel aux coordonnées (x,y) dans la surface
                      */
                      Uint32 obtenirPixel(SDL_Surface *surface, int x, int y)
                      {
                          /*nbOctetsParPixel représente le nombre d'octets utilisés pour stocker un pixel.
                          En multipliant ce nombre d'octets par 8 (un octet = 8 bits), on obtient la profondeur de couleur
                          de l'image : 8, 16, 24 ou 32 bits.*/
                          int nbOctetsParPixel = surface->format->BytesPerPixel;
                          /* Ici p est l'adresse du pixel que l'on veut connaitre */
                          /*surface->pixels contient l'adresse du premier pixel de l'image*/
                          Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * nbOctetsParPixel;
                      
                          /*Gestion différente suivant le nombre d'octets par pixel de l'image*/
                          switch(nbOctetsParPixel)
                          {
                              case 1:
                                  return *p;
                      
                              case 2:
                                  return *(Uint16 *)p;
                      
                              case 3:
                                  /*Suivant l'architecture de la machine*/
                                  if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
                                      return p[0] << 16 | p[1] << 8 | p[2];
                                  else
                                      return p[0] | p[1] << 8 | p[2] << 16;
                      
                              case 4:
                                  return *(Uint32 *)p;
                      
                              /*Ne devrait pas arriver, mais évite les erreurs*/
                              default:
                                  return 0; 
                          }
                      }
                      



                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 janvier 2009 à 11:50:52

                        Chez moi (je suis sous Code::Blocks), les warnings restent si je fais seulement "Compiler", et pas "Compiler et éxécuter".
                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 janvier 2009 à 12:22:11

                          oui tu as raison la ils restent.
                          bon j'était à 39 warnings avec les changements, je passe à 36, ceux qui restent sont des problemes de types.
                          j'ai changé le code pour que au debut , où je veut que ça clignote, au lieu d'etre obligé d'attendre une seconde, on attend plus qu'un quart, et aussi pour qu'on ne puisse tirer que sur l'image, on peut encore tirer sur le blanc de l'image mais je vais le changer.
                          le code:

                          #include <stdio.h>
                          #include <stdlib.h>
                          #include <SDL/SDL.h>
                          #include <SDL/SDL_image.h>
                          #include <FMOD/fmod.h>
                          #include "fonctions.h"
                          
                          
                          
                          int main()
                          {
                          
                          SDL_Event event;
                          int continuer = 1;
                          long nombremarque = 0;
                          long i = 0;
                          long j = 0;
                          
                          //les pointeurs ci dessous servent à recuperer la couleur d'un pixel.
                          Uint8* r = NULL;
                          Uint8* g = NULL;
                          Uint8* b = NULL;
                          Uint8* a = NULL;
                          Uint32 pixel = 0;
                          
                          long creer = 0;
                          SDL_Rect *tableau = NULL; //pointeur pour créer et redimentionner le tableau
                          FSOUND_SAMPLE *tir = NULL;
                          
                          SDL_Surface *ecran = NULL, *elodie = NULL, *marque = NULL, *arriereplan = NULL, *fond = NULL, *cible2 = NULL, *cadre = NULL, *pistolet = NULL;
                          SDL_Surface *impact[500] = {NULL}; //contiendra chaque marque chargée
                          SDL_Surface *sang[500][9] = {NULL};// contiendra chaque goutte de sang chargée
                          
                          SDL_Rect positionFond;
                          SDL_Rect positionFond2;
                          SDL_Rect positioncadre;
                          SDL_Rect positionpistolet;
                          SDL_Rect positioncible;
                          SDL_Rect positionelodie;
                          SDL_Rect positionmarque;
                          SDL_Rect positionsang[500][9];
                          while (i<500)
                          {
                          	while (j<9)
                          	{
                          		positionsang[i][j].x = 0;
                          		positionsang[i][j].y = 0;
                          		j++;
                          	}
                          	j = 0;
                          	i++;
                          }
                          i = 0;
                          
                          positionFond.x = 0;
                          positionFond.y = 0;
                          positionFond2.x = 0;
                          positionFond2.y = 0;
                          positioncadre.x = 0;
                          positioncadre.y = 0;
                          positionpistolet.x = 0;
                          positionpistolet.y = 0;
                          positioncible.x = 0;
                          positioncible.y = 0;
                          positionelodie.x = 290;
                          positionelodie.y = 200;
                          positionmarque.x = 0;
                          positionmarque.y = 0;	
                          
                          FSOUND_Init(44100, 32, 0);
                          		SDL_Init(SDL_INIT_VIDEO);
                          		SDL_WM_SetIcon (SDL_LoadBMP("cible.bmp"), NULL);
                          
                          	ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
                              SDL_WM_SetCaption("Kill them all!", NULL);
                          
                          	arriereplan = SDL_LoadBMP("fond jeu.bmp");
                          	fond = SDL_LoadBMP("fond jeu pas entree.bmp");
                          	cible2 = SDL_LoadBMP("cible.bmp");
                          	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                          	SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);
                          	tir = FSOUND_Sample_Load(FSOUND_FREE, "tir.mp3", 0, 0, 0);
                          
                          
                          	SDL_PollEvent(&event);
                          	while((event.type != SDL_QUIT) && (event.key.keysym.sym != SDLK_RETURN))/*tant que je ferme pas ni appuie 
                          																			sur entrée	*/
                          	{
                          		SDL_PollEvent(&event);
                          		SDL_Delay(250);	
                          		if((event.type != SDL_QUIT) && (event.key.keysym.sym != SDLK_RETURN))
                          		{
                          		SDL_Delay(250);
                          			SDL_BlitSurface(fond, NULL, ecran, &positionFond2);				
                          			SDL_Flip(ecran);
                          		}
                          		if((event.type != SDL_QUIT) && (event.key.keysym.sym != SDLK_RETURN))
                          		{
                          			SDL_Delay(250);	
                          			if((event.type != SDL_QUIT) && (event.key.keysym.sym != SDLK_RETURN))
                          			{
                          			SDL_Delay(250);	
                          			SDL_BlitSurface(arriereplan, NULL, ecran, &positionFond);			
                          			SDL_Flip(ecran);
                          			}
                          		}
                          	}
                          	if (event.type == SDL_QUIT)// si j'ai appuyé sur fermer
                          	{
                          		SDL_FreeSurface(arriereplan);
                          	SDL_FreeSurface(fond);
                          		continuer = 0;
                          	}
                          		else if (event.type != SDL_QUIT) // si j'ai pas appuyé sur fermer (et appuyé sur entrée)
                          	{
                          	SDL_FreeSurface(arriereplan);
                          	SDL_FreeSurface(fond);
                          	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
                          
                          	cadre = SDL_LoadBMP("cadre.bmp");
                          	pistolet = SDL_LoadBMP("pistolet.bmp");
                          	elodie = IMG_Load("elodie.png");
                          	marque = SDL_LoadBMP("marque.bmp");
                          
                          	SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
                          	SDL_SetColorKey(pistolet, SDL_SRCCOLORKEY, SDL_MapRGB(pistolet->format, 255, 255, 255));//je rend le blanc transparent AVANT de blitter l'image
                          	SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
                          	SDL_ShowCursor(SDL_DISABLE);
                          	SDL_SetColorKey(cible2, SDL_SRCCOLORKEY, SDL_MapRGB(cible2->format, 255, 255, 255));
                          	SDL_SetColorKey(marque, SDL_SRCCOLORKEY, SDL_MapRGB(marque->format, 255, 255, 255));
                          	SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
                          	SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
                          	SDL_Flip(ecran);
                          	}
                          
                          
                          	while (continuer)
                          	{
                          		SDL_PollEvent(&event);
                          		switch (event.type)
                          		{
                          			case SDL_QUIT: 
                          				continuer = 0;
                          				break;
                          				
                          			case SDL_MOUSEBUTTONDOWN:	
                          
                          				 FSOUND_PlaySound(FSOUND_FREE, tir);
                          				 	
                          				 pixel = obtenirPixel(ecran,event.motion.x,event.motion.y);
                          				 SDL_GetRGBA(pixel, ecran->format, &r, &g, &b, &a);
                          				 
                          				 if (event.motion.x >= 290 && event.motion.x <= 290 + 96  && event.motion.y >= 200 && event.motion.y <= 200 + 96 )
                          				 {	
                          					 if (r != 255 || g != 255 || b!= 255)
                          					 {				
                          					 
                          						 if (creer == 0)						 
                          						 {					
                          						 tableau = malloc(500 * sizeof(SDL_Rect));					
                          					
                          						 if (tableau == NULL)					
                          						 {
                          						fprintf(stderr, "allocation impossible%s\n", SDL_GetError());					
                          						 }
                          					
                          						 else					
                          						 {					
                          							 creer++;					
                          						 }				
                          					 
                          						 }
                          
                          					impact[nombremarque] = SDL_LoadBMP("marque.bmp");
                          					while (i <9)
                          					{
                          						sang[nombremarque][i] = SDL_LoadBMP("sang.bmp");
                          						SDL_SetColorKey(sang[nombremarque][i], SDL_SRCCOLORKEY, SDL_MapRGB(sang[nombremarque][i]->format, 255, 255, 255));
                          						i++;
                          					}
                          					i = 0;
                          					while(i < 9)
                          					{
                          						switch (i)
                          						{
                          						case 0:							
                          							positionsang[nombremarque][i].x = event.motion.x - (cible2->w /2);
                          							positionsang[nombremarque][i].y = event.motion.y + 5- (cible2->h /2);
                          							i++;
                          							break;
                          						case 1:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x - (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y + 5 - (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 2:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x - 4 - (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y + 4 - (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 3:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 4:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4- (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 5:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y+5- (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 6:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x +4- (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 7:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -4- (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +4- (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 8:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x -3- (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                          							i++;
                          							break;
                          
                          						case 9:
                          							positionsang[nombremarque][i].x = positionsang[nombremarque][i].x- (cible2->w /2);
                          							positionsang[nombremarque][i].y = positionsang[nombremarque][i].y +5- (cible2->h /2);
                          							i++;
                          							break;
                          
                          						}
                          					}
                          					i = 0;
                          
                          					tableau[nombremarque].x = event.motion.x - (cible2->w /2); 
                          					tableau[nombremarque].y = event.motion.y - (cible2->h /2); 	
                          
                          					SDL_SetColorKey(impact[nombremarque], SDL_SRCCOLORKEY, SDL_MapRGB(impact[nombremarque]->format, 255, 255, 255));
                          					SDL_BlitSurface(impact[nombremarque],NULL,ecran,&tableau[nombremarque]);
                          					while(i<9)
                          					{
                          						SDL_Delay(60);
                          						SDL_BlitSurface(sang[nombremarque][i],NULL,ecran, &positionsang[nombremarque][i]);
                          						i++;
                          					}
                          					i = 0;
                          				
                          				nombremarque++;	
                          				}	
                          				else
                          					SDL_Delay(80);
                          				}
                          				else
                          					SDL_Delay(80);
                          				break;
                          			
                          			case SDL_MOUSEMOTION:
                          				positioncible.x = event.motion.x - (cible2->w /2);
                          				positioncible.y = event.motion.y - (cible2->h /2); 
                          				break;
                          
                          		}
                          		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                          		SDL_BlitSurface(cadre, NULL, ecran, &positioncadre);
                          		SDL_BlitSurface(pistolet, NULL, ecran, &positionpistolet);
                          		SDL_BlitSurface(elodie, NULL, ecran, &positionelodie);
                          		while (i < nombremarque)
                          		{
                          			SDL_BlitSurface(impact[i], NULL, ecran, &tableau[i]);
                          			i++;
                          		}
                          		while (i < nombremarque)
                          		{
                          			while (j < 9)
                          			{
                          				SDL_BlitSurface(sang[i][j],NULL,ecran, &positionsang[i][j]);
                          				j++;
                          			}
                          			j = 0;
                          			i++;
                          		}
                          		i = 0;
                          		SDL_BlitSurface(cible2, NULL, ecran, &positioncible);
                          		SDL_Flip(ecran);
                          		i = 0;
                          	}
                          
                          	FSOUND_Sample_Free(tir);
                              FSOUND_Close();	
                          while(i<nombremarque)
                          	{
                          	SDL_FreeSurface(impact[i]);
                          	i++;
                          	}
                          	SDL_Quit();
                          
                              return EXIT_SUCCESS;	
                          }
                          

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Probleme de BLIT

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown