Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

21

26.04.2009, 00:06

Zitat von »"Duji-Buji"«

Schnon wieder das Problem, dass du ein Integer mit einerm String vergleichst:

C-/C++-Quelltext

1
2
3
        int Eingabe;
        cin >> Eingabe;
        if ((Eingabe == 'Ja') || (Eingabe == 'ja') || (Eingabe == 'JA')) 

Ich glaub zwar nicht, dass das das Problem ist, aber richtig ist es nicht. Außerdem musst du Strings meines wissens nicht in ' ... ' machen sondern in " ... ". ' kann immer nur Zeichen benutzten.
MfG
PS: Mach mal die ganzen unnötigen Klammern weg. Denn die benötigst du da nicht und machen das ganze nur unübersichtlicher.


Die ((...) || (...) || (...)) Klammern sind in diesem Fall von nöten...
|| <--- bedeutet ODER. Dies ist alles richtig und von nöten.
der ' <--- Lattenzaun muss meines erachten auch dort hin! ;-) Soweit wie ich es gelernt habe!

Mit "Gänsefüße" haut mir der Compiler auf die Finger und sagt -->äätsch falsch! *Zonk*

Ein String ist meines erachtens sehr knappe Unterwäsche einer Frau. Oder verstehe ich dies Falsch mit diesem Satz: Außerdem musst du Strings meines wissens nicht in ' ... ' machen .. ???

(Link)


’ Typografisch korrekter Apostroph
' Ersatzzeichen des Apostrophs genannt Lattenzaun
ʼ Ejektiv-Zeichen (IPA), Stimmloser glottaler Plosiv
ˈ Betonungszeichen (IPA)
´ Akut-Akzent
` Gravis-Akzent
‘ Typografisch korrektes einfaches schließendes Anführungszeichen
′ Prim, Fuß
ʻ Modifier Letter Turned Comma (z. B. für ʻOkina)
Mfg. Michael Herker :D

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

22

26.04.2009, 00:13

|| bedeutet nicht "UND" sonder "ODER". UND wäre &&

Nur was bei deiner Abfrage eben etwas seltsam ist: Wie kann eine Integervariable den Wert 'Ja' annehmen?
Ein Integer ist eine Zahl. Leetspeak wäre vllt. eine Möglichkeit, aber im Normalfall geht das nicht ;)
Du solltest das also schon korrigieren.

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

23

26.04.2009, 00:16

Ah genau, das ist mein Fehler!!

danke für die || ! Ist Oder ich habe mich vertippt! Und direkt an das falsche gedacht!

ich korrigiere sofort! ;-)


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
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
174
175
176
177
178
#include <iostream> 

using namespace std; 


int main () 

{ 


    // Menüvariablen 

    char menueAuswahl; 


    // Menü 

    cout << "Möchten Sie einen (K)ampf führen, oder das Tunier (v)erlassen und wegrennen?" << endl; 
    cin >> menueAuswahl; 

    switch (menueAuswahl) 
        {
            case('v'): 
              case('V'): 
            {  
                cout << "Tunier verlassen" << endl; 
            } break;

                {
                    case ('k'):
                        case ('K'):
                    { 
                        // Variablen 



float Angriffsschadengegner; 
float Angriffsschadendu; 
int Level; 
float Lebensenergievoll; 
float duLebensenergie; 
int gegnerangriff; 
int duangriff; 
int Gegnerlevel; 
float Gegnerlebensenergie; 
float gegnergesamtschaden; 
float dugesamtschaden; 
float gegnerLebensenergie; 
float duRegeneration; 
float gegnerRegeneration; 


//Const - Variablen benennen 


const float Lebensenergielv1 = 35.57231f; 
const float Angriffsschadenprolevel = 2.87831f; 
const float Regenerationszahl = 0.233f; 


// Lebensenergierechnung 


Level = 1; 
cout << "Welches Level bist du: ?" << endl; 
cin >> Level; 


Lebensenergievoll = Level * Lebensenergielv1; 

cout << "Du besitzt insgesamt: " << Lebensenergievoll << " Lebenspunkte" << endl; 

Gegnerlevel = 1; 
cout << "welches Level ist dein Gegner: ?" << endl; 
cin >> Gegnerlevel; 

Gegnerlebensenergie = Gegnerlevel * Lebensenergielv1; 
cout << "Der Gegner besitzt " << Gegnerlebensenergie << " Lebenspunkte" << endl; 



// Angriffsrechnung 


// Angriffsschleifenvariable

int Rundenanzahl = 2;

// Angriffsschleife

for (int i=0 ; i<Rundenanzahl ; i++)
    {
    gegnerangriff = 1; 
    cout << "Wie oft greift der Gegner an: ?" << endl; 
    cin >> gegnerangriff; 


    duangriff = 1; 
    cout << "Wie oft greifst du an: ?" << endl; 
    cin >> duangriff; 

    Angriffsschadengegner = Gegnerlevel * Angriffsschadenprolevel; 

    Angriffsschadendu = Level * Angriffsschadenprolevel; 

    gegnergesamtschaden = 0; 
    gegnergesamtschaden = gegnerangriff * Angriffsschadengegner; 

    dugesamtschaden = 0; 
    dugesamtschaden = duangriff * Angriffsschadendu; 
    
    cout << "Du machst pro Angriff... " << Angriffsschadendu <<" Schaden. du greifst " << duangriff << " mal an" << endl; 
    cout << "Du machst bei " << duangriff << " Angriff(en), insgesamt " << dugesamtschaden << " Schaden" << endl; 
    
    cout << "Dein Gegner macht pro Angriff... " << Angriffsschadengegner << " Schaden. Er greift " << gegnerangriff << " mal an." << endl; 
    cout << "Dein Gegner macht bei " << gegnerangriff << " Angriff(en), insgesamt " << gegnergesamtschaden << " Schaden" << endl; 
    
    
    // Regeneration 

    
    duRegeneration = 1; 
    // pro Angriff 

    duRegeneration = gegnerangriff * Level * Regenerationszahl; 
    
    gegnerRegeneration = 1; 
    // pro Angriff 

    gegnerRegeneration = duangriff * Gegnerlevel * Regenerationszahl; 


    duLebensenergie = (Lebensenergievoll - gegnergesamtschaden) + duRegeneration; 
    gegnerLebensenergie = (Gegnerlebensenergie - dugesamtschaden) + gegnerRegeneration; 


    cout << "Dein Regenerationswert ist " << duRegeneration << endl; 
    cout <<"Du besitzt jetzt nach " << gegnerangriff << " Angriff(en), noch " << duLebensenergie << " Lebenspunkte" << endl; 


    cout << "Dein Gegnersregenerationswert ist " << gegnerRegeneration << endl; 
    cout << "Dein Gegner besitzt jetzt nach " << duangriff << " Angriff(en), noch " << gegnerLebensenergie << " Lebenspunkte" << endl; 



    // Spieler oder Gegener - Tot 


    if (duLebensenergie <= 0) 

        { 
        Rundenanzahl -= 1;
        cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
        } 

    else if (gegnerLebensenergie <= 0) 
        { 
        Rundenanzahl -= 1;
        cout << "\n \n Du hast deinen Feind getoetet" << endl; 

        } 

    else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0))

        {  
        cout << "\n \n beide Spieler leben noch \n \n" << endl; 
        cout << "Möchten Sie erneut angreifen? / Ja oder Nein" << endl;
        char Eingabe;
        cin >> Eingabe;
        if ((Eingabe == 'Ja') || (Eingabe == 'ja') || (Eingabe == 'JA'))
            {
                Rundenanzahl += 1;
            }
        else if  ((Eingabe == 'Nein') || (Eingabe == 'nein') || (Eingabe == 'NEIN'))
        {
            Rundenanzahl -= 1;
        }
        }
    }// <--- For Schleife beendet

}
} 
}
// Menü verlassen 


int stop;
cout << "Funktion beendet. Bitte starten sie das Programm neu" << endl;
cin >> stop;

return 0; 
}


Nun habe ich aus

C-/C++-Quelltext

1
2
3
int Eingabe;
-->
char Eingabe;

geschrieben.
char - Datentyp dient zur Speicherung von Zeichen und Buchstaben.
Nun sollte es klappen, tut es leider dennoch nicht...
Er Schließt mir das Fenster ohne das ich nocheinmal die ganze schleife wiederholen kann.

Ich denke es könnte vielleicht daran liegen, das die int Rundenanzahl vielleicht "zu weit weg" ist. Ich meine damit, das es auf der for-Schleife heraus genommen ist, anders kann ich es aber nicht schreiben oder kann ich die int Rundenanzahl in die for-Schleife hineinschreiben?
Kann es daran liegen das diese beiden keine "Verbindung" habe?

Aber hierrauf reagiert die for-Schleife

C-/C++-Quelltext

1
2
3
4
5
6
    if (duLebensenergie <= 0) 

        { 
        Rundenanzahl -= 1;
        cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
        }

Wieso nicht hierrauf?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0))

        {  
        cout << "\n \n beide Spieler leben noch \n \n" << endl; 
        cout << "Möchten Sie erneut angreifen? / Ja oder Nein" << endl;
        char Eingabe;
        cin >> Eingabe;
        if ((Eingabe == 'Ja') || (Eingabe == 'ja') || (Eingabe == 'JA'))
            {
                Rundenanzahl += 1;
            }
        else if  ((Eingabe == 'Nein') || (Eingabe == 'nein') || (Eingabe == 'NEIN'))
        {
            Rundenanzahl -= 1;
        }
}

?
Mfg. Michael Herker :D

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

24

26.04.2009, 01:08

Es Funktioniert!!

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
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
174
175
176
177
178
179
#include <iostream> 

using namespace std; 


int main () 

{ 


    // Menüvariablen 

    char menueAuswahl; 


    // Menü 

    cout << "Möchten Sie einen (K)ampf führen, oder das Tunier (v)erlassen und wegrennen?" << endl; 
    cin >> menueAuswahl; 

    switch (menueAuswahl) 
        {
            case('v'): 
              case('V'): 
            {  
                cout << "Tunier verlassen" << endl; 
            } break;

                {
                    case ('k'):
                        case ('K'):
                    { 
                        // Variablen 



float Angriffsschadengegner; 
float Angriffsschadendu; 
int Level; 
float Lebensenergievoll; 
float duLebensenergie; 
int gegnerangriff; 
int duangriff; 
int Gegnerlevel; 
float Gegnerlebensenergie; 
float gegnergesamtschaden; 
float dugesamtschaden; 
float gegnerLebensenergie; 
float duRegeneration; 
float gegnerRegeneration; 


//Const - Variablen benennen 


const float Lebensenergielv1 = 35.57231f; 
const float Angriffsschadenprolevel = 2.87831f; 
const float Regenerationszahl = 0.233f; 


// Lebensenergierechnung 


Level = 1; 
cout << "Welches Level bist du: ?" << endl; 
cin >> Level; 


Lebensenergievoll = Level * Lebensenergielv1; 

cout << "Du besitzt insgesamt: " << Lebensenergievoll << " Lebenspunkte" << endl; 

Gegnerlevel = 1; 
cout << "welches Level ist dein Gegner: ?" << endl; 
cin >> Gegnerlevel; 

Gegnerlebensenergie = Gegnerlevel * Lebensenergielv1; 
cout << "Der Gegner besitzt " << Gegnerlebensenergie << " Lebenspunkte" << endl; 



// Angriffsrechnung 


// Angriffsschleifenvariable

int Rundenanzahl = 1;

// Angriffsschleife

for (int i=0 ; i<Rundenanzahl ; i++)
    {
    gegnerangriff = 1; 
    cout << "Wie oft greift der Gegner an: ?" << endl; 
    cin >> gegnerangriff; 


    duangriff = 1; 
    cout << "Wie oft greifst du an: ?" << endl; 
    cin >> duangriff; 

    Angriffsschadengegner = Gegnerlevel * Angriffsschadenprolevel; 

    Angriffsschadendu = Level * Angriffsschadenprolevel; 

    gegnergesamtschaden = 0; 
    gegnergesamtschaden = gegnerangriff * Angriffsschadengegner; 

    dugesamtschaden = 0; 
    dugesamtschaden = duangriff * Angriffsschadendu; 
    
    cout << "Du machst pro Angriff... " << Angriffsschadendu <<" Schaden. du greifst " << duangriff << " mal an" << endl; 
    cout << "Du machst bei " << duangriff << " Angriff(en), insgesamt " << dugesamtschaden << " Schaden" << endl; 
    
    cout << "Dein Gegner macht pro Angriff... " << Angriffsschadengegner << " Schaden. Er greift " << gegnerangriff << " mal an." << endl; 
    cout << "Dein Gegner macht bei " << gegnerangriff << " Angriff(en), insgesamt " << gegnergesamtschaden << " Schaden" << endl; 
    
    
    // Regeneration 

    
    duRegeneration = 1; 
    // pro Angriff 

    duRegeneration = gegnerangriff * Level * Regenerationszahl; 
    
    gegnerRegeneration = 1; 
    // pro Angriff 

    gegnerRegeneration = duangriff * Gegnerlevel * Regenerationszahl; 


    duLebensenergie = (Lebensenergievoll - gegnergesamtschaden) + duRegeneration; 
    gegnerLebensenergie = (Gegnerlebensenergie - dugesamtschaden) + gegnerRegeneration; 


    cout << "Dein Regenerationswert ist " << duRegeneration << endl; 
    cout <<"Du besitzt jetzt nach " << gegnerangriff << " Angriff(en), noch " << duLebensenergie << " Lebenspunkte" << endl; 


    cout << "Dein Gegnersregenerationswert ist " << gegnerRegeneration << endl; 
    cout << "Dein Gegner besitzt jetzt nach " << duangriff << " Angriff(en), noch " << gegnerLebensenergie << " Lebenspunkte" << endl; 



    // Spieler oder Gegener - Tot 


    if (duLebensenergie <= 0) 

        { 
        Rundenanzahl -= 1;
        cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
        } 

    else if (gegnerLebensenergie <= 0) 
        { 
        Rundenanzahl -= 1;
        cout << "\n \n Du hast deinen Feind getoetet" << endl; 

        } 

    else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0))

        {  
        cout << "\n \n beide Spieler leben noch \n \n" << endl; 
        cout << "Möchten Sie erneut angreifen? / (J)a oder (N)ein" << endl;
        char Eingabe;
        cin >> Eingabe;
        if ((Eingabe == 'J') || (Eingabe == 'j'))
            {
                Rundenanzahl += 1;
            }
        else if  ((Eingabe == 'N') || (Eingabe == 'n'))
        {
            Rundenanzahl -= 1;
        }
        }
    }// <--- For Schleife beendet

}
} 

}
// Menü verlassen 


int stop;
cout << "Funktion beendet. Bitte starten sie das Programm neu" << endl;
cin >> stop;

return 0; 
}


NUN muss ich nur noch die Rechnungen umstellen!! juhu!
Also können char keine mehreren Buchstaben aufnehmen, sondern nur immer 1en?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
char Eingabe;
        cin >> Eingabe;
        if ((Eingabe == 'J') || (Eingabe == 'j'))
            {
                Rundenanzahl += 1;
            }
        else if  ((Eingabe == 'N') || (Eingabe == 'n'))
        {
            Rundenanzahl -= 1;
        }




Und jetzt ist es wieder Easy!
Nun bei Tot kann man direkt alles wiederholen!

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
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#include <iostream> 

using namespace std; 


int main () 

{ 


    // Menüvariablen 

    char menueAuswahl; 


    // Menü 

    cout << "Möchten Sie einen (K)ampf führen, oder das Tunier (v)erlassen und wegrennen?" << endl; 
    cin >> menueAuswahl; 

    switch (menueAuswahl) 
        {
            case('v'): 
              case('V'): 
            {  
                cout << "Tunier verlassen" << endl; 
            } break;

                {
                    case ('k'):
                        case ('K'):
                    { 
                        // Variablen 



float Angriffsschadengegner; 
float Angriffsschadendu; 
int Level; 
float Lebensenergievoll; 
float duLebensenergie; 
int gegnerangriff; 
int duangriff; 
int Gegnerlevel; 
float Gegnerlebensenergie; 
float gegnergesamtschaden; 
float dugesamtschaden; 
float gegnerLebensenergie; 
float duRegeneration; 
float gegnerRegeneration; 


//Const - Variablen benennen 


const float Lebensenergielv1 = 35.57231f; 
const float Angriffsschadenprolevel = 2.87831f; 
const float Regenerationszahl = 0.233f; 

// Gesamt-Schleifenvariable

int Gesamtrunde = 1;

// Gesamt-Schleife

for (int s=0 ; s<Gesamtrunde ; s++)
    {
// Lebensenergierechnung 


Level = 1; 
cout << "Welches Level bist du: ?" << endl; 
cin >> Level; 


Lebensenergievoll = Level * Lebensenergielv1; 

cout << "Du besitzt insgesamt: " << Lebensenergievoll << " Lebenspunkte" << endl; 

Gegnerlevel = 1; 
cout << "welches Level ist dein Gegner: ?" << endl; 
cin >> Gegnerlevel; 

Gegnerlebensenergie = Gegnerlevel * Lebensenergielv1; 
cout << "Der Gegner besitzt " << Gegnerlebensenergie << " Lebenspunkte" << endl; 



// Angriffsrechnung 


// Angriffsschleifenvariable

int Rundenanzahl = 1;

// Angriffsschleife

for (int i=0 ; i<Rundenanzahl ; i++)
    {
    gegnerangriff = 1; 
    cout << "Wie oft greift der Gegner an: ?" << endl; 
    cin >> gegnerangriff; 


    duangriff = 1; 
    cout << "Wie oft greifst du an: ?" << endl; 
    cin >> duangriff; 

    Angriffsschadengegner = Gegnerlevel * Angriffsschadenprolevel; 

    Angriffsschadendu = Level * Angriffsschadenprolevel; 

    gegnergesamtschaden = 0; 
    gegnergesamtschaden = gegnerangriff * Angriffsschadengegner; 

    dugesamtschaden = 0; 
    dugesamtschaden = duangriff * Angriffsschadendu; 

    cout << "Du machst pro Angriff... " << Angriffsschadendu <<" Schaden. du greifst " << duangriff << " mal an" << endl; 
    cout << "Du machst bei " << duangriff << " Angriff(en), insgesamt " << dugesamtschaden << " Schaden" << endl; 
    
    cout << "Dein Gegner macht pro Angriff... " << Angriffsschadengegner << " Schaden. Er greift " << gegnerangriff << " mal an." << endl; 
    cout << "Dein Gegner macht bei " << gegnerangriff << " Angriff(en), insgesamt " << gegnergesamtschaden << " Schaden" << endl; 
    
    
    // Regeneration 

    duRegeneration = 1; 
    // pro Angriff 

    duRegeneration = gegnerangriff * Level * Regenerationszahl; 
    
    gegnerRegeneration = 1; 
    // pro Angriff 

    gegnerRegeneration = duangriff * Gegnerlevel * Regenerationszahl; 


    duLebensenergie = (Lebensenergievoll - gegnergesamtschaden) + duRegeneration; 
    gegnerLebensenergie = (Gegnerlebensenergie - dugesamtschaden) + gegnerRegeneration; 
    

    cout << "Dein Regenerationswert ist " << duRegeneration << endl; 
    cout <<"Du besitzt jetzt nach " << gegnerangriff << " Angriff(en), noch " << duLebensenergie << " Lebenspunkte" << endl; 


    cout << "Dein Gegnersregenerationswert ist " << gegnerRegeneration << endl; 
    cout << "Dein Gegner besitzt jetzt nach " << duangriff << " Angriff(en), noch " << gegnerLebensenergie << " Lebenspunkte" << endl; 



    // Spieler oder Gegener - Tot 


    if (duLebensenergie <= 0) 

        { 
        Rundenanzahl -= 1;
        cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl;
        char Eingabe1;
        cin >> Eingabe1;
        if ((Eingabe1 == 'J') || (Eingabe1 == 'j'))
            {
                Gesamtrunde += 1;
            }
        else if  ((Eingabe1 == 'N') || (Eingabe1 == 'n'))
        {
            Gesamtrunde -= 1;
        }   
        } 

    else if (gegnerLebensenergie <= 0) 
        { 
        Rundenanzahl -= 1;
        cout << "\n \n Du hast deinen Feind getoetet" << endl; 
        cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl;
        char Eingabe2;
        cin >> Eingabe2;
        if ((Eingabe2 == 'J') || (Eingabe2 == 'j'))
            {
                Gesamtrunde += 1;
            }
        else if  ((Eingabe2 == 'N') || (Eingabe2 == 'n'))
        {
            Gesamtrunde -= 1;
        }
        } 

    else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0))

        {  
        cout << "\n \n beide Spieler leben noch \n \n" << endl; 
        cout << "Möchten Sie erneut angreifen? / (J)a oder (N)ein" << endl;
        char Eingabe;
        cin >> Eingabe;
        if ((Eingabe == 'J') || (Eingabe == 'j'))
            {
                Rundenanzahl += 1;
            }
        else if  ((Eingabe == 'N') || (Eingabe == 'n'))
        {
            Rundenanzahl -= 1;
        }
        }
    }// <--- For Schleife beendet

}
} 
}
}
// Menü verlassen 


int stop;
cout << "Funktion beendet. Bitte starten sie das Programm neu" << endl;
cin >> stop;

return 0; 
}







und auch der Countdown!!

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
#include <iostream>

using namespace std;

int main ()
{
// Variablen

int countdown;

// for-Schleife

int runden = 1;
char entscheidung;

for (int i = 0; i<runden; i++)
{

// Abfrage

cout << "Wie lange soll der Countdown herunterzählen?" << endl;
cin >> countdown;


// Countdown herunterzählen

do
{
    cout << "Wert des Countdowns: " << countdown << endl;
    countdown --;
}   while (countdown > 0);

cout << "Möchtest du den countdown wiederholen? (j)a oder (n)ein?." << endl;
cin >> entscheidung;
if (entscheidung == 'j')
{
runden += 1;
}
else if (entscheidung == 'n')
{
runden += 0;
}
}
cout << "\n\n\nProgramm ende" << endl;
int ende;
cin >> ende;
return 0;
}
Mfg. Michael Herker :D

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

25

26.04.2009, 09:16

Also ernsthaft, könntest du deine Quellcode posts bitte immer nur auf das Nötige beschränken? Wenn man sich diese Seite (2) mal ansieht wurde es wirklich übertrieben ^^
Allein um herauszufinden, was du geändert hast, braucht man ja ewig...

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

26

26.04.2009, 16:59

Verstanden, so wenig wie möglich nochmals den gesamten Quelltext hinein kopieren, weil es unübersichtlich wird!

Nun aber in diesem Fall muss ich nochmal alles hinein kopieren, da ich nun alles strukturell geändert habe!

nun kann man auch gegen eine gewisse Rasse kämpfen.. Magier, Krieger oder Bogenschütze.

Es funktioniert alles soweit, nur ich habe einige kleine Fehler in die ich nicht ganz durchsteige.

Einmal:
Nachdem ich einen Kampf gegen eine Rasse geführt wurde und wieder ins Hauptmenü gekommen bin, muss ich mehrmals V drücken, um das Programm zu beenden und zu verlassen.

Dann:
Komischerweise kommt trotz nachdem (Die haben ihren Feind getötet) oder (Du bist tot) nochmals die wiederholung des Kampfes...
Ich muss mehrmals den Gegner getötet oder der Gegner mich getötet haben, um das ich wieder ins Hauptmenü komme.

Lange Rede kurzer Sinn
Bitte testet mal dieses kleine Programm...
Und sagt mir, wo eventuell meine Fehler sind, ich werde versuchen dies zu verstehen und sofort zu korrigieren..!!


Weiter unten seht ihr den Quelltext
Mfg. Michael Herker :D

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

27

26.04.2009, 18:31

Sorry, aber so wie der code da steht, versteht ihn kein Mensch mehr... Dein Einrückverfahren sieht mehr als nur sinnfrei aus... Wenn dann irgendwelche Bugs auftreten ist das eigentlich vollkommen normal...

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
        } break;
           
            case('v'):
              case('V'):
            { 
                cout << "Tunier verlassen" << endl;
            } break;

                {
                    case ('k'):
                        case ('K'):
                    {
                        
.......

        else if  ((Eingabe == 'N') || (Eingabe == 'n'))
        {
            Rundenanzahl -= 1;
        }
        }
 else
   cout << "> Falsche Eingabe <" << endl;   
        }// <--- For Schleife beendet

}
}
}
}
// Menü verlassen

Ich meine WTF?! Wenn du "ordentlicher" codest, also am besten alles nochmal überarbeitest und dann nochmal durchguckst, dann findest du deinen Fehler sicher selbst... aber sowas tut sich hier wirklich keiner gerne an.. ich kanns mir jedenfalls nicht vorstellen ^^

Ist nicht persönlich gemeint... nur Einrückungen und Codehighlighting sind dazu da, um code lesbarer zu machen, deine einrückungen bewirken wirklich eher das gegenteil ;)

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

28

26.04.2009, 19:27

Ich hoffe so ist die Führung richtig!

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
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
#include <iostream> 

using namespace std; 


// Variablen

float Angriffsschadengegner; 
float Angriffsschadendu; 
int Level; 
float Lebensenergievoll; 
float duLebensenergie; 
int gegnerangriff; 
int duangriff; 
int Gegnerlevel; 
float Gegnerlebensenergie; 
float gegnergesamtschaden; 
float dugesamtschaden; 
float gegnerLebensenergie; 
float duRegeneration; 
float gegnerRegeneration; 

// Magiervariablen

const float Magierlebenlvl1 = 27.551f;
const float Magierangriffsschaden = 4.5831f;
const float Magierregenerationszahl = 0.241f;

// Kriegervariablen

const float Kriegerlebenlvl1 = 48.121f;
const float Kriegerangriffsschaden = 1.315f;
const float Kriegerregenerationszahl = 0.233f;

// Bogenschützevariablen

const float Blebenlvl1 = 29.121f;
const float Bangriffsschaden = 2.116f;
const float Bregenerationszahl = 0.933f;

// Const - Variablen benennen 


const float Lebensenergielv1 = 35.57231f; 
const float Angriffsschadenprolevel = 2.87831f; 
const float Regenerationszahl = 0.233f; 

// Menüvariablen 

char menueAuswahl; 
char Rassenauswahl;
char Eingabe1;
char Eingabe2;
char Eingabe;   
char Eingabe3;
char Eingabe4;
char Eingabe5;  
char Eingabe6;
char Eingabe7;
char Eingabe8;  
char Eingabe9;
char Eingabe10;
char Eingabe11;

// Gesamt-Schleifenvariable 

int Gesamtrunde = 1; 


// Funktionen wegen der Übersicht!!!


// Mainfunktionskampf

void Mainfunktionskampf ()
{
    // Lebensenergierechnung 


    Level = 1; 
    cout << "Welches Level bist du: ?" << endl; 
    cin >> Level; 


    Lebensenergievoll = Level * Lebensenergielv1; 

    cout << "Du besitzt insgesamt: " << Lebensenergievoll << " Lebenspunkte" << endl; 

    Gegnerlevel = 1; 
    cout << "welches Level ist dein Gegner: ?" << endl; 
    cin >> Gegnerlevel; 
    
    Gegnerlebensenergie = Gegnerlevel * Lebensenergielv1; 
    cout << "Der Gegner besitzt " << Gegnerlebensenergie << " Lebenspunkte" << endl; 



    // Angriffsrechnung 


    // Angriffsschleifenvariable 

    int Rundenanzahl = 1; 

    // Angriffsschleife 

    for (int i=0 ; i<Rundenanzahl ; i++) 
    { 
        gegnerangriff = 1; 
        cout << "Wie oft greift der Gegner an: ?" << endl; 
        cin >> gegnerangriff; 


        duangriff = 1; 
        cout << "Wie oft greifst du an: ?" << endl; 
        cin >> duangriff; 

        Angriffsschadengegner = Gegnerlevel * Angriffsschadenprolevel; 

        Angriffsschadendu = Level * Angriffsschadenprolevel; 

        gegnergesamtschaden = 0; 
        gegnergesamtschaden = gegnerangriff * Angriffsschadengegner; 

        dugesamtschaden = 0; 
        dugesamtschaden = duangriff * Angriffsschadendu; 

        cout << "Du machst pro Angriff... " << Angriffsschadendu <<" Schaden. du greifst " << duangriff << " mal an" << endl; 
        cout << "Du machst bei " << duangriff << " Angriff(en), insgesamt " << dugesamtschaden << " Schaden" << endl; 
    
        cout << "Dein Gegner macht pro Angriff... " << Angriffsschadengegner << " Schaden. Er greift " << gegnerangriff << " mal an." << endl; 
        cout << "Dein Gegner macht bei " << gegnerangriff << " Angriff(en), insgesamt " << gegnergesamtschaden << " Schaden" << endl; 
    
    
        // Regeneration 

        duRegeneration = 1; 
        // pro Angriff 

        duRegeneration = gegnerangriff * Level * Regenerationszahl; 
    
        gegnerRegeneration = 1; 
        // pro Angriff 

        gegnerRegeneration = duangriff * Gegnerlevel * Regenerationszahl; 


        duLebensenergie = (Lebensenergievoll - gegnergesamtschaden) + duRegeneration; 
        gegnerLebensenergie = (Gegnerlebensenergie - dugesamtschaden) + gegnerRegeneration; 
    

        cout << "Dein Regenerationswert ist " << duRegeneration << endl; 
        cout <<"Du besitzt jetzt nach " << gegnerangriff << " Angriff(en), noch " << duLebensenergie << " Lebenspunkte" << endl; 


        cout << "Dein Gegnersregenerationswert ist " << gegnerRegeneration << endl; 
        cout << "Dein Gegner besitzt jetzt nach " << duangriff << " Angriff(en), noch " << gegnerLebensenergie << " Lebenspunkte" << endl; 



        // Spieler oder Gegener - Tot 

    
        if (duLebensenergie <= 0) 

        { 
            Rundenanzahl -= 1; 
            cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
   
            cin >> Eingabe1; 
            if ((Eingabe1 == 'J') || (Eingabe1 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe1 == 'N') || (Eingabe1 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            }    
        } 

    else if (gegnerLebensenergie <= 0) 
        { 
            Rundenanzahl -= 1; 
            cout << "\n \n Du hast deinen Feind getoetet" << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
         
            cin >> Eingabe2; 
            if ((Eingabe2 == 'J') || (Eingabe2 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe2 == 'N') || (Eingabe2 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            } 
        } 

    else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0)) 

        {  
            cout << "\n \n beide Spieler leben noch \n \n" << endl; 
            cout << "Möchten Sie erneut angreifen? / (J)a oder (N)ein" << endl; 
    
            cin >> Eingabe; 
            if ((Eingabe == 'J') || (Eingabe == 'j')) 
            { 
                Rundenanzahl += 1; 
            } 
            else if  ((Eingabe == 'N') || (Eingabe == 'n')) 
            { 
                Rundenanzahl -= 1; 
            } 
        } 
    else
    cout << "> Falsche Eingabe <" << endl;  
    }// <--- For Schleife beendet 

}

// Magierfunktion

void Magierangriff ()
{
    // Lebensenergierechnung 


    Level = 1; 
    cout << "Welches Level bist du: ?" << endl; 
    cin >> Level; 


    Lebensenergievoll = Level * Lebensenergielv1; 

    cout << "Du besitzt insgesamt: " << Lebensenergievoll << " Lebenspunkte" << endl; 

    Gegnerlevel = 1; 
    cout << "welches Level ist dein Gegner: ?" << endl; 
    cin >> Gegnerlevel; 

    Gegnerlebensenergie = Gegnerlevel * Magierlebenlvl1; 
    cout << "Der Gegner besitzt " << Gegnerlebensenergie << " Lebenspunkte" << endl; 



    // Angriffsrechnung 


    // Angriffsschleifenvariable 

    int Rundenanzahlm = 1; 

    // Angriffsschleife 

    for (int m=0 ; m<Rundenanzahlm ; m++) 
    { 
        gegnerangriff = 1; 
        cout << "Wie oft greift der Gegner an: ?" << endl; 
        cin >> gegnerangriff; 


        duangriff = 1; 
        cout << "Wie oft greifst du an: ?" << endl; 
        cin >> duangriff; 

        Angriffsschadengegner = Gegnerlevel * Magierangriffsschaden; 

        Angriffsschadendu = Level * Angriffsschadenprolevel; 

        gegnergesamtschaden = 0; 
        gegnergesamtschaden = gegnerangriff * Angriffsschadengegner; 

        dugesamtschaden = 0; 
        dugesamtschaden = duangriff * Angriffsschadendu; 

        cout << "Du machst pro Angriff... " << Angriffsschadendu <<" Schaden. du greifst " << duangriff << " mal an" << endl; 
        cout << "Du machst bei " << duangriff << " Angriff(en), insgesamt " << dugesamtschaden << " Schaden" << endl; 
    
        cout << "Dein Gegner macht pro Angriff... " << Angriffsschadengegner << " Schaden. Er greift " << gegnerangriff << " mal an." << endl; 
        cout << "Dein Gegner macht bei " << gegnerangriff << " Angriff(en), insgesamt " << gegnergesamtschaden << " Schaden" << endl; 
    
    
        // Regeneration 

        duRegeneration = 1; 
        // pro Angriff 

        duRegeneration = gegnerangriff * Level * Regenerationszahl; 
        
        gegnerRegeneration = 1; 
        // pro Angriff 

        gegnerRegeneration = duangriff * Gegnerlevel * Magierregenerationszahl; 


        duLebensenergie = (Lebensenergievoll - gegnergesamtschaden) + duRegeneration; 
        gegnerLebensenergie = (Gegnerlebensenergie - dugesamtschaden) + gegnerRegeneration; 
    

        cout << "Dein Regenerationswert ist " << duRegeneration << endl; 
        cout <<"Du besitzt jetzt nach " << gegnerangriff << " Angriff(en), noch " << duLebensenergie << " Lebenspunkte" << endl; 


        cout << "Dein Gegnersregenerationswert ist " << gegnerRegeneration << endl; 
        cout << "Dein Gegner besitzt jetzt nach " << duangriff << " Angriff(en), noch " << gegnerLebensenergie << " Lebenspunkte" << endl; 



        // Spieler oder Gegener - Tot 


        if (duLebensenergie <= 0) 

        { 
            Rundenanzahlm -= 1; 
            cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
      
            cin >> Eingabe3; 
            if ((Eingabe4 == 'J') || (Eingabe4 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe4 == 'N') || (Eingabe4 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            }    
        }

        else if (gegnerLebensenergie <= 0) 
        { 
            Rundenanzahlm -= 1; 
            cout << "\n \n Du hast deinen Feind getoetet" << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
       
            cin >> Eingabe4; 
            if ((Eingabe4 == 'J') || (Eingabe4 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe4 == 'N') || (Eingabe4 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            } 
        } 

        else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0)) 

        {  
            cout << "\n \n beide Spieler leben noch \n \n" << endl; 
            cout << "Möchten Sie erneut angreifen? / (J)a oder (N)ein" << endl; 
        
            cin >> Eingabe5; 
            if ((Eingabe5 == 'J') || (Eingabe5 == 'j')) 
            { 
                Rundenanzahlm += 1; 
            } 
            else if  ((Eingabe5 == 'N') || (Eingabe5 == 'n')) 
            {
                Rundenanzahlm -= 1; 
            } 
        } 
        else
        cout << "> Falsche Eingabe <" << endl;  
    }// <--- For Schleife beendet 

}



//Kriegerfunktion

void Kriegerangriff ()
{

    // Lebensenergierechnung 


    Level = 1; 
    cout << "Welches Level bist du: ?" << endl; 
    cin >> Level; 


    Lebensenergievoll = Level * Lebensenergielv1; 

    cout << "Du besitzt insgesamt: " << Lebensenergievoll << " Lebenspunkte" << endl; 

    Gegnerlevel = 1; 
    cout << "welches Level ist dein Gegner: ?" << endl; 
    cin >> Gegnerlevel; 

    Gegnerlebensenergie = Gegnerlevel * Kriegerlebenlvl1; 
    cout << "Der Gegner besitzt " << Gegnerlebensenergie << " Lebenspunkte" << endl; 



    // Angriffsrechnung 


    // Angriffsschleifenvariable 

    int Rundenkg = 1; 

    // Angriffsschleife 

    for (int e=0 ; e<Rundenkg ; e++) 
    { 
        gegnerangriff = 1; 
        cout << "Wie oft greift der Gegner an: ?" << endl; 
        cin >> gegnerangriff; 


        duangriff = 1; 
        cout << "Wie oft greifst du an: ?" << endl; 
        cin >> duangriff; 

        Angriffsschadengegner = Gegnerlevel * Kriegerangriffsschaden; 

        Angriffsschadendu = Level * Angriffsschadenprolevel; 

        gegnergesamtschaden = 0; 
        gegnergesamtschaden = gegnerangriff * Angriffsschadengegner; 

        dugesamtschaden = 0; 
        dugesamtschaden = duangriff * Angriffsschadendu; 

        cout << "Du machst pro Angriff... " << Angriffsschadendu <<" Schaden. du greifst " << duangriff << " mal an" << endl; 
        cout << "Du machst bei " << duangriff << " Angriff(en), insgesamt " << dugesamtschaden << " Schaden" << endl; 
    
        cout << "Dein Gegner macht pro Angriff... " << Angriffsschadengegner << " Schaden. Er greift " << gegnerangriff << " mal an." << endl; 
        cout << "Dein Gegner macht bei " << gegnerangriff << " Angriff(en), insgesamt " << gegnergesamtschaden << " Schaden" << endl; 
    
    
        // Regeneration 

        duRegeneration = 1; 
        // pro Angriff 

        duRegeneration = gegnerangriff * Level * Regenerationszahl; 
    
        gegnerRegeneration = 1; 
        // pro Angriff 

        gegnerRegeneration = duangriff * Gegnerlevel * Kriegerregenerationszahl; 


        duLebensenergie = (Lebensenergievoll - gegnergesamtschaden) + duRegeneration; 
        gegnerLebensenergie = (Gegnerlebensenergie - dugesamtschaden) + gegnerRegeneration; 
    

        cout << "Dein Regenerationswert ist " << duRegeneration << endl; 
        cout <<"Du besitzt jetzt nach " << gegnerangriff << " Angriff(en), noch " << duLebensenergie << " Lebenspunkte" << endl; 


        cout << "Dein Gegnersregenerationswert ist " << gegnerRegeneration << endl; 
        cout << "Dein Gegner besitzt jetzt nach " << duangriff << " Angriff(en), noch " << gegnerLebensenergie << " Lebenspunkte" << endl; 



        // Spieler oder Gegener - Tot 


        if (duLebensenergie <= 0) 

        { 
            Rundenkg -= 1; 
            cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
         
            cin >> Eingabe6; 
            if ((Eingabe6 == 'J') || (Eingabe6 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe6 == 'N') || (Eingabe6 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            }    
        } 

        else if (gegnerLebensenergie <= 0) 
        { 
            Rundenkg -= 1; 
            cout << "\n \n Du hast deinen Feind getoetet" << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
      
            cin >> Eingabe7; 
            if ((Eingabe7 == 'J') || (Eingabe7 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe7 == 'N') || (Eingabe7 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            } 
        } 

        else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0)) 

        {  
            cout << "\n \n beide Spieler leben noch \n \n" << endl; 
            cout << "Möchten Sie erneut angreifen? / (J)a oder (N)ein" << endl; 
   
            cin >> Eingabe8; 
            if ((Eingabe8 == 'J') || (Eingabe8 == 'j')) 
            { 
                Rundenkg += 1; 
            } 
            else if  ((Eingabe8 == 'N') || (Eingabe8 == 'n')) 
            { 
                Rundenkg -= 1; 
            } 
        } 
        else
        cout << "> Falsche Eingabe <" << endl;  
    }// <--- For Schleife beendet 

}




// Bogenschützenfunktion

void Bschuetze ()
{

    // Lebensenergierechnung 


    Level = 1; 
    cout << "Welches Level bist du: ?" << endl; 
    cin >> Level; 


    Lebensenergievoll = Level * Lebensenergielv1; 

    cout << "Du besitzt insgesamt: " << Lebensenergievoll << " Lebenspunkte" << endl; 

    Gegnerlevel = 1; 
    cout << "welches Level ist dein Gegner: ?" << endl; 
    cin >> Gegnerlevel; 

    Gegnerlebensenergie = Gegnerlevel * Blebenlvl1; 
    cout << "Der Gegner besitzt " << Gegnerlebensenergie << " Lebenspunkte" << endl; 



    // Angriffsrechnung 


    // Angriffsschleifenvariable 

    int Rundenanzahlb = 1; 

    // Angriffsschleife 

    for (int b=0 ; b<Rundenanzahlb ; b++) 
    { 
        gegnerangriff = 1; 
        cout << "Wie oft greift der Gegner an: ?" << endl; 
        cin >> gegnerangriff; 


        duangriff = 1; 
        cout << "Wie oft greifst du an: ?" << endl; 
        cin >> duangriff; 

        Angriffsschadengegner = Gegnerlevel * Bangriffsschaden; 

        Angriffsschadendu = Level * Angriffsschadenprolevel; 

        gegnergesamtschaden = 0; 
        gegnergesamtschaden = gegnerangriff * Angriffsschadengegner; 

        dugesamtschaden = 0; 
        dugesamtschaden = duangriff * Angriffsschadendu; 

        cout << "Du machst pro Angriff... " << Angriffsschadendu <<" Schaden. du greifst " << duangriff << " mal an" << endl; 
        cout << "Du machst bei " << duangriff << " Angriff(en), insgesamt " << dugesamtschaden << " Schaden" << endl; 
    
        cout << "Dein Gegner macht pro Angriff... " << Angriffsschadengegner << " Schaden. Er greift " << gegnerangriff << " mal an." << endl; 
        cout << "Dein Gegner macht bei " << gegnerangriff << " Angriff(en), insgesamt " << gegnergesamtschaden << " Schaden" << endl; 
    
    
        // Regeneration 

        duRegeneration = 1; 
        // pro Angriff 

        duRegeneration = gegnerangriff * Level * Regenerationszahl; 
    
        gegnerRegeneration = 1; 
        // pro Angriff 

        gegnerRegeneration = duangriff * Gegnerlevel * Bregenerationszahl; 


        duLebensenergie = (Lebensenergievoll - gegnergesamtschaden) + duRegeneration; 
        gegnerLebensenergie = (Gegnerlebensenergie - dugesamtschaden) + gegnerRegeneration; 
    

        cout << "Dein Regenerationswert ist " << duRegeneration << endl; 
        cout <<"Du besitzt jetzt nach " << gegnerangriff << " Angriff(en), noch " << duLebensenergie << " Lebenspunkte" << endl; 


        cout << "Dein Gegnersregenerationswert ist " << gegnerRegeneration << endl; 
        cout << "Dein Gegner besitzt jetzt nach " << duangriff << " Angriff(en), noch " << gegnerLebensenergie << " Lebenspunkte" << endl; 



        // Spieler oder Gegener - Tot 

    
        if (duLebensenergie <= 0) 

        { 
            Rundenanzahlb -= 1; 
            cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
        
            cin >> Eingabe9; 
            if ((Eingabe9 == 'J') || (Eingabe9 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe9 == 'N') || (Eingabe9 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            }    
        } 

        else if (gegnerLebensenergie <= 0) 
        { 
            Rundenanzahlb -= 1; 
            cout << "\n \n Du hast deinen Feind getoetet" << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
 
            cin >> Eingabe10; 
            if ((Eingabe10 == 'J') || (Eingabe10 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe10 == 'N') || (Eingabe10 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            } 
        } 

        else if ((duLebensenergie > 0) || (gegnerLebensenergie > 0)) 

        {  
            cout << "\n \n beide Spieler leben noch \n \n" << endl; 
            cout << "Möchten Sie erneut angreifen? / (J)a oder (N)ein" << endl; 
     
            cin >> Eingabe11; 
            if ((Eingabe11 == 'J') || (Eingabe11 == 'j')) 
            { 
                Rundenanzahlb += 1; 
            } 
            else if  ((Eingabe11 == 'N') || (Eingabe11 == 'n')) 
            { 
                Rundenanzahlb -= 1; 
            } 
        } 
        else
        cout << "> Falsche Eingabe <" << endl;  
    }// <--- For Schleife beendet 

}



int main () 

{ 



    // Gesamt-Schleife 

    for (int g=0 ; g<Gesamtrunde ; g++) 
    { 

        // Menü Spiel-Starten 

        cout << "Möchten Sie einen (K)ampf führen?" << endl;
        cout << "Möchten Sie gegen eine bestimmte (R)asse kämpfen?" << endl;
        cout << "Möchten Sie das Spiel (v)erlassen?" << endl;
        cin >> menueAuswahl; 

        switch (menueAuswahl) 
        { 
            case ('r'):
            case ('R'):
            {
                cout << "Möchtet ihr gegen (M)agier kämpfen?" << endl;
                cout << "Stark im Angriff allerdings wenig Leben?" << endl;
                cout << " \nMöchtet ihr gegen Krie(g)er kämpfen?" << endl;
                cout << "Weniger Angriff dafür viele Leben" << endl;
                cout << "\nMöchtet ihr gegen einen (B)ogenschütze kämpfen?" << endl;
                cout << "Weniger Angriff und schwache Verteidigung dafür starke Regeneration" << endl;
                cin >> Rassenauswahl;

                switch (Rassenauswahl)
        
                case ('m'):
                case ('M'):
                {
                    Magierangriff ();
                }

                case ('g'):
                case ('G'):
                {
                    Kriegerangriff ();
                }

                case ('b'):
                case ('B'):
                {
                    Bschuetze ();
                }
        
            
            } break; 
            
            case('v'): 
            case('V'): 
            {  
                cout << "Tunier verlassen" << endl; 
            } break; 
            { 
                case ('k'): 
                case ('K'): 
                { 
                    Mainfunktionskampf ();
                } 
            } 
        } 
    } 
    // Menü verlassen 


    int stop; 
    cout << "Funktion beendet. Bitte starten sie das Programm neu" << endl; 
    cin >> stop; 

    return 0; 
}
Mfg. Michael Herker :D

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

29

26.04.2009, 19:45

Ich habe es jetzt nicht ausgeführt, aber brich die Schleife doch einfach ab, wenn einer der beiden tot ist. Geht recht einfach mit einem break; ;)

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

30

26.04.2009, 20:28

Nun versuche ich die Punkte zu finden, wo ich in jede Fall ein break; einfügen muss.. Nun das ist garnicht so einfach, vorallem wenn ich ein break; setze hat es immer irgendein anderen Nachteil wie z.b. direkt nach der Eingabe springt das Programm zum ende hin auf die untersten Zeilen

C-/C++-Quelltext

1
2
3
4
5
    // Menü verlassen 


    int stop; 
    cout << "Funktion beendet. Bitte starten sie das Programm neu" << endl; 
    cin >> stop;


Wo setze ich die break; hin, ohne das ich mir dann gleich mein ganzes Programm schließe.
Es muss doch eine Möglichkeit geben, das ich mit einem Befehl zurück zum Anfang springen kann. Sprich von:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    if (duLebensenergie <= 0) 

        { 
            Rundenkg -= 1; 
            cout << "\n \n Du bist tot. Deine Lebenspunkte sind erloschen." << endl; 
            cout << "Möchten Sie das Tunier erneut starten? / (J)a oder (N)ein" << endl; 
         
            cin >> Eingabe6; 
            if ((Eingabe6 == 'J') || (Eingabe6 == 'j')) 
            { 
                Gesamtrunde += 1; 
            } 
            else if  ((Eingabe6 == 'N') || (Eingabe6 == 'n')) 
            { 
                Gesamtrunde -= 1; 
            }
        } 

auf

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
    // Gesamt-Schleife 

    for (int g=0 ; g<Gesamtrunde ; g++) 
    { 

        // Menü Spiel-Starten 

        cout << "Möchten Sie einen (K)ampf führen?" << endl;
        cout << "Möchten Sie gegen eine bestimmte (R)asse kämpfen?" << endl;
        cout << "Möchten Sie das Spiel (v)erlassen?" << endl;
        cin >> menueAuswahl; 

        switch (menueAuswahl) 
        { 
........................




@Fred:
Ich möchte ja auch nicht die gesamte Schleife abbrechen...
Ich möchte das wenn der SPieler tot ist, oder der Gegner, dass das Programm fragt, ob man zurück zum Menü möchte und im Menü wieder Auswählen kann, was man jetzt machen möchte.
Mfg. Michael Herker :D

Werbeanzeige