Problème de Threads
                    
        
     
             
                    SnoopydesBois
    
        
    
                    Messages postés
            
                
     
             
            2
        
            
                                    Statut
            Membre
                    
                -
                                     
SnoopydesBois Messages postés 2 Statut Membre -
        SnoopydesBois Messages postés 2 Statut Membre -
        Bonjour à tous, 
Je suis en train de coder un jeu.
Pour ce jeu, j'essaie d'utiliser des threads (à l'aide la bibliothèque <pthread.h>) pour faire se déplacer des personnages/monstres.
Puisque j'utilise un thread, je dois passer un void* en paramètre.
Or, pour ma fonction de déplacement j'ai besoin de plusieurs paramètres. Je veux donc passer une structure à mon thread.
Mon problème est que je n'arrive pas à accéder aux champs de ma structure.
Voici le code de ma structure :
typedef struct S_Param_Thread{
T_Monstre monstre; //T_Monstre est un pointeur sur la structure S_Monstre
t_ecran_de_jeu matrice; //t_ecran_de_jeu est un pointeur sur la structure s_ecran_de_jeu
int nbdeplacement;
}* T_Param_Thread;
Voici une partie du code de ma fonction :
void* calculDeplacementMonstre(void* my_Param_Thread)
//my_Param_Thread est censé être une variable de type T_Param_Thread (pointant sur une structure de type S_Param_Thread)
{
      
if(
((T_Param_Thread*)my_Param_Thread)->matrice->positionHeros.ligne == ((T_Param_Thread*)my_Param_Thread)->monstre->pos_monstre.ligne
||
((T_Param_Thread*)my_Param_Thread)->matrice->positionHeros.colonne == ((T_Param_Thread*)my_Param_Thread)->monstre->pos_monstre.colonne){
              
//On fait quelque chose
}
}
Lorsque je compile, j'obtiens l'erreur suivante :
error: request for member 'matrice' in something not a structure or union
Je viens donc chercher de l'aide car je ne comprends pas comment me débarrasser de cette erreur.
(Désolé pour l'indentation complétement moche mais je n'ai pas réussi à faire mieux :/)
Merci de vos réponses :)
            
            
                
            
                
    
    
    
        Je suis en train de coder un jeu.
Pour ce jeu, j'essaie d'utiliser des threads (à l'aide la bibliothèque <pthread.h>) pour faire se déplacer des personnages/monstres.
Puisque j'utilise un thread, je dois passer un void* en paramètre.
Or, pour ma fonction de déplacement j'ai besoin de plusieurs paramètres. Je veux donc passer une structure à mon thread.
Mon problème est que je n'arrive pas à accéder aux champs de ma structure.
Voici le code de ma structure :
typedef struct S_Param_Thread{
T_Monstre monstre; //T_Monstre est un pointeur sur la structure S_Monstre
t_ecran_de_jeu matrice; //t_ecran_de_jeu est un pointeur sur la structure s_ecran_de_jeu
int nbdeplacement;
}* T_Param_Thread;
Voici une partie du code de ma fonction :
void* calculDeplacementMonstre(void* my_Param_Thread)
//my_Param_Thread est censé être une variable de type T_Param_Thread (pointant sur une structure de type S_Param_Thread)
{
if(
((T_Param_Thread*)my_Param_Thread)->matrice->positionHeros.ligne == ((T_Param_Thread*)my_Param_Thread)->monstre->pos_monstre.ligne
||
((T_Param_Thread*)my_Param_Thread)->matrice->positionHeros.colonne == ((T_Param_Thread*)my_Param_Thread)->monstre->pos_monstre.colonne){
//On fait quelque chose
}
}
Lorsque je compile, j'obtiens l'erreur suivante :
error: request for member 'matrice' in something not a structure or union
Je viens donc chercher de l'aide car je ne comprends pas comment me débarrasser de cette erreur.
(Désolé pour l'indentation complétement moche mais je n'ai pas réussi à faire mieux :/)
Merci de vos réponses :)
        A voir également:         
- Problème de Threads
 - Threads instagram c'est quoi - Accueil - Guide réseaux sociaux
 - Threads - Guide
 - Calcul 8 threads excel - Forum Excel
 - Compte Threads : comment s'inscrire sur le nouveau réseau social - Accueil - Réseaux sociaux
 - Threads apk - Télécharger - Réseaux sociaux
 
2 réponses
                        
                    Bonjour,
Merci d'utiliser les balises de code pour le rendre un minimum lisible.
Le type T_Param_Thread est déjà un pointeur sur struct S_Param_Thread. Le code ci dessous devrait fonctionner.
    
                Merci d'utiliser les balises de code pour le rendre un minimum lisible.
Le type T_Param_Thread est déjà un pointeur sur struct S_Param_Thread. Le code ci dessous devrait fonctionner.
if ((T_Param_Thread)my_Param_Thread)->matrice->positionHeros.ligne == ((T_Param_Thread)my_Param_Thread)->monstre->pos_monstre.ligne ||
((T_Param_Thread)my_Param_Thread)->matrice->positionHeros.colonne == ((T_Param_Thread)my_Param_Thread)->monstre->pos_monstre.colonne) { 
    /* Code */
}