Jupp. Das ist sogenannter Spaghetticode, vor allem berüchtigt bei BASIC. goto ist größtenteils keine so gute Sache (Ausnahmen bestätigen die Regel). Als ich mit 10 oder so mein erstes kleineres Spiel geschrieben hab war das in BASIC, das war ein Spiel in dem man eine Zahl zwischen 1 und 100 erraten musste und dafür nur eine bestimme Anzahl an Versuchen zur Verfügung hatte. Da sah der Quelltext auch so spaghettimäßig aus.portege_moi said:und zwar: Welche Möglichkeiten gibt es in einem Auswahlmenü außer dem "goto" ?
Wird ja ziemlich unübersichtlich, wenn ich das bei jedem Menü so löse...
Guck mal hier nach "game loop" ("Spielschleife").Dr.Damn Fist said:In meinem derzeitigen Projekt habe ich das mit State-Variablen gelöst, einfach ein variable definieren die speichert in welchem Menü du gerade bist (z.B. hauptmenü 0,Spiel laden 1 USW.). Dann die Darstellungen und Tastaturabfragen mit switchverschachteln.
Das ist jetzt mein Weg, vllt. Auch nicht der beste aber er funktioniert und ich komm damit klar!
Weil portege_moi danach gefragt hat.Dr.Damn Fist said:Hi,
hab ma ne kleine Nebensächlichkeit, warum pocht ihr darauf die Antwort 100% an die Frage anzulehnen, ich meine ist ja irgendwo richtig und logisch. Aber in diesem Fall wäre doch die Variante mit switch die Übersichtlichere und einfachere, somal es sich um einen Anfänger handelt. Die ganzen if-else-Verschachtelungen werden auf Dauer mühsam zu debuggen, vorallem für Anfänger!
Christoph.K said:Programmieren ist eine Tätigkeit, bei der man sehr von großer Kreativität profitieren kann. Viele Leute nennen Programmieren auch eine "Kunst". Das liegt daran, dass es in jeder Turing-Vollständigen Programmiersprache wahrhaftig unendlich viele Möglichkeiten gibt, ein- und dieselben Dinge zu erreichen.
Ich nehme mal an, dass dir "99 Bottles of Beer" (eine beliebte Schleifen-Übung) bereits etwas sagt. Auch hier gibt es in ein- und derselben Programmiersprache unendlich viele Möglichkeiten, den erwünschten Liedtext zu generieren. So kann man -- so man denn möchte -- z.B. die Flaschen auf 30 Schleifen aufteilen oder einfach ausschließlich print-Statements und gar keine Schleifen verwenden. Der ausgegebene Text ist dann zwar immer der gleiche, aber manche Implementationen sind schneller geschrieben, einfacher wartbar, effizienter. Je mehr Kreativität man in das Programmieren einfließen lässt, desto höher die Wahrscheinlichkeit, dass der am Enden eingeschlagene Lösungsweg möglichst nahe am imaginären Optimum liegt.
Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist). Früher oder später, sobald du das Grundlegendste verinnerlicht hast, wirst du allerdings durch Logik auch solche Beispielquellcodes verstehen, die du zuvor ganz einfach nicht verstehen konntest. Viele Dinge in diesen Beispielquellcodes wirst du erst einmal nach wie vor nicht verstehen, aber dadurch, dass dir dann die grundlegendsten Dinge in Fleisch und Blut übergegangen sein werden, wirst du automatisch mehr Hirn-Rechenleistung für diese Dinge übrighaben. So kannst du sie besser verstehen und in einem iterativen Prozess mehr und mehr dessen verinnerlichen, das dir jetzt noch nicht klar ist.
Wenn du solche Dinge nicht nur bemerkst, sondern auch behandelst, dann bist du auf einem sehr guten Weg!portege_moi said:Ja ich weiß das bei meinem Stil echt was zu tun ist...
Tu das! Damit hilfst du am Ende vielleicht sogar auch anderen Programmieranfängern, die irgendwann mal dieses Thema hier lesen.portege_moi said:Werd mich sicher bald mit meinem nächsten Problem melden![]()
Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist).
Schnatterplatsch said:Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist).
Das wäre folgendes Szenario: Anstatt mir die Visitenkarte eines Großraumbüros geben zu lassen, in dem ich mit einem Mitarbeiter Kontakt aufnehmen will, erstelle ich mir eine exakte Kopie des Hochhauses in dem das Büro ist, in dem der Typ hockt samt dem Typen selber und stells mir in den Garten.![]()
"Objektorientiertes Kochen - wie Sie beim Zubereiten von Reis eine Menge Ressourcen sparen"Thrake said:Schnatterplatsch said:Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist).
Das wäre folgendes Szenario: Anstatt mir die Visitenkarte eines Großraumbüros geben zu lassen, in dem ich mit einem Mitarbeiter Kontakt aufnehmen will, erstelle ich mir eine exakte Kopie des Hochhauses in dem das Büro ist, in dem der Typ hockt samt dem Typen selber und stells mir in den Garten.![]()
was Schnatterplatsch damit sagen will und da gebe ich ihm vollkommen recht: Zeiger sind wichtig bei C++. Ich nutze diese nur noch... Ich initialisiere kaum noch irgendwelche Objekte, sonder ich erstelle einen Zeiger, der auf ein inititialisiertes Objekt zeigt.