public static void Hauptmenu() { while (true) { Einstellungen.InGame = false; Console.Clear(); ConsoleKeyInfo gedrueckteTaste; //Begrüßungstext oder Game Over Text if (Einstellungen.ErsterStart) { #region Begrüßungs Text Program.WriteAt((Breite / 2) - 21, 3, "╔══════════════════════════════════════════╗", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 21, 4, "║███████╗███╗ ██╗ █████╗ ██╗ ██╗███████╗║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 21, 5, "║██╔════╝████╗ ██║██╔══██╗██║ ██╔╝██╔════╝║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 21, 6, "║███████╗██╔██╗ ██║███████║█████╔╝ █████╗ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 21, 7, "║╚════██║██║╚██╗██║██╔══██║██╔═██╗ ██╔══╝ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 21, 8, "║███████║██║ ╚████║██║ ██║██║ ██╗███████╗║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 21, 9, "║╚══════╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 21, 10, "╚══════════════════════════════════════════╝", ConsoleColor.Red, ConsoleColor.DarkBlue); #endregion } else { #region Game Over Text Program.WriteAt((Breite / 2) - 40, 3, "╔═══════════════════════════════════════════════════════════════════════════════╗", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 40, 4, "║ ██████╗ █████╗ ███╗ ███╗███████╗ ██████╗ ██╗ ██╗███████╗██████╗ ██╗ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 40, 5, "║ ██╔════╝ ██╔══██╗████╗ ████║██╔════╝ ██╔═══██╗██║ ██║██╔════╝██╔══██╗██║ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 40, 6, "║ ██║ ███╗███████║██╔████╔██║█████╗ ██║ ██║██║ ██║█████╗ ██████╔╝██║ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 40, 7, "║ ██║ ██║██╔══██║██║╚██╔╝██║██╔══╝ ██║ ██║╚██╗ ██╔╝██╔══╝ ██╔══██╗╚═╝ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 40, 8, "║ ╚██████╔╝██║ ██║██║ ╚═╝ ██║███████╗ ╚██████╔╝ ╚████╔╝ ███████╗██║ ██║██╗ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 40, 9, "║ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚═╝ ║", ConsoleColor.Red, ConsoleColor.DarkBlue); Program.WriteAt((Breite / 2) - 40, 10, "╚═══════════════════════════════════════════════════════════════════════════════╝", ConsoleColor.Red, ConsoleColor.DarkBlue); #endregion } Einstellungen.ErsterStart = false; #region Menü Auswahlmöglichkeiten Program.WriteAt((Breite / 2) - 16, 13, "╔═══╦═══════════════════════════╗"); Program.WriteAt((Breite / 2) - 16, 14, "║ 1 ║ Neues Spiel ║"); Program.WriteAt((Breite / 2) - 16, 15, "╚═══╩═══════════════════════════╝"); Program.WriteAt((Breite / 2) - 16, 16, "╔═══╦═══════════════════════════╗"); Program.WriteAt((Breite / 2) - 16, 17, "║ 2 ║ Einstellungen ║"); Program.WriteAt((Breite / 2) - 16, 18, "╚═══╩═══════════════════════════╝"); Program.WriteAt((Breite / 2) - 16, 19, "╔═══╦═══════════════════════════╗"); Program.WriteAt((Breite / 2) - 16, 20, "║ X ║ Beenden ║"); Program.WriteAt((Breite / 2) - 16, 21, "╚═══╩═══════════════════════════╝"); #endregion #region Highscores Program.WriteAt((Breite / 2) - 12, 24, "Highscores:"); for (int i = 0; i < Einstellungen.Schlangen.Count; i++) { if (Einstellungen.Schlangen[i].LaengsteLaenge > Convert.ToInt32(Einstellungen.ini.Read("highscore", $"Schlange{i}"))) { Einstellungen.ini.Write("highscore", $"{Einstellungen.Schlangen[i].LaengsteLaenge.ToString()}", $"Schlange{i}"); } Program.WriteAt((Breite / 2) - 12, 25 + i, $"Schlange {i + 1} Highscore: {Einstellungen.ini.Read("highscore", $"Schlange{i}")}", Einstellungen.Schlangen[i].SchlangenFarbe); } #endregion #region Created by Text Program.WriteAt(Breite - 20, Hoehe - 1, "Created by KarlKeu00", ConsoleColor.DarkGray); #endregion gedrueckteTaste = Console.ReadKey(); switch (gedrueckteTaste.Key) { #region X case ConsoleKey.X: case ConsoleKey.Escape: return; #endregion #region 1 case ConsoleKey.D1: case ConsoleKey.NumPad1: Spielfeld.SpielStarten(); break; #endregion #region 2 case ConsoleKey.D2: case ConsoleKey.NumPad2: EinstellungenMenu(); break; #endregion #region Alles andere default: Program.WriteAt(0, 0, " "); Console.Beep(); break; #endregion } } }
static void Main(string[] args) { #region ini-Datei erstellen, wenn sie nicht existiert if (!System.IO.File.Exists($@"{Environment.GetEnvironmentVariable("userprofile")}\Documents\Cs_Console_Snake_Einstellungen.ini")) { Einstellungen.ini.Write("hoehe", "50", "Spielfeld"); Einstellungen.ini.Write("breite", "100", "Spielfeld"); Einstellungen.ini.Write("titel", "Das Schlangenspiel", "Spielfeld"); Einstellungen.ini.Write("anzahlHindernisseSterben", "20", "Spielfeld"); Einstellungen.ini.Write("farbeHindernisseSterben", "Red", "Spielfeld"); Einstellungen.ini.Write("anzahlHindernisseLaengerWerden", "50", "Spielfeld"); Einstellungen.ini.Write("farbeHindernisseLaengerWerden", "DarkGreen", "Spielfeld"); Einstellungen.ini.Write("anzahlHindernisseKuerzerWerden", "10", "Spielfeld"); Einstellungen.ini.Write("farbeHindernisseKuerzerWerden", "DarkBlue", "Spielfeld"); Einstellungen.ini.Write("farbeBegrenzung", "Red", "Spielfeld"); Einstellungen.ini.Write("startPositionX", "50", "Schlange0"); Einstellungen.ini.Write("startPositionY", "25", "Schlange0"); Einstellungen.ini.Write("tasteHoch", "UpArrow", "Schlange0"); Einstellungen.ini.Write("tasteRunter", "DownArrow", "Schlange0"); Einstellungen.ini.Write("tasteLinks", "LeftArrow", "Schlange0"); Einstellungen.ini.Write("tasteRechts", "RightArrow", "Schlange0"); Einstellungen.ini.Write("schlangenFarbe", "Yellow", "Schlange0"); Einstellungen.ini.Write("highscore", "0", "Schlange0"); } #endregion #region Spielfeld vorbereiten Einstellungen.AktuellesSpielfeld = new Spielfeld(); #endregion #region Schlangen einlesen und erstellen (Maximal 10 Schlangen) for (int i = 0; i < 10; i++) //10 Maximale Spieler { if (Einstellungen.ini.KeyExists("startPositionX", $"Schlange{i}") && Einstellungen.ini.KeyExists("startPositionY", $"Schlange{i}") && Einstellungen.ini.KeyExists("tasteHoch", $"Schlange{i}") && Einstellungen.ini.KeyExists("tasteRunter", $"Schlange{i}") && Einstellungen.ini.KeyExists("tasteLinks", $"Schlange{i}") && Einstellungen.ini.KeyExists("tasteRechts", $"Schlange{i}") && Einstellungen.ini.KeyExists("schlangenFarbe", $"Schlange{i}")) { Einstellungen.Schlangen.Add(new Schlange( Convert.ToInt32(Einstellungen.ini.Read("startPositionX", $"Schlange{i}")), Convert.ToInt32(Einstellungen.ini.Read("startPositionY", $"Schlange{i}")), (ConsoleKey)Enum.Parse(typeof(ConsoleKey), Einstellungen.ini.Read("tasteHoch", $"Schlange{i}")), (ConsoleKey)Enum.Parse(typeof(ConsoleKey), Einstellungen.ini.Read("tasteRunter", $"Schlange{i}")), (ConsoleKey)Enum.Parse(typeof(ConsoleKey), Einstellungen.ini.Read("tasteLinks", $"Schlange{i}")), (ConsoleKey)Enum.Parse(typeof(ConsoleKey), Einstellungen.ini.Read("tasteRechts", $"Schlange{i}")), (ConsoleColor)Enum.Parse(typeof(ConsoleColor), Einstellungen.ini.Read("schlangenFarbe", $"Schlange{i}")), i )); } else { break; } } if (Einstellungen.Schlangen.Count < 1) { Environment.Exit(1); } #endregion #region Konsole vorbereiten Console.CursorVisible = false; Console.Clear(); #endregion Spielfeld.Hauptmenu(); }