예제 #1
0
    /// <summary>
    /// Zeichnet das Hauptmenü auf die Konsole
    /// </summary>
    public void Show()
    {
        // Main loop
        while (true)
        {
            ConsoleKeyInfo kInfo;
            do
            {
                gr.ClearBuffer();

                // Positioniert das Logo mittig oben in der Konsole
                for (int i = 0; i < SUPERMAN_LOGO.Length; i++)
                {
                    int length = SUPERMAN_LOGO[i].Length;

                    for (int j = 0; j < length; j++)
                    {
                        // Offset 2 damit es nicht ganz oben am Rand ist sondern etwas drunter
                        gr.SetCursorPosition(((gr.CONSOLE_WIDTH - length) / 2 + j), i + 2);

                        if (SUPERMAN_LOGO[i][j] == 'ö')
                        {
                            // Hintergrund vom Superman Logo soll gelb sein
                            gr.WriteToBuffer('#', ConsoleAttribute.FG_YELLOW);
                        }
                        else
                        {
                            // Der Rest rot
                            gr.WriteToBuffer(SUPERMAN_LOGO[i][j], ConsoleAttribute.FG_RED);
                        }
                    }
                }

                // Menüpunkt anzeigen
                for (int i = 0; i < menuAuswahl.Length; i++)
                {
                    gr.SetCursorPosition((gr.CONSOLE_WIDTH - menuAuswahl[i].Length) / 2, (gr.CONSOLE_HEIGHT / 2) + i);
                    if (selectedIndex == i)
                    {
                        // Die Frabe des ausgewählten Menüpunkts ändern
                        gr.WriteToBuffer(menuAuswahl[i], ConsoleAttribute.FG_GREEN);
                    }
                    else
                    {
                        // Standard Farbe
                        gr.WriteToBuffer(menuAuswahl[i], ConsoleAttribute.FG_WHITE);
                    }
                }

                gr.DrawBufferToConsole();

                // Menüabfrage ob hoch oder runter bewegt wird
                kInfo = Console.ReadKey(true);
                if (kInfo.Key == ConsoleKey.UpArrow && selectedIndex > 0)
                {
                    selectedIndex--;
                    if (selectedIndex == 3)
                    {
                        selectedIndex = 2;
                    }
                    else if (selectedIndex == 7)
                    {
                        selectedIndex = 6;
                    }
                }
                else if (kInfo.Key == ConsoleKey.DownArrow && selectedIndex < (menuAuswahl.Length - 1))
                {
                    selectedIndex++;
                    if (selectedIndex == 3)
                    {
                        selectedIndex = 4;
                    }
                    else if (selectedIndex == 7)
                    {
                        selectedIndex = 8;
                    }
                }
            } while (kInfo.Key != ConsoleKey.Enter);


            switch (selectedIndex)
            {
            case 0:     // Normal
                Game game = new Game(gr);
                game.Start(Spielmodus.Normal);
                break;

            case 1:     // Endlos
                Game game2 = new Game(gr);
                game2.Start(Spielmodus.Endlos);

                break;

            case 2:     // Hardcore
                Game game3 = new Game(gr);
                game3.Start(Spielmodus.Hardcore);

                break;

            case 3: break;

            case 4:     // Highscore Normal
                Highscore highscore = new Highscore(gr, Spielmodus.Normal);
                highscore.Draw();

                break;

            case 5:     // Highscore Endlos
                Highscore highscore2 = new Highscore(gr, Spielmodus.Endlos);
                highscore2.Draw();
                break;

            case 6:     // Highscore Hardcore
                Highscore highscore3 = new Highscore(gr, Spielmodus.Hardcore);
                highscore3.Draw();

                break;

            case 7: break;

            case 8:     // Store
                Store store = new Store(gr);
                store.Draw();
                break;

            case 9:     // Werkeinstellungen
                ResetSettings();
                break;

            case 10:
                Environment.Exit(0);
                break;
            }
        }
    }