Problem mit Konsolen Spiel
-
Was bedeutet denn der Satz CStoll:
Wie gesagt, am Ende der Schleife behalten alle Variablen ihren Wert - auch 'links' (das im vorigen Schleifendurchlauf während des 'if(wohin==3)'-Blocks auf 4 gesetzt wurde).
Was meinst du damit das die Variaböen ihren Wert behalten

-
Genau das, was ich gesagt habe - du gehst als erstes in den Dungeon und auf dem Weg werden wohin=3 (gehe ins Dungeon), links=4 (gehe nach links), wahl=5 (Angriff) etc. gesetzt und du schließlich eingeächert, danach beginnt die Schleife wieder von vorne und wohin=1 (gehe ins Haus), verlassen=1 (durchsuchen) und verlassen=2 (Haus verlassen) gesetzt. Der Block "if(wohin==3) wird übersprungen und die Abfrage "if(links==4)" ist immer noch gültig (links wurde seit dem letzten Schleifendurchlauf nicht mehr angefasst) -> und schon wirst du wieder angegriffen.
-
Muss man dann da verschiedene Schleifen benutzen oder wie geht das ?

-
Wahrscheinlich reicht es schon, eine einzelne Variable durchgängig zu verwenden - aber wie ich schon mehrfach versucht habe zu erklären, solltest du das gesamte Programm besser strukturieren. (du verlierst ja schon bei drei "Räumen" (Haus, Dungeon, Kampf) den Überblick, wie soll das erst werden, wenn das Spiel umfangreicher wird?)
-
Okay ich versuchs mal besser zu Strukturieren
-
Ich hab es jetzt mal eingerückt aber was genau müsste ich denn dann da jetzt verändern

#include <iostream> #include <stdlib.h> using namespace std; int main() { int start; int wohin; int verlassen; int links; int wahl; int angriff; int userfertigkeit; int pc; int rezz; int flucht; cout<<"(1) Spiel Starten\n"; cin>>start; switch(1) do { { case 1: system("CLS"); cout<<"Wohin willst du gehen ? 1= Haus ,3= Dungeon\n"; cin>>wohin; //--------------------BEREICH FÜR DAS HAUS !!!!!-------------------------------------------------// } if (wohin==1) { cout<<"Du bist jetzt im Haus\n"; cout<<"1 Haus durchsuchen\n"; cout<<"2 Haus Verlassen\n"; cin>>verlassen; } if (1==verlassen) { system("CLS"); cout<<"Du hast 100 Goldmuenzen gefunden =) druecke (2) um das Haus wieder zu verlassen\n"; cin>>verlassen; } //-----------------ENDE VOM BEREICH FÜR DAS HAUS -----------------------------------------------------// //--------------------BEREICH FÜR DEN DUNGEON!!!!!-------------------------------------------------// if (wohin==3) { system("CLS"); cout<<"Du bist jetzt im Dungeon\n"; cout<<"Woher willst du gehen 4 = Links\n"; cin>>links; } //-----------------ENDE VOM BEREICH FÜR DEN DUNGEON ----------------------------------------------------// //-----------------------------Bereich für Angriff und Flucht ----------------------------------------// if (links==4) { system("CLS"); cout<<"Du wirst angegriffen !!! 5 = Angriff, 6 = Flucht\n"; cin>>wahl; } //-----------------------------Bereich für Angriff ------------------------------------------------------// if (wahl==5) { system("CLS"); cout<<"Waehle deine Angriffsfertigkeit aus:\n"; cout<<"1 Kugelblitz\n"; cout<<"2 Feuerball\n"; cin>>userfertigkeit; srand ( time (NULL) ); pc = rand()%1+1; cout<<"Du hast die Fertigkeit"<<userfertigkeit<<"gewaehlt\n"; cout<<"Der Gegner hat die Fertigkeit"<<pc<<"gewaehlt\n\n"; } //------------------------------------Bereich für Kampf-------------------------------------------------// if (userfertigkeit==1 && pc==1) { cout<<"Du hast den Gegner zwar besiegt konntest aber leider seinem\n" <<"Kugelblitz nicht mehr ausweichen. Druecke 2 und bestaetige mit enter\n" <<"um wieder belebt zu werden\n"; cin>>rezz; } //------------------------------------ENDE VON BEREICH FÜR KAMPF ------------------------------------------------// //---------------------------- BEREICH FÜR FLUCHT ---------------------------------------------------------------------// if (wahl==6) { cout<<"Druecke die 7 und bestaetige mit Enter um zu fliehen\n"; cin>>flucht; } //---------------------------- ENDE VON BEREICH FÜR FLUCHT ---------------------------------------------------------------------// } while(verlassen==2); system("PAUSE"); }
-
Bassmaster schrieb:
Ich hab es jetzt mal eingerückt aber was genau müsste ich denn dann da jetzt verändern

Mal davon abgesehen das es ziemlich grausam eingerückt wurde, bedeutet anders strukturieren nicht nur das Erscheinungsbild zu verändern sondern den Programmfluß anzupassen (Ausgliederung in unterschiedliche Funktionen/Methoden...).
Ganz davon abgesehen: Was soll das bitte sein?
switch(1) do { { case 1:Sorry, aber ich habe grad nicht die Zeit um dir hier große Beispiele zu liefern, aber ein paar Regeln zur besseren Lesbarkeit kann ich dir kurz mitgeben:
Ein paar übliche Einrückformen:
int main { // ... int wohin; // ... switch(wohin) { case 1: //... break; default: //... break; } } int main { // ... int wohin; // ... switch(wohin) { case 1: //... break; default: //... break; } } int main { // ... int wohin; // ... switch(wohin) { case 1: //... break; default: //... break; } }Unabhängig davon wie du dein Programm schreibst solltest du einen Stil finden, der das Lesen erleichtert. Den damit findet man auch Fehler besser (Hier kann man sehr leicht sehen welcher Code zusammen gehört).
cu André
-
Bassmaster schrieb:
Ich hab es jetzt mal eingerückt aber was genau müsste ich denn dann da jetzt verändern

Erstens: Die Einrückung ist ja grauenhaft (ja, man könnte stundenlang darüber diskutieren, wie die optimale Einrückung aussieht - aber deine ist alles andere als optimal).
Zweitens: Fang am besten nochmal ganz bei Null an. Die Funktion "aktion()", die ich vorhin gepostet habe, wäre eventuell ein Ansatzpunkt.
-
Kennt jemand ein Tutorial wo genau beschrieben steht was diese ganzen Sachen bedeuten?
struct situation { string beschreibung; vector<pair<string,situation*> > folgende; }; situation* aktion(const situation& aktuell) { int sel; cout<<aktuell.beschreibung<<endl; for(int i=0;i<aktuell.folgende.size();++i) cout<<i+1<<" - "<<aktuell.folgende[i].first<<endl; cin>>sel; return aktuell.folgende[sel-1].second; }
-
alla hier: http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index
is doch net so schwer!

-
Zu den Bestandteilen der STL habe ich im Magazin einiges geschrieben, der Rest ist kurz erkärt:
Das struct "situation" beschreibt eine Auswahlmöglichkeit im Spiel - eine kurze Beschreibung und eine Liste von möglichen Handlungsalternativen (mit entsprechenden Folge-Situationen). Die Funktion "aktion()" erklärt dem Benutzer, wo er steht und was er machen kann und liefert dann die Folgesituation seiner gewählten Handlung zurück.Das kannst du dann im Hauptprogramm verwenden, indem du für jede Raum des Spiels eine situation anlegst und geeignet verlinkst (NULL-Zeiger stehen dabei für "du bist tot"-Situationenund) anschließend per
situation* akt = /* insert start */; while(akt != NULL) akt = aktion(*akt);das Spiel loslaufen lässt.
(zufällige Ereignisse umzusetzen ist komplizierter, aber zunächst solltest du mal das Grundprinzip verstanden haben)
-
Ok thx

-
Ich hab bei Suchen eingeben:
Bestandteile der STL
Aber mit den Sachen da konnte ich irgendwie nicht anfangen weil da stand das auch nicht beschrieben wie das mit diesem struct und so geht. Aber bei den Tutorials da sind ja viele drin ich lad mir da einfach mal alle runter und guck ob ich das was finde.
-
Immer wenn ich nach STL suche dann kommen da irgendwelche Sachen mit Templates und so
Das ist das falsche oder ?

-
Klick mal auf den Link in meiner Signatur, dann kommst du recht schnell zu meinen Artikeln.
(und ja, "STL" steht für "Standard Template Library", also ist es nicht verwunderlich, wenn du viel zum Thema Templates findest ;))
-
Ok thx

-
Das bringt mir leider auch nicht mehr ich versteh irgendwie gar net richtig wo für diese STL Sachen da sein ich glaub ich lass es. Aber trotzdem thx für eure bemühungen.
-
naja, dass man die STL in knapp 20 min nicht versteht, sollte wohl klar sein. Vieleicht solltest du doch einmal mit einem grundlagen tutorial anfangen.
-
Ich hab mal n bisschen was aus dem schornboeck tutorial gemacht vielleicht sollte ich das mal bis zum ende machen.
http://tutorial.schornboeck.net/inhalt.htm
Und dann habe ich eben noch was aus dem http://www.volkard.de/vcppkold/inhalt.html Tutorial gemacht aber da fängt der irgendwann mit dem Befehl Bool an ohne den vorher erklärt zu haben

Ich glaub ich besorg mir mal so ein Buch unser Lehrer meinte da gäb es irgendeins für 116 € das wäre dann aber auch wohl ein sehr gutes Buch ich muss mal gucken wie das ganz genau heißt dann besorg ich mir das mal.

-
Oh ich seh gerade auf www.volkard.de das der ein neues Tutorial gemacht hat welches auch aktueller ist das werd ich mir jetzt mal anschauen
