Hallo Sh4d0w.
Grundsätzlich hast du erstmal zwei Fehler in deinem Code. (ich denke mal du lernst gerade erst C++ (korrigiere mich wenn ich falsch liege
) , deswegen werde ich es ein wenig ausführlicher erklären)
Nummer 1 hat sich hier versteckt:
|
Quellcode
|
1
2
3
4
5
6
7
|
cout << "Eingabe: ";
cin >> gInput;
if(gInput == 1)
{
gameStart();
}
|
Zur Erinnerung: Die variable gInput ist ein
char. Dann wird sie jedoch mit einer Ganzzahl (nämlich 1) verglichen. Einzelne Zeichen (also chars) werden als Ganzzahl codiert (Das Zeichen '1' ist z.B. als die Zahl 49 gespeichert), weswegen dich dein Compiler nicht über diesen Fehler aufklärt, denn zwei Zahlen kann man grundsätzlich immer vergleichen. Wenn du an dieser Stelle 1 eingibst, wird also verglichen, ob 49 = 1, und das ist natürlich falsch. Du hast also zwei Optionen, diesen Fehler zu beheben:
|
Quellcode
|
1
|
if(gInput == 49)
|
oder
|
Quellcode
|
1
|
if(gInput == '1')
|
Die erste Variante ist ziemlich hässlich und trägt nun wirklich nicht zur lesbarkeit des Codes bei, deswegen würde ich stark zur 2. Methode tendieren
.
Der 2. Fehler ist hier (ein paar Codestellen weggelassen):
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
do
{
cout << "_____ Guess The Number _____" << endl;
[...]
switch(input)
{
[...]
case '3':
{
gamerun = 0;
}break;
}
}while(gamerun == 0);
|
Bei der Eingabe 3 soll das Spiel eigentlich beendet werden (also wenn gamerun auf 0 ist). In der letzten Zeile aber prüfst du bei dem while, ob gamerun = 0 ist, sodass das Spiel beendet wird, wenn es eigentlich nicht beendet werden sollte und andersherum. Du musst also überprüfen, ob gamerun = 1 (es soll ja nur wiederhohlt werden, wenn gamerun = 1 ist).
Ich hoffe das hat dir geholfen, und wie Sacaldur schon gesagt hat: Durch den Debugger hätte man so etwas schnell herrausbekommen
.
MfG
Max