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 :

nombre de déclarations inconnu


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut nombre de déclarations inconnu
    bonjour,

    voilà je cherche à créer un jeu dans lequel le nombre d'ennemis est variable selon le niveau dans lequel est le joueur.

    je ne sais donc pas combien d'ennemis déclarer au debut...

    voici la structure ennemi que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct Ennemi{
                    int Etat;
                    int TypeEnnemi;
                    int PositionX;
                    int PositionY;
                    float DernierTour;
                 };
    mon problème est que je récupère les données de ces ennemis dans un fichier texte et donc je ne sais pas combien en déclarer au départ... le fichier texte peut etre modifié (je peut ajouter un nombre donnant le nombre d'ennemis dans un niveau si nécessaire...) mais après il me faudrait un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pour k=1 à nombreennemi
        struct ennemi Ennemik
        Ennemik.Etat = la valeur que je récupère....
        ....
    fin pour
    mon k (ennemik) correspond à l'indice de boucle mais je ne sais pas si c'est faisable, je veux dire utiliser l'indice pour le mettre dans le nom...(oui/non?) ni même si j'ai le droit de déclarer comme ca en C (j'avoue, je trouve ca étrange mais je ne vois pas comment faire autrement!)

    Sinon j'avais pensé à une autre idée mais qui n'est pas forcément mieux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct Ennemi{
                    int Etat[xxx];
                    int TypeEnnemi[xxx];
                    int PositionX[xxx];
                    int PositionY[xxx];
                    float DernierTour[xxx];
                 };
    ici j'utilise des tableaux de la manière suivante : PositionX[3] = 2 voudra dire que l'ennemi 3 est en abscisse 2... le problème ici est que je ne sais pas la taille de mes tableaux avant la déclaration de ma structure ( xxx ) et que je devrais la récupérer dans le fichier.

    en gros je suis un peu perdu sur la méthode à utiliser... pour moi la seconde me parait meilleure mais j'ai du mal à la coder...

    voici pour l'instant le contenu de mon fichier Structures.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef Structure_H
    #define Structure_H
     
    const int taille=0;
     
    struct Ennemi{
                    int Etat[taille];
                    int TypeEnnemi[taille];
                    int PositionX[taille];
                    int PositionY[taille];
                    float DernierTour[taille];
                 };
    #endif
    le problème vient de la taille des tableaux... je voulais juste mettre Etat[taillle] puis il m'a demandé de déclarer taille (pas trop étonant) donc je l'ai déclaré et initialisé à 0 (en attendant de récupérer sa valeur dans mon fichier texte) puis il m'a dit "expected constant expression" j'ai tenté de mettre un const à tout hasard mais non...

    voilà donc merci d'avance pour vos propositions

  2. #2
    Membre éclairé
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Par défaut
    Salut,
    voilà je cherche à créer un jeu dans lequel le nombre d'ennemis est variable selon le niveau dans lequel est le joueur.
    Déclare un pointeur sur ta structure, puis assigne de l'espace mémoire avec malloc

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    ou alors tu fait une fonction qui te donne le nombre d'ennemi en fopnction du niveau (genre nb_d'ennemi = niveau * 5 + 6),

    en suite tu recupere ci nombre que t'appelle u et t'en fait un malloc(u).(dsl j'ai pas pu m'en empecher).

    salut

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    malloc(u)
    hmm...

    non c'est aléatoire (enfin ca ne suit pas de fonction)

    je pense donc que je devrais faire comme ca

    Déclare un pointeur sur ta structure, puis assigne de l'espace mémoire avec malloc
    mais les malloc et moi... je dois déclarer ma structure comment? je dois allouer ma mémoire à quel moment? (désolé ca me parait pas évident)

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ben c'est quasiment la base du C..

    Regardes les tutoriels, ou ton bouquin...

    N'essayes pas de faire du C si tu ne te préoccupes pas d'allocation dynamique...

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Tu as quantité de manières pour arriver à ce que tu veux...

    La premiere, c'est d'utiliser un pointeur sur ta structure et de jouer avec les fonctions malloc/realloc

    La deuxième est d'utiliser une structure dynamique (une file, par exemple) et créer un élément de ta file pour chaque lecture

    La troisième, que je déconseillerais largement, mais qu'on ne peut (pour etre complet) pas passer sous silence serait l'utilisation d'un tableau dont la taille serait arbitrairement choisie à une valeur qui ne serait jamais atteinte (1024, 2048 ou plus)

    Personnellement, j'aurais tendance, surtout si tous les ennemis ne doivent pas appraraitre en meme temps, à utiliser la file (qui fonctionne selon le principe "first in, first out")...

    Une simple modification de la structure en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct Ennemi{
                    int Etat;
                    int TypeEnnemi;
                    int PositionX;
                    int PositionY;
                    float DernierTour;
                    struct *Ennemi;
                 };
    et la mise en place d'une fonction "init" (permettant de créer la file sur base du fichier) et d'une fonction "suppress" (permettant de supprimer un élément de la file) suffiront à te permettre une adaptation à tous les cas de figure
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Method avec nombres de parametres inconnu
    Par Soulama dans le forum Général Java
    Réponses: 2
    Dernier message: 22/06/2009, 12h17
  2. Réponses: 2
    Dernier message: 28/10/2008, 20h19
  3. [MySQL] BBD et nombre de champs inconnu
    Par Arkante dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/09/2008, 01h29
  4. Créer un nombre de CheckBox inconnu avant de compiler..
    Par funkyspirit dans le forum Windows Forms
    Réponses: 13
    Dernier message: 18/07/2008, 11h51
  5. Nombre de forme inconnu
    Par futneguet dans le forum OpenGL
    Réponses: 1
    Dernier message: 26/04/2006, 18h00

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