Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.04.2012, 21:16

C# switch-case Wie geht es nach einem break weiter?

Hallo,

nun bin ich an einem Punkt angekommen wo ich nicht mehr weiter weiß. Ich habe sämtliche Quellen durchforstet, aber bin genauso schlau wie vorher. Es geht um switch-case-Anweisungen.
Ich bin gerade dabei ein Textadventure zu schreiben auf Basis des DOS-Fensters. Das Hauptmenü stelle ich folgendermaßen dar:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TextAdventure
{
    class Programm
    {
        static void Main(string[] args)
        {
            // Benötigte Variable für die Auswahl des Menüs deklarieren
            //
            string Auswahl;     // Variable

            // Hauptmenü darstellen
            //
            Console.WriteLine("Hauptmenü");
            Console.WriteLine("---------");
            Console.WriteLine("(N)eues Spiel");
            Console.WriteLine("(I)nformationen");
            Console.WriteLine("(B)eenden");
            Console.WriteLine();

            // Benutzer abfragen, welchen Punkt er im Hauptmenü auswählen möchte
            //
            Console.WriteLine("Bitte geben Sie Ihre Auswahl ein:");
            Auswahl = Console.ReadLine().ToUpper();

            // Auswahl mittels switch verzweigen
            //
            switch (Auswahl)
            {
                case "N":
                    {
                        Console.Clear();
                        Console.WriteLine("Ein neues Spiel wird gestartet.");
                        Console.ReadLine();
                        
                    } break;

                case "I":
                    {
                        Console.Clear();
                        Console.WriteLine("Informationen");
                        Console.WriteLine("-------------");
                        Console.ReadLine();
                    } break;

                case "B":
                    {
                        Console.Clear();
                        Console.WriteLine("Spiel wird nun geschlossen.");
                        Console.WriteLine("Vielen Dank für die Benutzung.");
                        Console.ReadLine();
                    } break;

                // Wenn etwas anderes eingegeben wird als vorgesehen,
                // dann Fehlermeldung ausgeben und Programm schließen
                //

                default:
                    {
                        Console.WriteLine("Falsche Eingabe.");
                        Console.WriteLine("Das Programm wird nun geschlossen.");
                        Console.ReadLine();
                    } break;

            }

        
        }

        
    }

    
}


Ich stelle es statt mit If, mit switch-case dar, was ja nicht weiter schlimm ist. Ich weiß nur jetzt nicht wie ich mit dem break verfahren soll. Soll ich meinen gesamten Spielcode nun VOR das break setzen, wo das Neue Spiel gestartet wird oder irgendwie danach?? Ich weiß echt jetzt nicht mehr weiter. Ich habe vieles probiert, aber nach dem break komme ich nicht weiter voran.

Ich hoffe das ich Hilfe finde.

MfG David

FSA

Community-Fossil

  • Private Nachricht senden

2

14.04.2012, 21:36

Ich kann nicht ganz genau erkennen was dein Ziel ist :huh:

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

3

14.04.2012, 21:41

Nach dem break geht es direkt hinter dem ganzen switch-Block weiter.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

4

14.04.2012, 22:48

Danke für die Antwort. Jetzt klappt es erstmal wenigstens mit dem weitercoden,habe da vorhin etwas falschen Ansatz gehabt. Aber eins versteh ich nicht. Wenn es nach dem break weitergeht, dann kann ich doch nicht einfach den Spielcode schreiben. Denn wenn ich z.B. auf Info gehe, dann würde ja der Code auch da ausgeführt werden. Kann man dies irgendwie umgehen? Soll ich da vielleicht eine if-Anweisung reinsetzen nach dem switch-Block? Oder gibt es eine andere Lösung, so dass der eigentliche Code NUR nach dem Neuen Spiel starten ausgeführt wird und nicht nach der Info Auswahl?

MfG David

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

5

14.04.2012, 23:01

Das ist leicht zu lösen!

Du fügst deiner Anwendung einfach eine Variable hinzu:

C-/C++-Quelltext

1
bool bGameStarted = false;
Die Variable kann natürlich auch einen anderen Namen haben... ;)

Der ganze Code des Menüs wird dann in eine while-Schleife gepackt, die folgendermaßen aussehen sollte:

C-/C++-Quelltext

1
2
3
4
5
while(!bGameStarted){
    [...] // Menü
}

// Spielcode

Falls nun ein neues Spiel gestartet werden soll, muss die Schleife unterbrochen werden, was mit der bool-Variable leicht zu lösen ist:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
case "N":
    Console.Clear();
    Console.WriteLine("Ein neues Spiel wird gestartet.");
    Console.ReadLine();

    bGameStarted = true; // Schleife unterbrechen
                        
    break;

Bei der Infoanzeige ändert sich nichts, da der Benutzer danach durch die Schleife wieder ins Hauptmenü kommt! Genauso bei einer fehlerhaften Eingabe!

Beim Spiel beenden solltest du das break durch ein return ersetzen, da das Programm so aus der Main-Funktion springt und somit beendet ist!

Mfg Harry222

6

14.04.2012, 23:26

Hallo Harry,

vielen vielen Dank, jetzt hat es geklappt und kann mich nun dem eigentlichen Spielablauf witmen. Vielen Dank auch an alle anderen die mir geantwortet haben. Hätte nicht gedacht das die doch so einfach ist, wäre glaube nicht draufgekommen eine Variable neu zu setzen und eine Schleife.

Also, nochmals vielen Dank!!

MfG David

Werbeanzeige