IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Passage de pointeur a une fonction


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut Passage de pointeur a une fonction
    Bonjour, je crée un petit Mario Bross à l'aide de la SDL.

    Je rencontre actuellement un probleme. J'envoie un tableau de surfaces à une fonction, mais celle ci n'arrive pas a le modifier.

    Voici donc l'initialisation de mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Surface *mario[16] = {NULL};

    J'appelle ensuite une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    deplacerMario(&saut, carte, &debutSaut, &positionMario, marioActuel, mario);
    Et voici donc le prototype de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void deplacerMario(int *saut, int carte[][NB_BLOCS_HAUTEUR], int *debutSaut, SDL_Rect *positionMario, SDL_Surface *marioActuel, SDL_Surface *mario);
    En faisant des tests, j'arrive a modifier chacun des parametres par la fonction, sauf le dernier. C'est donc bien de la que vient mon probleme.

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 38
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par candreolli
    Bonjour, je crée un petit Mario Bross à l'aide de la SDL.
    Bon courage !

    Il y a quand même quelque chose que je n'ai pas suivi dans ton code (mais il se fait tard et je commence à fatiguer) :

    La variable mario est déclarée comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Surface *mario[16] = {NULL};
    (un tableau de SDL_Surface *)

    Or le paramètre formel mario dans ta fonction deplacerMario m'a tout l'air d'être un simple SDL_Surface *.

    Le code de la fonction deplacerMario ne serait pas superflu (ou au moins la signification de chaque argument, et l'action de la fonction sur ceux-ci).

    Il faudrait que tu précises si le dernier paramètre doit s'interpréter comme l'adresse d'une seule structure SDL_Surface, ou l'adresse d'un tableau de SDL_Surface.

    Dans ce dernier cas, il vaudrait mieux essayer :
    (pour déclarer un tableau de structures SDL_Surface allouées, et non un tableau de pointeurs).

    Bien sûr, cela n'a de sens que si la fonction deplacerMario a pour rôle de renvoyer des SDL_Surface valides, mais il faudrait que tu précises ce que tu tentes de faire modifier par deplacerMario.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Non, j'avais essayé de déclarer ma variable comme ca. Je trouvais ca louche égallement ^^

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Je suppose que dans ce tableau tu stock toutes les images relatives aus différentes positions et états du personnage non ?

    Si c'est le cas, ce n'est pas la meilleure façon de procéder car si tu fait comme ca avec tout, tu vas en utiliser de la RAM et pas qu'un peu ! Le conseil que je peut te donner, c'est d'avoir un seul pointeur vers un SDL_Surface qui contient tout le chipset des sprites de ton Mario (tous les états en une seule image quoi) et plutôt de faire un tableau de Rect à la place.

    Dans ce nouveau tableau, tu stockera les différentes tailles (le mieux serais que tous les sprites du personnage aient la même taille, mieux pour gérer par la suite) et position des sprites dans le chipset.

    Après ce n'est qu'une simple routine pour le Blit des surface, tu utilise le bon indice de rectangle de coordonnées pour la fonction SDL_BlitSurface et c''est tout, tu va gagner en temps et en ressources !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/01/2010, 14h01
  2. passage de pointeur dans une fonction
    Par El Manco dans le forum Débuter
    Réponses: 10
    Dernier message: 09/02/2009, 22h13
  3. Réponses: 6
    Dernier message: 31/05/2008, 15h45
  4. [Wincc flexible] Passage d'un pointeur a une fonction Vbs
    Par ren973 dans le forum Automation
    Réponses: 34
    Dernier message: 10/04/2008, 18h29
  5. Réponses: 31
    Dernier message: 31/03/2008, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo