hallo, mir isses ja schon fast peinlich bei so einfachen codes nicht weiterzuwissen, aber ich komm einfach nicht drauf.
es sollte eig nur ne kleine übung sein zum thema switch, if, else if, cin und cout. ist also nichts was etwas bestimmtes darstellen soll.
soweit sogut. compiler gibt keine fehler aus. der switch und die if-bedingungen funktionieren einwandfrei ABER, wenn der code zum punkt "//training" kommt wird auf keine eingabe beim namen und der dauer gewartet. es wird alles angezeigt aber so weiterverfahren wenn die eigaben " " wären.
kA wieso. wenn ich das ganze ab "//training" vor den switch setzte funktionierts einwandfrei, nur sobald der block erst nach dem ganzen if-gedöns kommt überspringt er die eingaben einfach
bitte im code keinen sinn oder besonderen background suchen, wie gesagt, nur ne simple übung
|
C-/C++-Quelltext
|
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
|
#include <iostream>
using namespace std;
int main ()
{
unsigned int x_Position, y_Position, z_Position; //unsigned=ohne vorzeichen
int ausdauer = 100;
float gegner_dps = 2.5;
float dauer;
const int anzahl_level = 10;
char name[9];
int spieleranzahl;
char modus;
char start;
x_Position = 50;
y_Position = 50;
z_Position = 50;
startwahl:
cout << "(I)ntro, (S)pielen, (O)ptionen, (B)eenden: ";
cin >> start;
switch (start)
{
case ('i'):
case ('I'):
{
cout << "Intro wird abgespielt" << endl;
} break;
case ('s'):
case ('S'):
{
cout << "Spiel wird gestartet" << endl;
} break;
case ('o'):
case ('O'):
{
cout << "Optionen werden angezeigt" << endl;
} break;
case ('b'):
case ('B'):
{
cout << "Spiel wird beendet" << endl;
} break;
default:
{
cout << "Eingabefehler!";
goto startwahl;
}
}
spielerwahl:
cout << "Spieleranzahl:" << endl;
cin >> spieleranzahl;
if ( spieleranzahl == 0 )
{
cout << "Eingabe falsch" << endl;
goto spielerwahl;
}
else if ( spieleranzahl == 1 )
{
cout << "Willkommen im Einzelspielermodus" << endl;
}
else
moduswahl:
{
cout << "Willkommen im Multiplayermodus" << endl;
cout << "(J)Jeder gegen Jeden oder (T)Teamspiel?" << endl;
cin >> modus;
if ( (modus == 'j') || (modus == 'J') )
{
cout << "\"Jeder gegen Jeden\" gewählt" << endl;
}
else if ( (modus == 't') || (modus == 'T') )
{
cout << "\"Teamspiel\" gewählt" << endl;
}
else
{
cout << "Fehler in der Eingabe!" << endl;
goto moduswahl;
}
}
//training
cout << "Du befindest dich derzeit hier: x" << x_Position << "|y" << y_Position << "|z" << z_Position << "\n \n";
cout << "Wie heist dein Charakter? (Maximal 8 Zeichen)" << endl;
cin.get (name, 8);
trainingsdauer:
cout << name << " hat zu Beginn des Trainings " << ausdauer << " Ausdauer." << endl;
cout << "Pro Minute verlierst du 2 Ausdauer. Wie lange willst du trainieren? \n";
cin >> dauer;
//Berechnung
if ( (ausdauer - dauer * 2) < 0)
{
cout << "So lange kannst du nicht trainieren! Wähle eine kürzere Dauer!" << endl;
goto trainingsdauer;
}
else
{
ausdauer = static_cast<int> (ausdauer - dauer * 2); //anstatt ausdauer = ausdauer - dauer * 2 um float-int konflikte zu vermeiden
}
//Endbericht
cout << "Am Ende des Trainings, nach " << dauer << " Minuten, hast du noch " << ausdauer << " Ausdauer. \n \n";
//Erholung
ausdauer += 20;
cout << "Nach einer kurzen Pause hast du wieder " << ausdauer << " Ausdauer. \n \n";
return 0;
}
|
ich hoffe ich konnte den fehler gut genug beschreiben und wie gesagt, ist eigentlich was ganz einfaches, und trotzdem klappts iwie nicht so wies is