begin process at 2012 05 30 08:37:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

SDL et les threads


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SDL et les threads

vendredi 28 mai 2010 à 12:29:56 | SDL et les threads

Shirubaino

Bonjour.

Dans le cadre d'un jeux nécessitant la pause de plusieurs bombes en même temps (et ainsi leur explosion a un interval précis),
et pour gérer cela on utilise des threads.
Cependant, lorsque l'ont pose plusieurs bombes, l'explosion se fait au niveau de la derniere bombe posé car les variables de positions gardent la dernière valeur prise lors de l'appui de la touche qui sert a poser la bombe.

Avez vous une idée pour faire en sorte que les variables de positions ne se reset pas a chaque appuis ?

Voici le morceau de code:

SDL_Surface *screen = NULL,*fondEcran = NULL;
SDL_Rect positionSalameche, position_explosion, positionPokeballRouge; // ne vous fiez pas au nom, c'est un bomberman personalisé
SDL_Thread *thread, *thread2, *thread3;



int my_thread( void *data ); //prototype du 1er thread

int my_thread( void *data ){
SDL_LockMutex(myMutex);
SDL_Surface *pokeballRouge, *explosion=NULL; //déclaration des surfaces pour la bombe
int my_thread2( void *data ); //prototype des 2 threads, pour effacer l'explosion
int my_thread3( void *data ); // et effacer la bombe
positionPokeballRouge.x = positionSalameche.x;
positionPokeballRouge.y = positionSalameche.y;

position_explosion.x = positionPokeballRouge.x;
position_explosion.y = positionPokeballRouge.y;

pokeballRouge = IMG_Load("Pokebomb_1.png");
explosion = IMG_Load("explosion.png");


SDL_BlitSurface(pokeballRouge, NULL, fondEcran, &positionPokeballRouge); //blittage de la pokeball sur le fondEcran
thread3 = SDL_CreateThread(my_thread3, NULL); //création du thread 3 qui efface la bombe après l'avoir déposé
SDL_Delay(3000); //on attend 3 secondes avant que l'explosion n'apparaisse
SDL_BlitSurface(explosion, NULL, screen, &position_explosion);
SDL_Flip(screen);
thread2 = SDL_CreateThread(my_thread2, NULL); // création du thread 2 pour effacer l'explosion

SDL_FreeSurface(pokeballRouge);
SDL_FreeSurface(explosion);
SDL_UnlockMutex(myMutex);
return 0;
}

Voila, ce sont les variables position_explosion et positionPokeballRouge qui se reset a chaque fois que l'ont lance le thread.
Une idée ?


Cette discussion est classée dans : thread, my, sdl, explosion, positionpokeballrouge


Répondre à ce message

Sujets en rapport avec ce message

morpion 10 * 10 en C avec SDL [ par nicoworld ] Voilà j'ai ce petit sujet : clair un petit morpion 100 cases donc et interface SDl à oui et 2 joueurs...je m'arrache les cheveux avec mes booléens = thread qui marche pas [ par kidpigeyre ] Je réalise un feu d'artifice en C et lors d'une explosion , jveu faire jouer un son mais sans que le programme n'est à attendre pour continuer. Je sou Question Urgente: SDL : gestion d'événements et thread [ par le_duche ] J'ai besoin d'actualiser les événements SDL dans un thread sans que ca suprime la pile d'événements pour le processus principal. En gros j'ai besoin Sdl_net + pthread probleme d'argument [ par Defaite ] Bonjour à tous.Voila mon problème, j'ai une thread ( en Pthread ) qui devrait s'occuper d'un socket.Seulement voila, impossible de dire à ma thread co probleme thread/ SDL [ par ritchou42 ] salut tout le monde [^^happy7] voila je suis entrain de coder un gros projet pour mon école et j'ai un probleme au niveau de se code [code=cpp] int SDL : Affichage en multi thread ?! [ par ctx_man ] Bonjour tout le monde, SDL me pose un problème.Je voudrait faire du multi thread afin de séparer ma gestion clavier de mon affichage.voila un exemple Un Thread qui ne va pas :-( [ par dbiare ] Bonjour tout le monde J’aimerais faire un « thread » sous Visual C++6. D’après ce que j’ai pu comprendre (après lecture) je déclare (dans un objet dér SDL : Un cercle pas entier en fonction de y, x et du rayon [ par The_Sin ] Salut, je fais un cercle en SDL, et quand x ou y sont plus petits que le rayon ou plus grand que la 'taille de l'écran - rayon', le cercle dessiné n'e import librairie (bis) [ par touny23 ] bon j arrive a importer une librairie en C++ en faisan dans le fichier .h: #ifndef _MY_FILE#define _MY_FILE#ifdef __cplusplusextern "C" {#endifvoid __ Affichage de texte avec SDL [ par nightlord666 ] Bonjour ! J'aimerais savoir comment je peut afficher du texte en n'utilisant que SDL. Est-on obligé de créer un fichier contenant la texture ou y a t-


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,590 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales