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.
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