Probleme de pointeur avec SDL_Rect

Résolu
Jackyzgood Messages postés 26 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 6 mars 2010 - 16 nov. 2008 à 21:15
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 16 nov. 2008 à 22:52
Bonjour à tous !

Je n'ai aucun soucis quand j'utilise des pointeurs sur des variables, ou sur des tableaux, mais je n'arrive pas à utiliser les pointeurs avec SDL_Rect, je pense pourtant utiliser la bonne syntaxe : (*pointeur).x
Mais il faut aussi que je précise, que j'essaye en fait de pointer un SDL_Rect qui  ressemble à ca :
SDL_Rect clip[ 10 ][ 10 ];

J'ai souvent mon compilateur (DEV CPP) qui me signale que le type du pointeur n'est pas le même que le type de la variable, alors que ce n'est pas le cas, que le pointeur n'est pas une structure malgrés la syntaxe : (*pointeur).x, ou alors c'est des erreurs de segmentation ....

Bref ... Si quelqu'un pouvait éclairer ma lanterne en m'explicant pourquoi SDL_Rect est un cas a part, ou en me donnant un exemple.

Merci d'avance

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 nov. 2008 à 21:47
Sans connaitre SDL_Rect, pour adresser un elem de tableau:

void TaFonction(SDL_Rect *prect);

en ayant: SDL_Rect clip[10][10];
je mettrais par exemple: TaFonction(&clip[1][2]);

il en va ainsi pour toute adresse d'un elem d'un tableau.

ciao...
BruNews, MVP VC++
3
Jackyzgood Messages postés 26 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 6 mars 2010
16 nov. 2008 à 22:08
Merci d'avoir pris le temps de me répondre, mais le plus pratique pour moi, serais d'avoir accès à l'intégralité du tableau dans ma fonction. Je vais t'expliquer ce que je cherche à faire, peut être qu'il y a une solution plus simple.

Je cherche à faire un jeu en SDL et pour cela j'ai récupéré des sprites sur le net, seulement la plus part des sprites sont mal foutu ... les différentes images ne sont pas à intervalles réguler ce qui fait que je dois les découper manuellement, et pour ca j'essaye de faire un petit prgramme pour me simplifier la tache.

Je commence par créer un fichier dans lequel je vais sauvegarder les coordonnées de découpage, position x,y longueur largeur. Je charge ensuite l'image, puis je crée ce fameux SDL_Rect clip[10][10], que j'utilise par la suite dans :

SDL_BlitSurface(image, &clip[ i ][ j ], ecran, &positionImage[ i ][ j ]);

j'arrive donc à afficher à l'ecran ceci :


l'image qui est "surlignée" en vert et l'image que l'on souhaite modifier.

Jusque la pas de probleme, le marqueur d'image se déplace correctement, et j'arrive même à modifier l'image qui est selectionné. Cependant j'utilise une fonction pour déplacer le marqueur et une autre pour modifier les coordonnées et donc les modifications se retrouve "coincé" dans ma fonction .... C'est pour ca que je cherche a utiliser un pointeur de structure de maniere a directement modifier les valeurs de découpage, pour qu'elle puissent etre utilisé dans la fonction main et donc enregistré par la suite dans le fichier
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 nov. 2008 à 22:33
PROTO: TaFonction(SDL_Rect tab[10][10]);
tu appelles: TaFonction(clip);

ciao...
BruNews, MVP VC++
0
Jackyzgood Messages postés 26 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 6 mars 2010
16 nov. 2008 à 22:47
void decoupage (SDL_Surface *ecran, SDL_Rect clip[ 10 ][ 10 ], SDL_Rect positionImage[ 10 ][ 10 ], SDL_Rect* positionMarqueur, SDL_Surface *image, SDL_Surface *marqueur, int *pointeurContinuer)

voila le proto de ma fonction, et comme dit les modifications des valeurs de clip reste a l'interieur de la fonction decoupage, c'est pour ca que je cherche désespérément a faire un pointeur sur cette structure de maniere a changer directement les valeurs et non pas les valeurs des copies crée pour la fonction.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 nov. 2008 à 22:52
Si tu modifies une valeur d'un elem de clip dans ta fonction, ça modifie bien le tableau, il n'y a aucune copie de faite.
Le passage d'un tableau est toujours une adresse.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous