schon wieder zufall
-
Maldikus schrieb:
Thorgrim schrieb:
Den Code oben habe ich mir nicht angeschaut (immer unentschieden, Logikfehler?), der Ausgabecode könnte aber anders gestaltet werden.
if (Hp1 <=0 && Hp2 <=0) { cout << "es ist unendschieden "; } else if (Hp1 <=0 ) { cout << "du hast gewonnen"; } else if (Hp2 <=0); { cout << "du hast leider Verloren "; }klappt leider nicht
Das ist keine ausreichende Fehlerbeschreibung. Ansonsten poste mal deinen gesamten Code, damit man das selber mal antesten kann. Alles andere ist nur Raterei.
-
Ein falsch gesetztes Semikolon habe ich noch übersehen:
else if (Hp2 <=0)Ansonsten, wie schon geschrieben, solltest du auch dazu posten, was nicht klappt (Compilerfehlermeldungen/-warnungen).
-
gut dann poste ich mal den ganzen code :
#include <iostream> #include <time.h> using namespace std; void auswahl (void); char chShip=0; int main () { //variablen // char Menü, chTest=0; int nautikus=12; int enterprise=17; do { //Startbildschirm // cout<<"\n\n\n\n\t\t\t(S)piel starten\n\n\t\t\t(B)eenden"<<endl; cin >> Menü; //Taste S oder E drücken // switch (Menü) { case ('s'): case ('S'): { system("cls"); cout << "\n\n\n\n\t\t\tSpiel wird gestartet\n\t\t\tviel Glueck!"<<endl; cout<<"\n\n\n\n\t\t\twaehle dein schiff\n\t\t\t(N)autikus oder (E)nterpriese\n"; cin>>chShip; // <<< für nächstes switch befehl //Taste n oder e drücken // switch (chShip) { case ('n'): case ('N'): { }break; case ('e'): case ('E'): { }break; default: //wenn nichts von den gedrückt wird // { cout << "error2"<<endl; system("pause"); system("cls"); }break; } } auswahl(); case ('b'): case ('B'): { cout << "Game wird Beendet!\n"; system("pause"); system("cls"); }break; default: //wenn nichts von den gedrückt wird // { cout << "error"<<endl; system("pause"); system("cls"); }break; } }while (Menü!='b' && Menü!='B'); // wenn nicht die richtige taste gedrückt wird // return (0); } void auswahl(void) { system("cls"); if (chShip=='n'|| chShip=='N') { cout<<"\n\n\n\t\tnautikus gewaehlt "<<endl; } if (chShip=='e'|| chShip=='E') { cout<<"\n\n\n\t\tenterprise gewaehlt "<<endl; } int zuMIN=100; int zuMAX=500; int zuDIFF = zuMAX-zuMIN; srand((unsigned int)time (0)); int Hp1= zuMIN + (rand () %zuDIFF+1); cout<<"\n\n\tDein Schiff hat :\t"<< Hp1 << " Lebenspunkte"<<endl; int zuMIN1=100; int zuMAX1=500; int zuDIFF1 = zuMAX1-zuMIN1; int Hp2= zuMIN1 + (rand () %zuDIFF1+1); cout<<"\n\n\tGegener Schiff hat :\t"<< Hp2 << " Lebenspunkte"<<endl; ; do { int zuMIN2=20; int zuMAX2=80; int zuDIFF2 = zuMAX2-zuMIN2; int dmg= zuMIN2 + (rand () %zuDIFF2+1); int zuMIN3=20; int zuMAX3=80; int zuDIFF3 = zuMAX3-zuMIN3; int dmg2= zuMIN3 + (rand () %zuDIFF3+1); cout<< "der Gegener hat " << dmg <<"schaden gemacht\n"; Hp1=Hp1-dmg; cout<< "Dein schiff hat noch: " << Hp1 << "Hp!\n\n"; cout<< "Du hast " << dmg2 <<"schaden gemacht\n"; Hp2= Hp2-dmg2; cout<< "Dein Gegner hat noch: " << Hp2 << "Hp!\n\n" ; getchar(); }while ( Hp1 >=0 && Hp2 >=0); if (Hp1 <=0 && Hp2 <=0) { cout << "es ist unendschieden "; } else if (Hp1 <=0 ) { cout << "du hast gewonnen"; } else if (Hp2 <=0); { cout << "du hast leider Verloren "; } }
-
Und dein Fehler? Ich bekomme in jeder Runde unterschiedliche Schadenszahlen und zumindest der dafür relevante Teil des Codes sieht weniger falsch aus als der Rest.
In Zeile 173 willst du die Semikolons anders setzen.
Und mach deinen Code standardkonform! Das nervt ungeheuer, wenn man deinen Code testen möchte und erst einmal 5 Minuten lang Fehler korrigieren muss: Umlaute haben in Variablennamen nichts verloren! Das heißt ctime, nicht time.h! Für system, rand und srand brauchst du cstdlib! Für getchar brauchst du cstdio!Da dies nicht deine erste Frage ist und ich sehe, dass du keinen einzigen der vielen guten Tipps aus anderen Thread auch nur ansatzweise umgesetzt hast, sage ich mal nichts weiter, außer, dass dies Helfer natürlich ungeheuer motiviert
.
-
ja aber zum schluss wenn die analyse kommt
wer gewonnen hat da ist der fehler er spuckt alles aus also alle 3 formen
-
Probiers mal so:
#include <iostream> #include <ctime> #include <cstdlib> #include <cstdio> #include <cmath> using namespace std; void auswahl (void); char chShip=0; int main () { //variablen // char Menu, chTest=0; int nautikus=12; int enterprise=17; do { //Startbildschirm // cout<<"\n\n\n\n\t\t\t(S)piel starten\n\n\t\t\t(B)eenden"<<endl; cin >> Menu; //Taste S oder E drücken // switch (Menu) { case ('s'): case ('S'): { system("cls"); cout << "\n\n\n\n\t\t\tSpiel wird gestartet\n\t\t\tviel Glueck!"<<endl; cout<<"\n\n\n\n\t\t\twaehle dein schiff\n\t\t\t(N)autikus oder (E)nterpriese\n"; cin>>chShip; // <<< für nächstes switch befehl //Taste n oder e drücken // switch (chShip) { case ('n'): case ('N'): { }break; case ('e'): case ('E'): { }break; default: //wenn nichts von den gedrückt wird // { cout << "error2"<<endl; system("pause"); system("cls"); }break; } } auswahl(); case ('b'): case ('B'): { cout << "Game wird Beendet!\n"; system("pause"); system("cls"); }break; default: //wenn nichts von den gedrückt wird // { cout << "error"<<endl; system("pause"); system("cls"); }break; } }while (Menu!='b' && Menu!='B'); // wenn nicht die richtige taste gedrückt wird // return (0); } void auswahl(void) { system("cls"); if (chShip=='n'|| chShip=='N') { cout<<"\n\n\n\t\tnautikus gewaehlt "<<endl; } if (chShip=='e'|| chShip=='E') { cout<<"\n\n\n\t\tenterprise gewaehlt "<<endl; } int zuMIN=100; int zuMAX=500; int zuDIFF = zuMAX-zuMIN; srand((unsigned int)time (0)); int Hp1= zuMIN + (rand () %zuDIFF+1); cout<<"\n\n\tDein Schiff hat :\t"<< Hp1 << " Lebenspunkte"<<endl; int zuMIN1=100; int zuMAX1=500; int zuDIFF1 = zuMAX1-zuMIN1; int Hp2= zuMIN1 + (rand () %zuDIFF1+1); cout<<"\n\n\tGegener Schiff hat :\t"<< Hp2 << " Lebenspunkte"<<endl; ; do { int zuMIN2=20; int zuMAX2=80; int zuDIFF2 = zuMAX2-zuMIN2; int dmg= zuMIN2 + (rand () %zuDIFF2+1); int zuMIN3=20; int zuMAX3=80; int zuDIFF3 = zuMAX3-zuMIN3; int dmg2= zuMIN3 + (rand () %zuDIFF3+1); cout<< "der Gegener hat " << dmg <<"schaden gemacht\n"; Hp1=Hp1-dmg; cout<< "Dein schiff hat noch: " << Hp1 << "Hp!\n\n"; cout<< "Du hast " << dmg2 <<"schaden gemacht\n"; Hp2= Hp2-dmg2; cout<< "Dein Gegner hat noch: " << Hp2 << "Hp!\n\n" ; getchar(); }while ( Hp1 >=0 && Hp2 >=0); if (Hp1 <=0 && Hp2 <=0) { cout << "es ist unendschieden "; } else if (Hp1 <=0 ) { cout << "du hast leider Verloren "; } else if (Hp2 <=0) { cout << "du hast gewonnen"; } }
-
ah jetzt hab ich den fehler
in zeile 173 habe ich ein ; gemacht was da nicht hingehört
also anfänger hin oder her sowas hatte nicht passieren dürfen
schande über mich
und danke an dich @SeppJso das projeckt ist jetzt ferdig ^^ danke für eure hilfe ^^
jetzt muss ich mir was neues einfallen lassen um mein wissen zu testen ^^
-
Ich verrate dir noch ein Geheimnis: Ich habe nicht 200 Zeilen Code durchgelesen. Mein Compiler hat mir deinen Fehler genannt:
test.cc:173: warning: suggest braces around empty body in an ‘if’ statementDas kann dein Compiler sicher auch. Schalte immer alle Warnoptionen an, dann bist du vor vielen blöden Fehler schon einmal sicher.
-
ja die wahrnung hat er angezeigt habs aber nicht gesehn
-
Maldikus schrieb:
habs aber nicht gesehn
Für Anfänger heißt jede Warnung, dass da ein dicker Fehler ist. Ich weiß auch, warum du sie nicht gesehen hast: Wegen der vielen anderen Warnungen.
-
da programm lief und da habe ich nicht nach den fehlermeldungen geschaut
LEHRE AN MICH: auch wenn das programm startet auch auf die fehlermeldungen schauen ^^