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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 527
    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 527
    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
    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 ...

  8. #8
    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 ?

  9. #9
    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 = ...;
        ...
    };

  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
    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