Programme de generation aleatoire de noms pour jdr fantastique

Soyez le premier à donner votre avis sur cette source.

Vue 5 505 fois - Téléchargée 155 fois

Description

Voila mon deuxieme essai de programmation en C++. Le code est tres loin d etre parfait. C'est d ailleur pour cela que je le met ici. pour avoir vos suggestions sur ce que j aurais du faire ou ne pas faire.
Pour résumer ce code permet de générer des noms a partir de trois groupe de syllabe contenu dans un fichier texte.

Source / Exemple :


#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

//variables globales :
int n[3] = {0,0,0};

int Compte ()
{
    //determiner le nombre d'enregistrement pour chaque groupe de syllabe contenu dans le fichier texte
    int num;
    char name[5];

    ifstream name1 ("name1.txt");

    name1>>num>>name;
    while(!name1.eof())
    {
          if (num<100)
          {
                ::n[0] = ::n[0]+1;
                name1>>num>>name;
          }
          else if ((num>100) && (num<200))
               {
                    ::n[1] = ::n[1]+1;
                    name1>>num>>name;
               }
               else
               {
                    ::n[2] = ::n[2]+1;
                    name1>>num>>name;
               }

    }
    name1.close();
}

int Aleatoire (int x)
{
    // Renvoi un numéro de ligne aleatoire en fonction du groupe de syllabes
    int res;
    res = rand()%x+1;
    return res;
}

int main()
{
      int num;
      char name[5];
      int b;
      char c;
      int i;

      srand(time(NULL));//initialisation de seed

      Compte();

      cout<<"Welcome to Fantasy Name Generator\n";
      cout<<"Version 1.0 - Made by DRAGOON\n";
      cout<<"----------------------------------------\n";
      cout<<"\nyou actually have "<<((::n[0])*(::n[1])*(::n[2]))<<" name possibility";
      cout<<"\nhit <Enter> key to generate a name";
      getch();

      do
      {
                      c = 'N';

                     ifstream name1 ("name1.txt");
                     name1>>num>>name;
                     cout<<"\nResult : ";
                     //Boucle qui met bout a bout les trois syllabes en fonction des resultats aleatoire
                     for (i=0;i<=2;i++)
                     {
                         b = ((Aleatoire(n[i]))+(i*100));
                         while(num!=b)
                         {
                                  name1>>num>>name;
                         }
                         cout<<name;
                     }
                     name1.close();
                     cout<<"\n\nwould you like to generate another name ? (O/N) : ";
                     cin>>c;
      }
      while ((c=='o')||(c=='O'));

}

Conclusion :


Vous trouverez le code et le fichier texte dans le zip.
J'attend maintenant vos suggestions :
Notamment comment aurais je pus faire pour eviter la variable globale (sa doit etre simple mais j ai pas trouvé... et puis je suis un peu faignant aussi :p).
Ou est ce que mon algo tiens la route? aurais je pus faire plus simple ?

Merci pour toutes vos remarques a venir meme les plus brutales :)
Bien a vous !!!

-Dragoon-

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

lol, très amusant :)
et les noms sont tout à fait crédibles, je les vois bien dans le prochain Star Wars ;) Je vais en toucher un mot à mes potes qui jouent à T4C ou à Ultima Online, ça pourrait résoudre des problèmes de carrence en imagination :)

désolé, j'ai pas pris le temps de regarder ton code de plus prêt. Juste, le truc de mettre les syllabes dans un fichier à part, c'est uen bonne idée (plutôt qu'un tableau dans ton code, ça aurait été lourd)

note: à la compil', j'ai dû mettre deux lignes du conio.h en commentaire. C'est normal ? (sais plus lesquelles, des déclarations "extern int" (une dll ?)

signé: Afiralgrin ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.