Problem mit if in Klassen
-
Hallo :xmas1:
ich habe folgendes Problem.
Ich starte das spiel dann gehe ich in den Wald und anschließend drücke ich die 2 um den Wald wieder zu verlassen das funktioniert auch so wie es soll.
Aber wenn ich dann wieder in den Wald reingehen will dann funktioniert es nicht.
Wenn ich dann wieder die 1 drücke um wieder in den Wald zu gehen dann geht das Programm einfach aus.Hier ist mal der Source Code:
#include <iostream> using namespace std; class spiel { private: int start; public: int begin(); }; // definiton der memberfunktionen für die klasse spiel int spiel::begin() { cout<<"(1) Spiel starten\n"; cout<<"(2) Spiel Beenden\n"; cout<<"\n"; cout<<"Nummer eingeben: "; cin>>start; return start; } //--------------------------------------------------------------------------- class wohin_gehen { private: int da_hin_gehen; public: umgebung(); }; int wohin_gehen::umgebung() { system("CLS"); cout<<"Wohin wollt ihr gehen? \n"; cout<<"\n"; cout<<"(1) Wald\n"; cout<<"(2) Stadt\n"; cout<<"(3) Dorf\n"; cout<<"\n"; cout<<"Nummer: "; cin>>da_hin_gehen; return da_hin_gehen; } //--------------------------------------------------------------------------- class landschaft { private: int was_tun; int verlassen; public: int wald(); int wald_durchsuchen(); }; int landschaft::wald() { cout<<"Du bist im Wald\n"; cout<<"\n"; cout<<"\n"; cout<<" BBB\n"; cout<<" BBBBB\n"; cout<<" BBBBBBBBB\n"; cout<<" BBBBBBBBBB\n"; cout<<" BBBBBBBBBBB\n"; cout<<" BBBBBBBBBB\n"; cout<<" BBBBBBBBB\n"; cout<<" BBBBBBBB\n"; cout<< " BBBB\n"; cout<<" BB\n"; cout<<" BB\n"; cout<<" BB\n"; cout<<" BB\ [][] \n"; cout<<" BB\ [][[][] \n"; cout<<" BB\ [][][][][][] \n"; cout<<"||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"; cout<<"\n"; cout<<"(1) Wald durchsuchen\n"; cout<<"(2) Wald Verlassen\n"; cout<<"Was willst du tun: \n"; cin>>was_tun; return was_tun; } int landschaft::wald_durchsuchen() { system("CLS"); cout<<"du durchsuchst den wald\n"; cout<<"(1) Wald wieder verlassen\n", cout<<"\n"; cout<<"Was willst du tun: "; cin>>verlassen; return verlassen; } //--------------------------------------------------------------------------- int main() { spiel r; int start = r.begin(); if (start==1) { wohin_gehen r; int da_hin_gehen=r.umgebung(); if (da_hin_gehen==1) { system("CLS"); landschaft r; int was_tun=r.wald(); if (was_tun==1) { int verlassen=r.wald_durchsuchen(); if (verlassen==1) { wohin_gehen r; r.umgebung(); } } if (was_tun==2) { wohin_gehen r; r.umgebung(); } } } fflush(stdin); getchar(); } //---------------------------------------------------------------------------
-
du brauchst eine schleife
while(input != 2) zb
-
Hallo
Hast du schon einmal den Debugger benutzt? Wenn du nicht weißt, wie das geht, dann gibt es hier einen tollen Artikel für dich im Magazin.
chrische
-
Vorschlag: fang das Ding nochmal von vorne an - das Design ist grauenhaft* (und deine Code-Einrückungen sind noch schlimmer). Und dann schau dir mal in deinem Tutorial das Kapitel über Schleifen an.
* Für jede Funktion, die du verwenden willst, eine eigene Klasse zu definieren - nur um Klassen zu haben - ist sinnlos. Wenn du wirklich mit Klassen arbeiten willst, dann wäre ein Ansatz über Polymorphie geeignet (aber bis du dahin kommst, dauert es noch etwas).
-
Und verabschiede Dich endlich mal von dem Gedanken, "If in Klassen" sei irgendwas besonderes. Eine If-Abfrage ist eine If-Abfrage und funktioniert immer gleich.
-
Kennst du du den Nutzen von Klassen?
Hast du dich mal über Objekorientiere Progarmmierung schlau gemacht?WEnn du keine Schleifen kennst, dann wird dir der Sinn von klassen nich bekannt sein.
-
BorisDieKlinge schrieb:
WEnn du keine Schleifen kennst, dann wird dir der Sinn von klassen nich bekannt sein.
Was haben bitte Schleifen mit Klassen zu tun?
@Bassmaster: Ich wiederhole mich ungern, aber solange die Formatierung so bescheiden bleibt wie bisher (ich hatte dir mal ein Beispiel geschrieben wie man formatieren könnte), werde zumindestens ich (und vermutlich noch einige andere) deinen Code nicht lesen - Da es einfach zu lange dauert dort die Übersicht zu finden.
cu André
-
@ Boris ja kenne ich hab ich alles schon gelesen ...
-
warum verwendest du in deinem beispiel klassen? der nutzen erschließt sich mir bei deinem beispiel nicht wirklich...
lies mal
landschaft r; int was_tun=r.wald();laut vor. das ergibt doch keinen sinn?
-
wieso soll es keinen sinngeben?
es gibt eine landschaft r.
es wird in den wald von r gerufen.
es schallt zurück, was getan werden soll.
es wird in der variable was_tun gespeichert, was getan werden soll.*scnr*

-
Bassmaster schrieb:
Ich starte das spiel dann gehe ich in den Wald ...
Na endlich mal ein Programmierer, der nicht nur vor dem Rechner sitzt

-
sinn schrieb:
wieso soll es keinen sinngeben?
Sinn würde es mehr Ergeben wenn man sagt das Landschaft die Klasse und Wald ein Objekt davon ist.
@Bassmaster: Ich glaube ich weiß was du etwa vorhast, dein Design ist dafür aber wirklich nicht gut. Es mag nicht des Weisheit letzter Schluß sein, aber vielleicht ist der folgende Ansatz für dich passender (Achtung unvollständig), zumal du dann die Abschnitte auch sinnvoll aus einer Datei laden und speichern könntest (dein Spiel wäre dynamischer):
Landschaft ist eine Klasse, jeder Levelabschnitt eine Instanz dieser Klasse. Jeder Abschnitt hat z.B. einen allgemeinen Text ("Du hast einen dunklen Wald betreten") und z.B. einen Detailtext (für Untersuchen), sowie eine Anzahl Auswahlpunkte was man darin machen kann [gut, Funktoren werden noch zu viel für dich sein, aber wenn man weiter spinnt könnte man hier eine Liste mit Möglichkeiten hinterlegen aus dem dynamisch das jeweilige Menü zusammengestellt wird, und bei einer Auswahl der dazugehörige Funktor aufgerufen wird...].
cu André
-
@asc: ich meine mit meiner Ausage "WEnn du keine Schleifen kennst, dann wird dir der Sinn von klassen nich bekannt sein" das man normalerweise erst lernt was schleifen etc. sind bevor mal mit klassen beginnt;) Oder hast du erst gelernt was klassen sind bevor du wusstest was schleifen sind? :xmas2:
-
BorisDieKlinge schrieb:
@asc: ...Oder hast du erst gelernt was klassen sind bevor du wusstest was schleifen sind?...
Nein, aber man kann Klassen auch ohne Schleifen erklären, und ich kannte Azubis die mehr Probleme mit dem Verständnis von Schleifen als mit denen von Klassen hatten. Daher haben für mich die beiden Dinge eben nichts zwingend miteinander zu tun.
cu André