Textadventure c# console Neustart funktion?


22.09.2023, 12:01

in diesem fall schliesst sich meine konsole sobald ich neustart schreibe

Dultus, UserMod Light   22.09.2023, 11:47

Winforms oder Konsole? In WinForms nutzt du entsprechend nicht Console.ReadLine...

2 Antworten

Kommt auf deinen Code an. Bei der Frage denke ich, dass das ein Anfängerprojekt ist - daher solltest du damit starten, das ganze Zeug in eine Methode zu packen. Du solltest dann mit mehren Untermethoden und Schleifen arbeiten. Ein Textadventure ist nicht so einfach, wie es den Anschein hat, wenn man keine Erfahrung hat.

In deinem Fall reicht dann wohl erstmal eine zusätzliche Abfrage in Richtung:

string text = Console.ReadLine();
if (text == "Neustart")
{
  return;
}

Wenn dann die ganze Funktion in einer while (true) Schleife war, wird die Methode wieder neu ausgeführt und ist am Anfang.

Woher ich das weiß:Berufserfahrung – 💻 Unternehmensberater (Next-Gen-IT, Security & Development)

DenoProgramiert 
Beitragsersteller
 22.09.2023, 11:54

meinst du das ich mein ganzes textadventure in eine while packen soll?

Dultus, UserMod Light   22.09.2023, 12:03
@DenoProgramiert

Das Programm schließt sich, weil du den Code, wie gesagt, nicht in eine eigene Methode geschrieben hast.

Wenn du das stattdessen in eine Schleife setzen möchtest, müsstest du diese auch um deinen Code bauen und anstelle des Returns ein Continue; einbauen.

Du startest es mit "while(true)" und darin kommt dein Code. Wenn jemand Neustart eingibst, merkst du das anhand einer if oder switch Abfrage und führst dann aus:
"Console.Clear()", zum Konsole bereinigen und dann "continue;", womit er wieder an den Anfang der "while" springt. Wenn du die while final am Ende verlassen willst, da sie ja unendlich läuft, kannst du sie mit "break;" unterbrechen und beenden.

Alternativ ginge auch ein rekursiver Aufruf, wo du eine Methode erstellst:

private static void MyTextAdventure()
{
  Console.Clear();
  // Hier dein gesamter Code aus Main
}

Den Code aus Main löschst du dann und fügst stattdessen in Main nur MyTextAdventure() ein.

Wenn du neu starten möchtest, kannst du dann im if oder switch MyTextAdventure() aufrufen und danach unbedingt ein return setzen, da der sonst wieder nach der Methode da weiter macht, was nicht gewollt ist.