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 :

Inventaire de fichiers .tfc


Sujet :

C++

  1. #1
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut Inventaire de fichiers .tfc
    Bonjour a tous , et meme

    Voila je programme actuellement un jeu, et j'utilise une fonction qui permet d'établir une configuration à partir d'un fichier, Config.tfc.
    Au début de mon main, j'appelle cette fonction, celle-ci lit une série de 14 entiers et les associe a certaines actions ( ex: MarcherAvant, etc... ).

    Jusqu'ici tout va bien, c'est juste que je désirerai mettre au point une fonction ( en tout cas une méthode ) qui permettrait de détecter tous les fichiers ayant l'extension .tfc dans le fichier de mon jeu ( Tactical Forces Alpha ). Ainsi, si plusieurs fichiers nommés Config.tfc existent, le programme affichera un message d'erreur ( ou bien demandera lequel utiliser pour la mise en place de la configuration, mais ce n'est pas la priorité pour le moment )

    Mais voila, je programme avec la SDL en C++ et je n'ais aucune idée de la manière dont il faut procéder...

    Pouvez vous m'éclairer svp ?

  2. #2
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Merci pour vos réponses

    J'aimerai explorer une piste : récupérer les noms des fichiers dans le répertoire dans une chaine, et garder les trois derniers caracteres de la chaine pour avoir l'extension ... Est ce qu'il y a une telle fonction ?

  3. #3
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut
    Je ne sais pas faire...
    Je pense qu'il te faut lister ls fichiers dans un fichier conf...

  4. #4
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    S'il existe des fonctions pour renommer des fichiers, il doit bien y en avoir pour récupérer leur nom

    J'ais regardé dans stdio.h mais je n'ai pas vraiment trouvé ...

  5. #5
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Citation Envoyé par ironzorg
    Jusqu'ici tout va bien, c'est juste que je désirerai mettre au point une fonction ( en tout cas une méthode ) qui permettrait de détecter tous les fichiers ayant l'extension .tfc
    Cela dépend de l'OS sinon il faut utiliser des fonctions comme _findfirst _findnext
    _findfirst
    Requirements
    Function Required header Compatibility
    _findfirst <io.h> Provide information about the first instance of a filename that matches the file specified in the filespec argument.
    Parameters
    filespec
    Target file specification (may include wildcards).
    fileinfo
    File information buffer.
    Return Value
    If successful, _findfirst returns a unique search handle identifying the file or group of files matching the filespec specification, which can be used in a subsequent call to _findnext, or to _findclose. Otherwise, _findfirst will return –1 and set errno to one of the following values:

    ENOENT
    File specification that could not be matched.
    EINVAL
    Invalid filename specification.
    C'est plus une question forum C/C++ Il faut faire une recherche récursive et utiliser listes chainées au besoin

    dans le fichier de mon jeu ( Tactical Forces Alpha ).
    Une version de démo ? On peut voir des sceenshots je suis curieux

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Ceci est une question C/C++ et non à propos de la SDL directement, dis-moi dans quel langage tu programmes ton jeu et je déplacerais le message.

    Jc

  7. #7
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Ceci est une question C/C++ et non à propos de la SDL directement, dis-moi dans quel langage tu programmes ton jeu et je déplacerais le message.

    Jc
    Je programme en C++ mais je pensait que SDL permettait de récupérer le nom d'un fichier... ( apparrement il y aurait une possibilité avec readir() je crois ...)

    Une version de démo ? On peut voir des sceenshots je suis curieux
    Pour le moment je galère un peu niveau graphisme et la démo n'est pas encore prete... Je te fait des screens et je poste

  8. #8
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Citation Envoyé par ironzorg
    Je programme en C++ mais je pensait que SDL permettait de récupérer le nom d'un fichier... ( apparrement il y aurait une possibilité avec readir() je crois ...)
    SDL ne gère qu'affichages,sons et entrées périphs de saisie....pour la gestion fichiers/répertoires c'est le role de l'OS
    Sinon j'attends la démo

  9. #9
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Tu peux t'appuyer sur boost::filesystem pour faire ça de façon C++ et multi-plateforme

  10. #10
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Quelqu'un sait utiliser readdir et opendir ? Apparremment readdir retourne d_name ( nom du fichier ) et en ne gardant que les trois dernieres lettres du fichier on a l'extension ... Mais meme en cherchant sur je n'ais pas trouvé d'exemple de code ...

  11. #11
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Attendez regardez ce que je viens de trouver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    /* © FAQ C - Developpez.com */
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
     
    int main(void)
    {
       struct dirent *lecture;
       DIR *rep;
       rep = opendir("/tmp");
       while ((lecture = readdir(rep)))
       {
          printf("FICHIER: %s\n", lecture->d_name);
       }
       closedir(rep);
     
       return 0;
    }
    Je fait des tests et je donne des nouvelles

    Mat.M
    Citation:
    ironzorg a écrit :
    Je programme en C++ mais je pensait que SDL permettait de récupérer le nom d'un fichier... ( apparrement il y aurait une possibilité avec readir() je crois ...)
    SDL ne gère qu'affichages,sons et entrées périphs de saisie....pour la gestion fichiers/répertoires c'est le role de l'OS
    Sinon j'attends la démo
    Pour la démo il va falloir attendre un peu car les maps sont longues a faire ( tiling ) et quelques bugs mineurs sont a déclarer ...

  12. #12
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    /*
        Config.cpp
        Fonction qui associe un nombre a une action afin d'Ètablir une configuration
     
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include "Config.h"
     
    int EtablirConfiguration()
    {
        Keystates KEY;
     
        FILE* fichier = NULL;
     
        fichier = fopen("Config.tfc", "r");
     
        if (fichier != NULL)
        {
            fscanf(fichier, "%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld", &KEY.MarcherAvant,
            &KEY.MarcherArriere,&KEY.MarcherGauche, &KEY.MarcherDroite, &KEY.Acheter, &KEY.Tirer, &KEY.Recharger,
            &KEY.Arme01, &KEY.Arme02, &KEY.Arme03, &KEY.Arme04, &KEY.Quitter, &KEY.InfoMap, &KEY.Fullscreen);
     
            fclose(fichier);
        }
        if(fichier == NULL)
        {
            MessageBox(0,"Impossible d'ouvrir Config.tfc",NULL,0);
            return 1;
        }
     
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    /*
     
        Config.h
        Actions dÈterminÈe par EtablirConfiguration();
     
    */
    #ifndef DEF_CONFIG
    #define DEF_CONFIG
     
        class Keystates
        {
            public:
     
            int MarcherAvant, MarcherArriere, MarcherGauche, MarcherDroite;
     
            int Acheter, Tirer, Recharger, Arme01, Arme02, Arme03, Arme04;
     
            int Quitter, InfoMap;
     
            int Fullscreen;
        };
     
        int EtablirConfiguration();
     
    #endif
    Seulement lors de mon switch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    void Dot::handle_input()
    {
    Keystates PARAM;
        if( event.type == SDL_KEYDOWN )
        {
            switch( event.key.keysym.sym )
            {
                case SDLK_UP: yVel += DOT_HEIGHT / 7; AvancerOBJ = true; break;
                case SDLK_DOWN: yVel -= DOT_HEIGHT / 7; break;
                case SDLK_LEFT: xVel -= DOT_WIDTH / 7; break;
                case SDLK_RIGHT: xVel += DOT_WIDTH / 7; break;
            }
        }
        else if( event.type == SDL_KEYUP )
        {
            switch( event.key.keysym.sym )
            {
                case SDLK_UP: yVel -= DOT_HEIGHT / 7; AvancerOBJ = false; break;
                case SDLK_DOWN: yVel += DOT_HEIGHT / 7; break;
                case SDLK_LEFT: xVel += DOT_WIDTH / 7; break;
                case SDLK_RIGHT: xVel -= DOT_WIDTH / 7; break;
            }
        }
    }
    Impossible de remplacer SDLK_UP ou autres par PARAM.MarcherAvant sous peine d'une erreur de compilation : impossible de mettre PARAM.MarcherAvant dans une expression constante ...
    Une explication ?

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ben... PARAM.MarcherAvant n'est pas une constante.

    Si tu veux une constante alors il existe deux façons (enfin seule la première passe sous VC6).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Keystates
    {
    public :
     
        enum
        {
            MarcherAvant = ...,
            MarcherArriere = ...,
            ...
        };
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Keystates
    {
    public :
     
        static const int MarcherAvant = ...;
        static const int MarcherArriere = ...;
        ...
    };

  14. #14
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Je ne connais pas trop static mais apparemment cet indicateur sert a attribuer une valeur a une variable membre ... C'est ça ?

Discussions similaires

  1. [XL-2010] Fichier pour inventaire
    Par MsVixene dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 28/07/2014, 17h48
  2. Réponses: 1
    Dernier message: 04/05/2010, 11h41
  3. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 09h38
  4. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31
  5. Fichier PDOXUSRS.NET
    Par yannick dans le forum Paradox
    Réponses: 5
    Dernier message: 05/04/2002, 09h45

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