Problem
-
Hallo zusammen
Ein guter Freund von mir Programmiert auch C++, da aber sein Internet im Moment nicht geht, poste ich das für ihn..#include <iostream> #include <stdlib.h> #include <time.h> using namespace std; void start (); void dungeon (); int j, life, lifeenemy, h, hm, w, wm, s, r, jm, hs, d, a, ls, ks; char c; void start () { life = 100; // Leben lifeenemy = 0; // Leben des Feindes j = 0; // Was sich in der Dungeon befindet jm = 200; // Der höchste Dungeon-level h = 0; // Wieviel ein Feind schaden machen kann hm = 0; // Wieviel ein Feind höchstens schaden machen kann w = 0; // Wieviel die Waffe schaden machen kann wm = 0; // Wieviel die Waffe höchstens schaden machen kann s = 1; // Stufe r = 0; // Raum //Objekte: hs = 0; // Holzstock d = 0; // Dolch a = 0; // Axt ls = 0; // Langschwert ks = 0; // Kurzschwert cout << "Du befindest dich in einem laenglichen Raum.\n"; cout << "An der Wand befindet sich eine Tuer (1).\n"; cout << "Vor dir liegt ein Holzstock (2).\n"; cout << "......(1)......\n"; cout << ". (2) .\n"; cout << ". X .\n"; cout << "...............\n"; c = 30; cin >> c; switch (c) { case '1' : r = 1; break; case '2' : hs = 1, d = 0, a = 0, ls = 0, ks = 0; break; case '0' : exit(0); break; } if (r == 1) { cout << "Nimm dir lieber den Stock als Waffe, bevor du den naechsten Raum betrittst!\n"; start (); } if (hs == 1) { cout << "Du befindest dich in einem laenglichen Raum.\n"; cout << "An der Wand befindet sich eine Tuer (1).\n"; cout << "......(1)......\n"; cout << ". X .\n"; cout << ". .\n"; cout << "...............\n"; c = 30; cin >> c; switch (c) { case '1' : r = 2; break; case '0' : exit(0); break; } } if (r = 2) { srand( (unsigned)time( NULL ) ); j = rand() % jm; srand( (unsigned)time( NULL ) ); w = rand() % wm; dungeon (); } } void dungeon () { srand( (unsigned)time( NULL ) ); h = rand() % hm; if (hs == 1) { wm = 2; } else if (d == 1) { wm = 3; } else if (a == 1) { wm = 12; } else if (ls == 1) { wm = 10; } else if (ks == 1) { wm = 8; } if (r == 2) { jm = 2; if (j == 1) { cout << "Als du den Raum betrittst, greift dich eine Ratte (Stufe 1) an.\n"; lifeenemy = 10; hm = 1; cout << "Du schlaegst mit deiner Waffe auf die Ratte ein. " << w << " Schaden für die Ratte.\n"; } } } int main() { cout << "Ugh.\n"; start (); return 0; }(Er hat das Programm noch nicht fertig...)
Wenn er das "Compiliert" gibt es einen typischen Windows Fehler. (Senden, nicht Senden) Kann mir jemand sagen, was er falsch gemacht hat?
-
Am besten jagt er das Ding einfach mal durch den Debugger! Das geht auch ohne Internet!
grüße
-
für wm und hm sollte man einen anderen Wert als 0 einsetzen, da eine Division durch 0 nicht möglich ist.
-
if (r == 1) { cout << "Nimm dir lieber den Stock als Waffe, bevor du den naechsten Raum betrittst!\n"; start (); }Ich denke, dein Freund will, dass nach start() die funktion abgebrochen wird. Denn wenn start() aufgerufen wird, dann beginnt das Spiel quasi wieder von vorne, aber wenn alle Funktionen abgearbeitet sind (also, das Spiel beendet wird), dann springt das Programm wieder an diese Stelle zurück und führt den Code weiter aus.
So könnte man das leicht verhindern:if (r == 1) { cout << "Nimm dir lieber den Stock als Waffe, bevor du den naechsten Raum betrittst!\n"; start (); return ; }