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 :

Problème fichier (eof())


Sujet :

C++

  1. #21
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    C'est de nouveau moi J'ai commencé à appliquer ce qu'on m'a dit ici.

    J'ai encore quelques questions, et après logiquement ça sera bon, j'aurai tout ce qu'il me faut pour faire le programme

    Je poste le code en entier :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    // Définition des en-têtes
     
    #include <iostream>
    using std::cout;
    using std::cerr;
    using std::cin;
    using std::ios;
    using std::endl;
    using std::istream;
    using std::ostream;
     
    #include <string>
    using std::string;
     
    #include <fstream>
    using std::ofstream;
    using std::ifstream;
    using std::fstream;
     
    #include <vector>
    using std::vector;
     
    #include <iterator>
    using std::istream_iterator;
    using std::ostream_iterator;
     
    // Fin de définition des en-têtes
     
    struct Joueur // Défini la structure Joueur
    {
       string nom; // Le nom de famille du joueur
       string prenom; // Le prenom du joueur
       double pointsMensuels; // Les points mensuels du joueur
       double pointsCours; // Les points en cour
    };
     
    // Prototypes des fonctions
    int menuPrincipal ();
     
    template <typename T>
    void afficherListe (const vector <T> &);
     
    template <typename T>
    void gestionJoueurs (vector <T> &);
     
    template <typename T>
    void ajouterVictoire (vector <T> &);
     
    template <typename T>
    void ajouterDefaite (vector <T> &);
     
    template <typename T>
    void cloturerMois (vector <T> &);
     
    // Surcharge des operateurs
    istream & operator >>(istream& is, Joueur& j)
    {  
       return is >> j.nom >> j.prenom >> j.pointsMensuels >> j.pointsCours;
    }
     
    ostream & operator <<(ostream& os, const Joueur& j)
    {
        return os << j.nom << ' ' << j.prenom << ' '
                  << j.pointsMensuels << ' ' << j.pointsCours << endl;
    }
     
    // -----
     
    int main()
    {
       ofstream fichier ("informations.txt", ios::app);
       fichier.close();
     
       // Créé l'objet fichier_in comme fichier texte
       ifstream fichier_in ("informations.txt");
     
       if (!fichier_in) // Teste l'ouverture du fichier
       {
          cerr << "Ouverture du fichier impossible.";
          exit (1);
       }
     
       // Ecrit le contenu du fichier dans le vector Joueurs
       vector <Joueur> Joueurs(istream_iterator<Joueur>(fichier_in), (istream_iterator<Joueur>())); 
       fichier_in.close(); // Ferme le fichier
     
       int choix; // Contient le choix de l'utilisateur
       void (* fonction [4]) (vector <Joueur> &) = {gestionJoueurs, ajouterVictoire, ajouterDefaite,
                                               cloturerMois};
     
       while ((choix = menuPrincipal ()) != 5)
       {
          (* fonction [choix - 1]) (Joueurs); // Appelle la fonction correspondante
                                                                 // à l'aide des pointeurs de
                                                                 // fonctions
       }
     
       // Ouverture du fichier en sortie
       ofstream fichier_out ("informations.txt");
     
       if (!fichier_out) // Teste l'ouverture du fichier
       {
          cerr << "Ouverture du fichier impossible.";
          exit (1);
       }
     
       // Ecrit le contenu du vector Joueurs dans le fichier texte
       copy (Joueurs.begin(), Joueurs.end(), ostream_iterator<Joueur>(fichier_out));
     
       system("PAUSE");
       return 0;
    }
     
    // Fonction gestionJoueurs : permet de voir la liste des joueurs, d'ajouter un joueur, de
    // supprimer un joueur et enfin de changer le joueur actif.
    template <typename T>
    void gestionJoueurs (vector <T> & vectorJoueurs)
    {
       // Prototypes des fonctions. Ainsi, elles ne peuvent être utilisées par d'autres
       // fonctions du programme, mais seulement par gestionJoueurs ()
       //void afficherListe (const vector <T> &);
       //void supprimerJoueur (vector <T> &);
       //void ajouterJoueur (vector <T> &);
     
       int choix;
     
       do
       {
          system ("cls");
          cout << "1 - Voir la liste des joueurs"
               << "\n2 - Supprimer un joueur"
               << "\n3 - Ajouter un joueur"
               << "\n4 - Changer le joueur actif"
               << "\n5 - Revenir au menu precedent"
               << "\nVotre choix : ";
          cin >> choix;
       } while (choix < 1 || choix > 5);
     
       switch (choix) // Introduit un switch
       {
          case 1:
             afficherListe (vectorJoueurs);
             break;
          case 2:
             //supprimerJoueur ();
             break;
          case 3:
             //ajouterJoueur ();
             break;
          case 4:
             break;
          case 5:
             return;
          default:
             cerr << "Erreur.";
             exit (1);
       }
    }
     
    template <typename T>
    void afficherListe (const vector <T> & vectorJoueurs)
    {
       system ("cls");
       cout << "Les joueurs possedant une fiche sont :" << endl << endl;
     
       typename vector <T>::const_iterator p1; // Créé un iterateur
     
       if (vectorJoueurs.empty()) // Si le vector est vide
       {
          cout << "Il n'y a pas de joueurs." << endl;
          system ("PAUSE");
          return;
       }
     
       for (p1 = vectorJoueurs.begin() ; p1 != vectorJoueurs.end() ; ++p1)
       {      
          cout << p1->nom << ' ' << p1->prenom << endl
               << "Points mensuels (base de calcul) : " << p1->pointsMensuels << endl
               << "Points en cours : " << p1->pointsCours << endl
               << "Progression : " << (p1->pointsCours) - (p1->pointsMensuels) << endl << endl
               << "--------------" << endl << endl;
       }
     
       cout << endl << endl;
     
       system ("PAUSE");
    }
     
    template <typename T>
    void ajouterVictoire (vector <T> & vectorJoueurs)
    {
       cout << "Hello.";
    }
     
    template <typename T>
    void ajouterDefaite (vector <T> & vectorJoueurs)
    {
       cout << "Hello.";
    }
     
    template <typename T>
    void cloturerMois (vector <T> & vectorJoueurs)
    {
       cout << "Hello.";
    }
     
    int menuPrincipal ()
    {
       int rubrique;
     
       do
       {
          system ("cls"); // Vide l'affichage
     
          cout << "1 - Gestion des joueurs"
               << "\n2 - Ajouter une victoire"
               << "\n3 - Ajouter une defaite"
               << "\n4 - Cloturer le mois"
               << "\n5 - Quitter"
               << "\nVotre choix : ";
          cin >> rubrique;
       } while (rubrique < 1 || rubrique > 5); // Vérifie le choix de l'utilisateur
     
       return rubrique; // Retourne le choix;
    }
    1) Au début, les fonctions de Gestion de Joueurs, j'avais mis leurs prototypes à même la fonction Gestion des joueurs (ils sont en commentaire dans la fonction gestionJoueurs) de façon à ce que seule cette fonction puisse appeler ces fonctions, toutefois ça ne marche pas. Si je mets les prototypes comme les autres prototypes de fonctions (à l'exterieur de tout bloc), ça marche bien, va comprendre...

    2) NE COMPILEZ SURTOUT PAS CE PROGRAMME... En effet, il marche bien, je peux me balader dans les fonctions, les éléments dans le fichier s'affichent bien comme je veux, SEULEMENT, quand je le ferme, le PC... reboot . A deux reprises dès que j'ai quitter le programme, ça a rebooter. Ca ne m'est jamasi arrivé, généralement seul le programme se ferme, mais là tout le PC reboot... C'est très étrange...

  2. #22
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    1) Oublie cette idée, surtout avec des templates. Surtout que ça n'a pas beaucoup d'utilité.

    2) Ton code ne fait pourtant pas de manip douteuse sur la mémoire, bizarre. Le problème doit venir d'ailleurs, peut-être de ton PC.

    Et comme je te l'ai déjà dit, les templates ne servent absolument à rien ici, puisque tes fonctions n'ont rien de générique.

  3. #23
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Ahahaha c'est à ni rien comprendre... Je viens de relancer le programme j'ai juste changer un tout petit truc et tout marche bien... J'ai ajouter 5 joueurs dans le fichier, tout est bien mis en forme, parfait ! J'ai plus l'erreur du tout début quand je passais des fichiers aux fonctions, bref c'est génial. Pour les template, c'est fait, a plus ^^ :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
     
    // Définition des en-têtes
     
    #include <iostream>
    using std::cout;
    using std::cerr;
    using std::cin;
    using std::ios;
    using std::endl;
    using std::istream;
    using std::ostream;
     
    #include <string>
    using std::string;
     
    #include <fstream>
    using std::ofstream;
    using std::ifstream;
    using std::fstream;
     
    #include <vector>
    using std::vector;
     
    #include <iterator>
    using std::istream_iterator;
    using std::ostream_iterator;
     
    // Fin de définition des en-têtes
     
    struct Joueur // Défini la structure Joueur
    {
       string nom; // Le nom de famille du joueur
       string prenom; // Le prenom du joueur
       double pointsMensuels; // Les points mensuels du joueur
       double pointsCours; // Les points en cour
    };
     
    // Prototypes des fonctions
    int menuPrincipal ();
    void gestionJoueurs (vector <Joueur> &);
    void ajouterVictoire (vector <Joueur> &);
    void ajouterDefaite (vector <Joueur> &);
    void cloturerMois (vector <Joueur> &);
     
    // Surcharge des operateurs
    istream & operator >>(istream& is, Joueur& j)
    {  
       return is >> j.nom >> j.prenom >> j.pointsMensuels >> j.pointsCours;
    }
     
    ostream & operator <<(ostream& os, const Joueur& j)
    {
        return os << j.nom << ' ' << j.prenom << ' '
                  << j.pointsMensuels << ' ' << j.pointsCours << endl;
    }
     
    // -----
     
    int main()
    {
       ofstream fichier ("informations.txt", ios::app);
       fichier.close();
     
       // Créé l'objet fichier_in comme fichier texte
       ifstream fichier_in ("informations.txt");
     
       if (!fichier_in) // Teste l'ouverture du fichier
       {
          cerr << "Ouverture du fichier impossible.";
          exit (1);
       }
     
       // Ecrit le contenu du fichier dans le vector Joueurs
       vector <Joueur> Joueurs(istream_iterator<Joueur>(fichier_in), (istream_iterator<Joueur>())); 
       fichier_in.close(); // Ferme le fichier
     
       int choix; // Contient le choix de l'utilisateur
       void (* fonction [4]) (vector <Joueur> &) = {gestionJoueurs, ajouterVictoire, ajouterDefaite,
                                                    cloturerMois};
     
       while ((choix = menuPrincipal ()) != 5)
       {
          (* fonction [choix - 1]) (Joueurs); // Appelle la fonction correspondante
                                                                 // à l'aide des pointeurs de
                                                                 // fonctions
       }
     
       // Ouverture du fichier en sortie
       ofstream fichier_out ("informations.txt");
     
       if (!fichier_out) // Teste l'ouverture du fichier
       {
          cerr << "Ouverture du fichier impossible.";
          exit (1);
       }
     
       // Ecrit le contenu du vector Joueurs dans le fichier texte
       copy (Joueurs.begin(), Joueurs.end(), ostream_iterator<Joueur>(fichier_out));
     
       system("PAUSE");
       return 0;
    }
     
    // Fonction gestionJoueurs : permet de voir la liste des joueurs, d'ajouter un joueur, de
    // supprimer un joueur et enfin de changer le joueur actif.
    void gestionJoueurs (vector <Joueur> & vectorJoueurs)
    {
       // Prototypes des fonctions. Ainsi, elles ne peuvent être utilisées par d'autres
       // fonctions du programme, mais seulement par gestionJoueurs ()
       void afficherListe (const vector <Joueur> &);
       //void supprimerJoueur (vector <T> &);
       //void ajouterJoueur (vector <T> &);
     
       int choix;
     
       do
       {
          system ("cls");
          cout << "1 - Voir la liste des joueurs"
               << "\n2 - Supprimer un joueur"
               << "\n3 - Ajouter un joueur"
               << "\n4 - Changer le joueur actif"
               << "\n5 - Revenir au menu precedent"
               << "\nVotre choix : ";
          cin >> choix;
       } while (choix < 1 || choix > 5);
     
       switch (choix) // Introduit un switch
       {
          case 1:
             afficherListe (vectorJoueurs);
             break;
          case 2:
             //supprimerJoueur ();
             break;
          case 3:
             //ajouterJoueur ();
             break;
          case 4:
             break;
          case 5:
             return;
          default:
             cerr << "Erreur.";
             exit (1);
       }
    }
     
    void afficherListe (const vector <Joueur> & vectorJoueurs)
    {
       system ("cls");
       cout << "Les joueurs possedant une fiche sont :" << endl << endl;
     
       vector <Joueur>::const_iterator p1; // Créé un iterateur
     
       if (vectorJoueurs.empty()) // Si le vector est vide
       {
          cout << "Il n'y a pas de joueurs." << endl;
          system ("PAUSE");
          return;
       }
     
       for (p1 = vectorJoueurs.begin() ; p1 != vectorJoueurs.end() ; ++p1)
       {      
          cout << p1->nom << ' ' << p1->prenom << endl
               << "Points mensuels (base de calcul) : " << p1->pointsMensuels << endl
               << "Points en cours : " << p1->pointsCours << endl
               << "Progression : " << (p1->pointsCours) - (p1->pointsMensuels) << endl << endl
               << "--------------" << endl << endl;
       }
     
       cout << endl << endl;
     
       system ("PAUSE");
    }
     
    void ajouterVictoire (vector <Joueur> & vectorJoueurs)
    {
       cout << "Hello.";
    }
     
    void ajouterDefaite (vector <Joueur> & vectorJoueurs)
    {
       cout << "Hello.";
    }
     
    void cloturerMois (vector <Joueur> & vectorJoueurs)
    {
       cout << "Hello.";
    }
     
    int menuPrincipal ()
    {
       int rubrique;
     
       do
       {
          system ("cls"); // Vide l'affichage
     
          cout << "1 - Gestion des joueurs"
               << "\n2 - Ajouter une victoire"
               << "\n3 - Ajouter une defaite"
               << "\n4 - Cloturer le mois"
               << "\n5 - Quitter"
               << "\nVotre choix : ";
          cin >> rubrique;
       } while (rubrique < 1 || rubrique > 5); // Vérifie le choix de l'utilisateur
     
       return rubrique; // Retourne le choix;
    }


    C'est mieux ?

    D'autres conseils pour améliorer le code ou c'est parfait ? (je séparerai les fonctions du main plus tard).

  4. #24
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pour faire un truc vraiment clean, je vois encore deux choses à corriger :

    - exit() doit être banni en C++, car elle n'appelera pas les destructeurs de certains objets. S'il s'agit d'erreurs tu peux utiliser des exceptions, sinon de simples "return" pour quitter prématurément les fonctions.

    - Les saisies ne sont pas suffisamment vérifiées. En l'occurence, tu auras de jolies bugs si tu commences à taper une lettre au lieu d'un chiffre à l'écran de menu. Voir http://c.developpez.com/faq/cpp/?pag...#SL_cin_verify

  5. #25
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    A la limite, faire plusieurs fichiers, subdiviser les fonctions qui sont bien longues, faire une classe de menu, ...

  6. #26
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Merci loulou, maintenant tout est bien vérifié, je peux taper a ou 45 ça plante pas !

    Miles > Oui j'ai déjà subdiviser main des fonctions, je subdiviserai plus en les regroupant plus tard . Par contre je ne vois pas ce que tu veux dire par une classe de menu ? A quoi cela servirait-il ?

  7. #27
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Ca y est ! Après plusieurs heures de travail, j'ai enfin un programme tout à fait fonctionnel qui d'après mes tests est au point

    Voici le code, et les questions à la fin : http://membres.lycos.fr/hl2connection/tennisdetable.rar (sinon ça rentrait pas dans la page ^^)


    Euh en fait c'est tout ^^. Bien évidemment si vous avez des techniques pour améliorer le code ^^.

    Ce qu'il me reste à faire c'est de le tester le prochain mois pour moi voir si ça fonctionne bien et d'ajouter quelques fonctionnalités .

    http://fftt.com/sportif/pclassement/html/cadre.htm Descendez et cliquez sur Grille et barème si vous vous sentez le courage de tester le prog ^^.

    Sinon à tous, j'avais ça pour faire un petit projet avant de me lancer dans la programmation de petit jeu 2D... Mais j'ai bien envie de faire un autre projet quand même avant mais je ne sais pas trop quoi :/ Si vous avez des idées

  8. #28
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Jette un coup d'oeil au tuto de fearyourself pour les jeux et pourquoi des classes : http://fearyourself.developpez.com/

  9. #29
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je vais voir ça merci Puis plus tard je me mettrai sur le bouquin Programmation des Jeux de M. Morrisson, je crois que c'est toi même qui le recommendais

  10. #30
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ah non, je ne conseille que des livres en anglais Ce sont les les seuls auxquels j'ai eu accès à un moment
    J'ai pas encore trouvé un bon livre expliquant la structure d'un jeu, que des livres sur des parties plus précises ou le game design ou la création d'un jeu d'un point de vue plus théorique. Faut que je continue mes recherches

  11. #31
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    http://jeux.developpez.com/livres/#L2744018309

    Ah oui je croyais que c'était toi qui en faisait la critique ^^... Sinon ce bouquin c'est une traduction d'un livre anglais ^^...

    Et pour les livres anglais ben... je pourrais les lire mais j'aurai quand même un peu de mal pour comprendre certaines phrases, mais si tu as un bouquin en anglais écrit dans un anglais assez facile, je suis preneur .

Discussions similaires

  1. Problème de lecture de fin de fichier (eof(fichier))
    Par jailbomba dans le forum Pascal
    Réponses: 2
    Dernier message: 21/02/2007, 16h50
  2. problème fichier devpak
    Par Myra67 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 30/06/2005, 22h26
  3. [résolution de noms] [réseau] problème fichier hosts
    Par Aldo dans le forum Administration
    Réponses: 2
    Dernier message: 11/04/2005, 21h38
  4. [Debutant(e)] Problème fichier texte et vue
    Par solenn dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 21/07/2004, 09h23
  5. modification de fichier EOF
    Par scorbo dans le forum C
    Réponses: 9
    Dernier message: 28/11/2003, 11h35

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