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 de programmation en console.


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut Problème de programmation en console.
    Bonjour a vous, je suis débutant en C++ et j'ai la un petit problème que je ne comprend. J'ai créer un minimini RPG de débutant, jusque la, rien de spécial surtout que mon EDI ne m'affiche pas de message d'erreur, et que ma console se lance rapidement. Plutot que de vous expliquer exactement le problème, je vais vous les montrer. Voici déjà 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
    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
    #include <iostream>
    #include "Personnage.h" //Ne pas oublier
     
    using namespace std;
     
     
     
    int main()
    {
        Personnage nullos, goliath("longue épée", 20, "Goliath"), mael("Sulfateuse", 90, "Mael");
        //Création de 2 objets de type Personnage : david et goliath
     
        cout << "vague 1" << endl << endl;
        goliath.attaquer(nullos); //goliath attaque david
        nullos.boirePotionDeVie(20); //david récupère 20 de vie en buvant une potion
        goliath.attaquer(nullos); //goliath réattaque david
        nullos.attaquer(goliath); //david contre-attaque... c'est assez clair non ?
        goliath.changerArme("Double hache tranchante vénéneuse de la mort", 60);
        nullos.boirePotionDeDefense(); //david augmente sa defense.
        goliath.attaquer(nullos);
     
        cout << endl ;
        nullos.afficherEtat();
        cout << endl << endl;
        goliath.afficherEtat();
        cout << endl << endl;
        mael.afficherEtat();
        cout << endl << endl;
     
        cout << endl << endl << endl << endl << "vague 2" << endl << endl;
        mael.boirePotionDeDefense();
        mael.boirePotionDeDefense();
        mael.boirePotionDeDefense();
        mael.boirePotionDeDefense();
        mael.boirePotionDeDefense();
        mael.boirePotionDeDefense();
        mael.boirePotionDeDefense();
        mael.boirePotionDeDefense();
        nullos.changerArme("mini gun", 50);
        nullos.attaquer(mael);
        goliath.boirePotionDeDefense();
        mael.attaquer(nullos);
        mael.attaquer(goliath);
        goliath.lanceSort(mael);
        goliath.lanceSort(mael);
     
        cout << endl;
        nullos.afficherEtat();
        cout << endl << endl;
        goliath.afficherEtat();
        cout << endl << endl;
        mael.afficherEtat();
        cout << endl << endl;
     
        cout << "Vague 3" << endl;
        cout << "Voulez vous 'attaquer' ou vous 'restaurer' ?" << endl;
        string choixAction;
        cin >> choixAction;
        if (choixAction == "attaquer")
        {
            cout << "choisissez un attaquant, goliath, nullos ou mael ?" << endl ;
            string choixJoueur;
            cin >> choixJoueur;
            cout << "choisissez une cible parmis les trois personnage, que vous n'ayez pas choisis en attaquant !" << endl;
            string cible;
            cin >> cible;
            cout << "vous voulez 'attaquer' ou 'lancerunsort' ?" << endl;
            string choixAttaque;
            cin >> choixAttaque;
            if (choixAttaque == "attaquer", choixJoueur == "goliath", cible == "nullos")
            {
                goliath.attaquer(nullos);
            }
            else if(choixAttaque == "attaquer", choixJoueur == "goliath", cible == "mael")
            {
                goliath.attaquer(mael);
            }
            else if(choixAttaque == "attaquer", choixJoueur == "nullos", cible == "goliath")
            {
                nullos.attaquer(goliath);
            }
            else if (choixAttaque == "attaquer", choixJoueur == "nullos", cible == "mael")
            {
                nullos.attaquer(mael);
            }
             else if(choixAttaque == "attaquer", choixJoueur == "mael", cible == "goliath")
            {
                mael.attaquer(goliath);
            }
            else if (choixAttaque == "attaquer", choixJoueur == "mael", cible == "nullos")
            {
                mael.attaquer(nullos);
            }
            else if (choixAttaque == "lancerunsort", choixJoueur == "goliath", cible == "nullos")
            {
                goliath.lanceSort(nullos);
            }
            else if(choixAttaque == "lancerunsort", choixJoueur == "goliath", cible == "mael")
            {
                goliath.lanceSort(mael);
            }
            else if(choixAttaque == "lancerunsort", choixJoueur == "nullos", cible == "goliath")
            {
                nullos.lanceSort(goliath);
            }
            else if (choixAttaque == "lancerunsort", choixJoueur == "nullos", cible == "mael")
            {
                nullos.lanceSort(mael);
            }
             else if(choixAttaque == "lancerunsort", choixJoueur == "mael", cible == "goliath")
            {
                mael.lanceSort(goliath);
            }
            else
            {
                mael.lanceSort(nullos);
            }
     
        }
        else
        {
            cout << "Vous voulez restaurer votre 'defense' ou votre 'vie' ?" << endl;
            string choixPotion;
            cin >> choixPotion;
            cout << "Choisissez a qui donner la potion : goliath, nullos, mael" << endl;
            string choixJoueur;
            cin >> choixJoueur;
            if (choixPotion == "defense", choixJoueur == "goliath")
            {
               goliath.boirePotionDeDefense();
            }
            else if (choixPotion == "defense", choixJoueur == "mael")
            {
                mael.boirePotionDeDefense();
            }
            else if (choixPotion == "defense", choixJoueur == "nullos")
            {
                nullos.boirePotionDeDefense();
            }
            else if (choixPotion == "vie", choixJoueur == "goliath")
            {
                cout << "Quel Quantité de potion donner ? donner un nombre entre 0 et 100" << endl;
                int quantiteDePotion;
                cin >> quantiteDePotion;
                goliath.boirePotionDeVie(quantiteDePotion);
            }
            else if (choixPotion == "vie", choixJoueur == "mael")
            {
                cout << "Quel Quantité de potion donner ? donner un nombre entre 0 et 100" << endl;
                int quantiteDePotion;
                cin >> quantiteDePotion;
                mael.boirePotionDeVie(quantiteDePotion);
            }
            else
            {
                cout << "Quel Quantité de potion donner ? donner un nombre entre 0 et 100" << endl;
                int quantiteDePotion;
                cin >> quantiteDePotion;
                nullos.boirePotionDeVie(quantiteDePotion);
            }
     
        }
     
        cout << endl;
        nullos.afficherEtat();
        cout << endl << endl;
        goliath.afficherEtat();
        cout << endl << endl;
        mael.afficherEtat();
        cout << endl << endl;
     
        return 0;
    }
    Et voici le petit problème qui survient dans la console (pièce jointe)
    En effet l'Utilisateur indique que "mael" "lance un sort" (=lancerunsort) a "goliath" or l'effet produit est que nullos attaque goliath.

    Je ne pense pas que le problème viennes de la mais voici les autre fichier lié au projet :

    Arme.cpp:
    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
    #include "Arme.h"
    #include <string>
    #include <iostream>
     
    using namespace std;
     
    Arme::Arme() : m_nom("épée rouillé"), m_degats(10)
    {
     
    }
     
    Arme::Arme(string nom, int degats) : m_nom(nom), m_degats(degats)
    {
     
    }
     
    void Arme::changer(string nom, int degats)
    {
        m_nom = nom;
        m_degats = degats;
    }
     
    void Arme::afficher() const
    {
        cout << "Arme : " << m_nom << "( degats : " << m_degats << " )" ;
    }
    Arme.h :
    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
    #ifndef ARME_H_INCLUDED
    #define ARME_H_INCLUDED
     
    #include <iostream>
    #include <string>
     
    class Arme
    {
    public:
        Arme();
        Arme(std::string nom, int degats);
        void changer(std::string nom, int degats);
        void afficher() const;
        int getDegats() const;
     
    private:
        std::string m_nom;
        int m_degats;
    };
     
    #endif // ARME_H_INCLUDED
    Personnage.cpp :
    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
    #include "Personnage.h"
    #include <string>
     
    using namespace std;
     
    int Personnage::recevoirDegats(int nbDegats, int defense)
    {
        m_vie = m_vie - nbDegats + defense;
        //On enlève le nombre de dégâts reçus à la vie du personnage
     
        if (m_vie < 0) //Pour éviter d'avoir une vie négative
        {
            m_vie = 0; //On met la vie à 0 (cela veut dire mort)
        }
     
    }
     
    void Personnage::attaquer(Personnage &cible)
    {
        cible.recevoirDegats(m_Arme.getDegats(), cible.afficherDefense());
        int arme = m_Arme.getDegats();
        int defenseCible = cible.afficherDefense();
        int degats = arme - defenseCible;
        if (degats < 0 )
        {
            degats = 0;
        }
        cout << m_nomP << " attaque " << cible.afficherNom() << " qui perd " << degats << " points de vie." << endl ;
     
    }
     
    void Personnage::boirePotionDeDefense()
    {
        m_defense +=5;
        cout << m_nomP << " augmente sa defense de 5 points" << endl;
     
    }
     
    void Personnage::boirePotionDeVie(int quantitePotion)
    {
        m_vie += quantitePotion;
     
        if (m_vie > 100) //Interdiction de dépasser 100 de vie
        {
            m_vie = 100;
        }
        cout << m_nomP << " recupere " << quantitePotion << " points de vie" << endl;
    }
     
    void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
    {
        m_Arme.changer(nomNouvelleArme, degatsNouvelleArme);
        cout << m_nomP << " a une nouvelle arme qui s'appelle '" << nomNouvelleArme << "' et qui provoque "
        << degatsNouvelleArme << " points de dégats" << endl;
    }
     
    bool Personnage::estVivant() const
    {
        if (m_vie > 0) // Plus de 0 de vie ?
        {
            return true; //VRAI, il est vivant !
        }
        else
        {
            return false; //FAUX, il n'est plus vivant !
        }
    }
     
    Personnage::Personnage()
    {
        m_nomP = "Nullos";
        m_vie = 100;
        m_mana = 100;
        m_defense = 0;
    }
     
    Personnage::Personnage (string nomArme, int degatsArme, string nomP) : m_vie(100), m_mana(100), m_defense(0), m_Arme(nomArme, degatsArme), m_nomP(nomP)
    {
     
    }
     
    Personnage::Personnage(int vie, int mana, string nomP) : m_defense(0), m_vie(vie), m_mana(mana), m_nomP(nomP)
    {
     
    }
     
    int Arme::getDegats() const
    {
        return m_degats;
    }
     
    int Personnage::afficherDefense() const
    {
        return m_defense;
    }
     
    int Personnage::afficherVie() const
    {
        return m_vie;
    }
     
    string Personnage::afficherNom() const
    {
        return m_nomP;
    }
     
    void Personnage::afficherEtat() const
    {
        cout << "Nom : " << m_nomP << endl;
        cout << "Vie : " << m_vie << endl;
        cout << "Mana : " << m_mana << endl;
        cout << "Defense : " << m_defense << endl;
        m_Arme.afficher();
    }
     
    void Personnage::lanceSort(Personnage &cible)
    {
        int manaDisponible = m_mana;
        int degatsMagiques = 0.75 * manaDisponible;
        m_mana -= 25;
        int defenseCible = cible.afficherDefense();
        int degats = degatsMagiques - defenseCible;
        if(degats < 0 )
        {
            degats = 0;
        }
        cible.recevoirDegats(degatsMagiques, cible.afficherDefense());
        cout << m_nomP << " lance un sort a " << cible.afficherNom() << " qui perd " << degats << " points de vie" << endl ;
    }
    et enfin Personnage.h :
    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
    #ifndef PERSONNAGE_H_INCLUDED
    #define PERSONNAGE_H_INCLUDED
     
    #include <string>
    #include <iostream>
    #include "Arme.h"
     
    class Personnage
    {
        public:
        Personnage(); //Constructeu$
        Personnage (std::string nomArme, int degatsArme, std::string nomP);
        Personnage (int vie, int mana, std::string nomP);
        int recevoirDegats(int nbDegats, int defense);
        void attaquer(Personnage &cible);
        void boirePotionDeDefense();
        void boirePotionDeVie(int quantitePotion);
        void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
        bool estVivant() const;
        void afficherEtat() const;
        int afficherDefense() const;
        int afficherVie() const;
        std::string afficherNom() const;
        void lanceSort(Personnage &cible);
     
        private:
     
        int m_vie;
        int m_mana;
        int m_defense;
        std::string m_nomP;
        Arme m_Arme;
    };
     
    #endif // PERSONNAGE_H_INCLUDED
    Merci d'avance de vos réponses
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/11/2006, 17h07
  2. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 01h04
  3. Faire un programme sans console ni fenêtre
    Par Pierre.g dans le forum Windows
    Réponses: 10
    Dernier message: 28/08/2006, 12h57
  4. problème finalisation programme
    Par depelek dans le forum Installation, Déploiement et Sécurité
    Réponses: 9
    Dernier message: 02/05/2006, 16h17
  5. Réponses: 1
    Dernier message: 26/09/2005, 19h29

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