Kleiner Fehler in meinem ersten Programm



  • Hallo liebe Community,
    ich bin blutiger c++ Anfänger und wollte jetzt ein kleines Programm schreiben

    #include <iostream>
    using namespace std;
    int main(){
        const int ANGRIFF = 10; //Konstanten für den Angriff
        const int HEILUNG = 5;  //Konstanten für die Heilung
        int lebenspunkte = 50;  //Lebenspunkte am Anfang: 50 P
        string name;
        int eingabe;
        cout<<"Wie heissen Sie?\n";
        cin>>name;
        cout<<"Sie heissen "<<name<<endl;
        cout<<"Sie haben "<<lebenspunkte<<" Lebenspunkte\n";
    
        while(lebenspunkte>0)
        {
        cout<<"Wollen sie angreifen (1) oder sich heilen (2)?\n";
        cin>>eingabe;
    
                     if(eingabe == 1)
                     {
                                cout<<"Sie wollen angreifen!"<<endl;
                                int lebenspunkte2=lebenspunkte-ANGRIFF; //Es werden Lebenspunkte abgezogen in in einer neuen Variable gespeichert
                                int lebenspunkte=lebenspunkte2;         //Diese neue Variable wird mit der alten Variable gleichgesetzt
                                cout<<"Lebenspunkte:"<<lebenspunkte<<endl;
                                }
                     else
                     {
                                cout<<"Sie wollen sich heilen!"<<endl;
                                int lebenspunkte2=lebenspunkte+HEILUNG;
                                int lebenspunkte=lebenspunkte2;
                                cout<<"Lebenspunkte:"<<lebenspunkte<<endl;
                                }      
        }        
        system("PAUSE");
    }
    

    Mir kommt es so vor als ob die veränderte Variable "lebenspunkte" nur für die einzelne if-Schleife gültig ist, dass wenn jedoch eine neue wieder anfängt, das Programm den Wert von oben wieder nimmt

    int lebenspunkte = 50;  //Lebenspunkte am Anfang: 50 P
    

    Nun meine Frage:
    Wie kann man eine Variable so neu deklarieren, dass sie auch außerdem der if-Schleifen oder bei einer anderen if-Schleife gültig ist.

    Vielen Dank im Voraus.
    Novel



  • Global? sprich außerhalb dein schleife? Am besten gleich nach deiner ertsen definition von Lebenspunkte

    Gruß Tobi.



  • Könntest du den Quellcode hinschreiben?
    Weil wenn ich es versuche, dann sagt mein Compiler
    redeclaration of `int lebenspunkte'

    danke
    Novel



  • Die erste definition der variable lebenspunkte in äusseren block wird in der if- Anweisung ungültig, weil du eine neue variable lebenspunkte definierst.
    Die ist jezt gültig, nach verlassen der if - Anweisung ist die andere wider gültig.



  • T0bi schrieb:

    Global? sprich außerhalb dein schleife?

    Außerhalb seiner Schleife wäre noch lange nicht global sondern immer noch Block-Scope.

    ➡ Gültigkeit von Bezeichnern

    greetz, Swordfish



  • Sorry,
    könnte mir nicht einfach jemand bitte die Lösung schreiben, dann würde es mir wahrscheinlich leichter fallen zu verstehen was ihr meint.

    Novel



  • naja immer hin global genug das es geht 🙂



  • #include <iostream> 
    using namespace std; 
    int main(){ 
        const int ANGRIFF = 10; //Konstanten für den Angriff 
        const int HEILUNG = 5;  //Konstanten für die Heilung 
        int lebenspunkte = 50;  //Lebenspunkte am Anfang: 50 P 
        string name; 
        int eingabe; 
        cout<<"Wie heissen Sie?\n"; 
        cin>>name; 
        cout<<"Sie heissen "<<name<<endl; 
        cout<<"Sie haben "<<lebenspunkte<<" Lebenspunkte\n"; 
    
        while(lebenspunkte>0) 
        { 
        cout<<"Wollen sie angreifen (1) oder sich heilen (2)?\n"; 
        cin>>eingabe; 
    
                     if(eingabe == 1) 
                     { 
                                cout<<"Sie wollen angreifen!"<<endl; 
                                lebenspunkte = lebenspunkte - ANGRIFF; //Es werden 
                                // oder lebenspunkt -= ANGRIF;
    Lebenspunkte abgezogen in in einer neuen Variable gespeichert 
                                int lebenspunkte=lebenspunkte2;         //Diese neue Variable wird mit der alten Variable gleichgesetzt 
                                cout<<"Lebenspunkte:"<<lebenspunkte<<endl; 
                                } 
                     else 
                     { 
                                cout<<"Sie wollen sich heilen!"<<endl; 
                                lebenspunkte = lebenspunkte + HEILUNG; 
                                // oder lebenspunkte += HEILUNG;
                                cout<<"Lebenspunkte:"<<lebenspunkte<<endl; 
                                }       
        }         
        system("PAUSE"); 
    }
    


  • Ausschnitt aus deinem Quellcode.

    if(eingabe == 1)
    {
    	cout<<"Sie wollen angreifen!"<<endl;
    
    	lebenspunkte = lebenspunkte-ANGRIFF;
    
    	cout<<"Lebenspunkte:"<<lebenspunkte<<endl;
    }
    else if(eingabe == 2)
    {
    	cout<<"Sie wollen sich heilen!"<<endl;
    
    	lebenspunkte = lebenspunkte+HEILUNG;
    
    	cout<<"Lebenspunkte:"<<lebenspunkte<<endl;
    }
    


  • T0bi schrieb:

    naja immer hin global genug das es geht 🙂

    *lol* tja: global - globaler - am globalsten 😃

    greetz, Swordfish



  • cout<<"Danke für eure schnelle Hilfe.";
    

    Novel


Anmelden zum Antworten