Virtual FMAN forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Virtual FMAN forum

Virtual FMAN forum
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -22%
Acer Nitro QG241YM3BMIIPX – Ecran PC Gaming ...
Voir le deal
139.99 €

 

 Classes, définir une valeur avec "void"

Aller en bas 
2 participants
AuteurMessage
TNToon




Nombre de messages : 8
Date d'inscription : 22/04/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptyMer 3 Mai à 9:10

Bonjour, me revoilà, autre "projet", autre question Wink .
Voilà je voudrais créer un systeme de combat en ligne de commandes en utilisant des classes pour les types de combattant. Seulement, j'ai quelques petits problèmes expliqués en commentaires (si vous ne comprenez pas ma question ou le problème, demandez-moi) :
Code:
class Guerrier
{
      private :
              int pv;
              int degats;
              string nom;
      public :
            Guerrier(int, int, string);
            void initPV();
};
Guerrier::Guerrier(int p, int d, string n)
{
                      p=pv;
                      d=degats;
                      n=nom;
}
void Guerrier::initPV()
{
    pv=100;
}

/*... Presque le meme code avec le deuxieme type de personnage sauf que initPV() donne pv=80 ... */

int main()
{
    int choix;
    int pv,degats;
    string nom;
    cout << "Choisissez la guilde votre personnage :" << endl;
    cout << " 1] Guerrier" << endl;
    cout << " 2] Mage" << endl;
    cin >> choix;
    if (choix==1)
    {
                Guerrier player(pv,degats,nom);
    } else if (choix==2)
    {
                Mage player(pv,degats,nom);
    } else
    {
          cout << "Vous avez provoquez une erreur, relancez le programme." << endl;
          system("pause");
          return 0;   
    }
    player.initPV(); // PROBLEME : il me dit que player n'est pas déclaré...
    cout << "Vous avez " << pv << " PV." << endl; // PROBLEME : pv affiche une valeur exorbitante...
    system("pause");
    return 0;
}

Normalement, une variable affiche n'importe quelle valeur quand elle n'est pas initialisé mais là ? Avec initPV(), ça ne marche pas ?
Si quelqu'un trouve la solution à mon problème... Wink
Revenir en haut Aller en bas
TNToon




Nombre de messages : 8
Date d'inscription : 22/04/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptyMer 3 Mai à 9:47

J'ai continuer et je remarque que si je met 'int pv" en "public" (dans la classe) et en l'appelant dans le main par "player.pv", ça marche. Pas moyen de faire pareil sans tapez à chaque fois "player.pv" ?
Revenir en haut Aller en bas
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptyMer 3 Mai à 14:49

Bon je vais essaier de te répondre malgré que je ne sois pas un expert alors :

déjà on commence par le int main :

Code:

    int choix;
    int pv,degats;
    string nom;

tu ne les initialise pas donc tu as des valeurs aléatoire

Ensuite un problème étrange pour moi mais bon il ne trouve pas player car il n'est pas crée encore donc il faut que tu fasse ton player.initPV() dans les conditions de cette facon :

Code:

    if (choix==1){
        Guerrier player(pv,degats,nom);
        player.initPV();
        cout << "Vous avez " << pv << " PV." << endl;
    }
    else if (choix==2){
        Mage player(pv,degats,nom);
        player.initPV();
        cout << "Vous avez " << pv << " PV." << endl;
    }

si tu l'initialise après les conditions lors de la compilation il ne sait pas la valeur de choix donc il ne crée pas de player et il est inconnu pour lui (enfin je pense)

ce n'est pas fini Smile une erreur d'inatention :

Code:

Guerrier::Guerrier(int p, int d, string n)
{
                      p=pv;
                      d=degats;
                      n=nom;
}

tu as inversé les valeurs, ce n'est pas p=pv mais pv=p, car en faites tu fais ceci :

80 = variable_non_initialise
et il faut faire :
variable = 80

Code:

Guerrier::Guerrier(int p, int d, string n)
{
                      pv=p;
                      degats=d;
                      nom=n;
}

et puis un conseil si tu comptes rajoute des races :

ne fais pas des :
if
else if
else if

mais plutôt un switch(choix).

j'ai peut être dis des betises mais je pense que avec ceci, ca devrait marcher Smile
Revenir en haut Aller en bas
TNToon




Nombre de messages : 8
Date d'inscription : 22/04/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptyJeu 4 Mai à 7:11

Bon, en faisant un mélange des nouvelles choses que j'ai trouvé et de ce que tu m'as appris , j'obtiens un truc assez convaincant, merci ! Enfin c'est en lignes de commandes mais bon... J'suis content moi Razz . Wink
Revenir en haut Aller en bas
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptyJeu 4 Mai à 10:20

tu peux poster tes sources, on pourra te conseiller et t'aider si tu veux Smile
Revenir en haut Aller en bas
TNToon




Nombre de messages : 8
Date d'inscription : 22/04/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptyJeu 4 Mai à 13:22

En fait, mon code fait 950 lignes..... C'est un succession de if ou de switch.... En fait je crois que j'ai fait un jeu pour le cas ou le joueur est un "guerrier", un cas ou le joueur est un... etc... On peut l'éviter ?
Revenir en haut Aller en bas
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptyJeu 4 Mai à 13:50

et bien compresse tes fichiers source et up les sur un ftp (ton perso par exemple) ca sera plus facile pour t aider Smile
Revenir en haut Aller en bas
TNToon




Nombre de messages : 8
Date d'inscription : 22/04/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptySam 6 Mai à 5:24

Oui je vais le faire, mais là je refonde mon systeme de combat, je vous tiens au courant Razz .
Revenir en haut Aller en bas
TNToon




Nombre de messages : 8
Date d'inscription : 22/04/2006

Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" EmptySam 6 Mai à 11:02

Bien voilà, j'ai fini. Le fichier source est très peu commenté mais je pense ne plsu avoir besoin d'aide. Il reste peu être quelques bugs mais je viens de finir sans trop trop tester Embarassed .

Source : http://jujucorb.club.fr/main.cpp

Exe : http://jujucorb.club.fr/Projet1.exe
Revenir en haut Aller en bas
Contenu sponsorisé





Classes, définir une valeur avec "void" Empty
MessageSujet: Re: Classes, définir une valeur avec "void"   Classes, définir une valeur avec "void" Empty

Revenir en haut Aller en bas
 
Classes, définir une valeur avec "void"
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Les classes
» Mes modifications de "Promenade d'un personnage "
» Une zone "code"
» composition d'une map avec la SDL

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Virtual FMAN forum :: Tutorial C++ :: Debutants en C++-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser