Beispiel #1
0
        /// <summary>
        /// Vykreslí okno debug a nechá uživatele vybrat co dál.
        /// </summary>
        /// <returns>Rozhodnutí uživatele co  se má dělat.</returns>
        private static DebugAction DrawDebugScreenAndGetAction()
        {
            Console.Clear();
            ConsoleStuffs.DrawFrame();
            ConsoleStuffs.TextPrint("Debug", 2, 2);
            ConsoleStuffs.TextPrint("a - přidat jednoho uživatele do skóre, zavolá metodu Score.AddItemAsTest();", 4, 2);
            ConsoleStuffs.TextPrint("b - naplit data pro skóre s prázdnejma intancema, Score.FillDataWithEmpty();", 5, 2);
            ConsoleStuffs.TextPrint("c - načíst uloženou hru hráče vladis, Saver.Load(''vladis'');", 6, 2);
            ConsoleStuffs.TextPrint("q - odejít z debugu", 7, 2);

            //sem se uloží rozhodnutí uživatele
            ConsoleKeyInfo choice;

            //opakuju do nekonečna, ukončí se příkazem return
            while (true)
            {
                //načtení volby od uživatele
                choice = ConsoleStuffs.ReadKey();

                //rozhodnutí co se vrátí - pokud nic nanejdeme (uživatel stikl blbost) tak opakujeme
                switch (choice.Key)
                {
                case ConsoleKey.A: return(DebugAction.AddSingleScoreRow);

                case ConsoleKey.Q: return(DebugAction.DebugExit);

                case ConsoleKey.B: return(DebugAction.FillWithEmpty);

                case ConsoleKey.C: return(DebugAction.LoadVladisSave);

                default: break;
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Vytvoří obrazovku s hlavním menu a nechá uživatele vybrat co chce dělat.
        /// </summary>
        /// <returns>Mód který chce uživatel spustit.</returns>
        private static MenuChoice MakeMenu()
        {
            //do tohoto se uloží stisknutá klávesa
            ConsoleKeyInfo choice;

            //vykreslení celé nabídky
            Console.Clear();
            ConsoleStuffs.DrawFrame();
            ConsoleStuffs.TextPrint("Linux story", 3, 3);
            ConsoleStuffs.TextPrint("n - nová hra", 8, 8);
            ConsoleStuffs.TextPrint("l - načíst hru", 9, 8);
            ConsoleStuffs.TextPrint("s - skóre", 11, 8);
            ConsoleStuffs.TextPrint("p - příběh", 13, 8);
            ConsoleStuffs.TextPrint("i - info", 14, 8);
            ConsoleStuffs.TextPrint("h - nápověda", 15, 8);
            ConsoleStuffs.TextPrint("q - ukončit hru", 17, 8);

#if (DEBUG)
            ConsoleStuffs.TextPrint("d - debug", 19, 8);
#endif
            //Vykreslení tučňáčka :)
            ConsoleStuffs.DrawTux(50, 15, Global.TuxArgumentFromCommandLine);

            //opakuju do nekonečna, ukončí se příkazem return
            while (true)
            {
                //načtení volby od uživatele
                choice = ConsoleStuffs.ReadKey();

                //rozhodnutí co se vrátí - pokud nic nanejdeme (uživatel stikl blbost) tak opakujeme
                switch (choice.Key)
                {
                case ConsoleKey.N: return(MenuChoice.New);       //nová hra

                case ConsoleKey.L: return(MenuChoice.Load);      //načíst hru

                case ConsoleKey.S: return(MenuChoice.Score);     //skóre

                case ConsoleKey.P: return(MenuChoice.Story);     //příběh

                case ConsoleKey.I: return(MenuChoice.Info);      //informace

                case ConsoleKey.H: return(MenuChoice.Help);      //nápověda

                case ConsoleKey.Q: return(MenuChoice.Quit);      //vypnout

#if (DEBUG)
                case ConsoleKey.D: return(MenuChoice.Debug);       //debug
#endif
                default: break;
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Metoda pro vykreslení okna info, story nebo nápověda. Vytiskne obsah načteného souboru.
        /// </summary>
        private void PrintText()
        {
            Console.Clear();
            ConsoleStuffs.DrawFrame();

            // prochází se pole kde je po řádkách uložený celý info file a vytisknout se jen ty řádky
            //které jsou určitém rozmezí
            int line_for_print = 3;

            for (int i = PageTop; i < PageBottom; i++)
            {
                ConsoleStuffs.TextPrint(Text[i], line_for_print, 5);
                line_for_print++;
            }

            ConsoleStuffs.TextPrint("Pro pohyb v textu použij \"d\" a \"u\", pro návrat stiskni \"q\". ", 28, 2);
        }
Beispiel #4
0
        /// <summary>
        /// Vytvoí okno s nabídkou uloženýc her a vezme volbu od uživatele kterou nahrát.
        /// </summary>
        /// <param name="SaveForLoad">Vrací název světa který se načte.</param>
        /// <returns>True pokud se bude načítat.</returns>
        private static bool DrawLoadMenu(out string SaveForLoad)
        {
            Console.Clear();
            ConsoleStuffs.DrawFrame();
            ConsoleStuffs.TextPrint("Načíst hru", 3, 3);

            //vytvoření listu se jmény uložených her
            List <string> SavedGames = new List <string>();

            //pokud složka neexistuje tak ji vytvořím
            if (!Directory.Exists(@"saves"))
            {
                Directory.CreateDirectory(@"saves");
            }

            //Procházení složky s uloženými hrami, hry se uloží do listu SavedGames
            var SavedFiles = Directory.EnumerateFiles(@"saves/");

            foreach (string SavedFile in SavedFiles)
            {
                //useknutí "saves/" na začátku a ".xml" na konci názvu
                string FileName = SavedFile.Remove(0, 6);
                FileName = FileName.Remove(FileName.Length - 4);
                SavedGames.Add(FileName);
            }

            //vytisknu si uložené hry
            int i = 0;

            foreach (string SavedGame in SavedGames)
            {
                //tisk do tří sloupků
                if (i >= 0 && i < 20)
                {
                    ConsoleStuffs.TextPrint(SavedGame, i + 5, 3);
                }
                else if (i >= 20 && i < 40)
                {
                    ConsoleStuffs.TextPrint(SavedGame, i - 15, 30);
                }
                else if (i >= 40 && i < 60)
                {
                    ConsoleStuffs.TextPrint(SavedGame, i - 35, 60);
                }
                else
                {
                    break;
                }
                i++;
            }
            if (SavedGames.Count == 0)
            {
                ConsoleStuffs.TextPrint("Nebyla nalezena žádná hra.", 5, 3);
            }


            ConsoleStuffs.TextPrint("Pro zadání hry k načtení stiskni \"L\" v opačném případě \"Q\"...", 28, 3);
            //pokud uživatel stiskne L bude se pokračovat dál a bude moct nahrát hru, v opačném případě se načítání ukončí
            bool HaveToLoad = false;

            while (!HaveToLoad)
            {
                switch (ConsoleStuffs.ReadKey().Key)
                {
                case ConsoleKey.L:
                    HaveToLoad = true;
                    break;

                case ConsoleKey.Q:
                    SaveForLoad = "";
                    return(false);

                default: break;
                }
            }
            ConsoleStuffs.TextPrint("                                                                 ", 28, 3);

            //nechám uživatele rozhodnout jaký save chce nahrát
            ConsoleStuffs.TextPrint("Zadej název souboru který chceš nahrát: ", 28, 3);

            do
            {
                ConsoleStuffs.TextPrint("                           ", 28, 43);

                Console.SetCursorPosition(43, 28);
                string ChosenFile = Console.ReadLine();

                foreach (string FileName in SavedGames)
                {
                    if (FileName == ChosenFile)
                    {
                        SaveForLoad = ChosenFile;
                        return(true);
                    }
                }

                ConsoleStuffs.TextPrint("Neplatná volba, pokračuj stiskem entru.", 27, 48);
                Console.ReadLine();
                ConsoleStuffs.TextPrint("                                       ", 27, 48);
            } while (true);
        }
Beispiel #5
0
        /// <summary>
        /// Metoda pro vykreslení celé obrazovky se skóre
        /// </summary>
        private static void DrawScore()
        {
            Console.Clear();
            ConsoleStuffs.DrawFrame();
            ConsoleStuffs.TextPrint("Skóre", 3, 3);

            //ConsoleStuffs.TextPrint("Skóre prozatím není implementováno!", 6, 3);
            int length = Score.ScoreData.Count();

#if (DEBUG)
            for (int i = 0; i < length; i++)
            {
                string name = Score.ScoreData[i].Name;
                if (name == null)
                {
                    name = "Empty name";
                }

                ConsoleStuffs.TextPrint(name, i + 8, 3);
                ConsoleStuffs.TextPrint(Score.ScoreData[i].Lvl.ToString(), i + 8, 20);
                ConsoleStuffs.TextPrint(Score.ScoreData[i].Exp.ToString(), i + 8, 28);
                ConsoleStuffs.TextPrint(Score.ScoreData[i].TuxPower.ToString(), i + 8, 36);
                ConsoleStuffs.TextPrint(Score.ScoreData[i].InstalledServers.ToString(), i + 8, 44);
                ConsoleStuffs.TextPrint(Score.ScoreData[i].Date.ToString(), i + 8, 56);
            }

            ConsoleStuffs.TextPrint("Jméno", 6, 3);
            ConsoleStuffs.TextPrint("Level", 6, 20);
            ConsoleStuffs.TextPrint("Exp", 6, 28);
            ConsoleStuffs.TextPrint("ST", 6, 36);
            ConsoleStuffs.TextPrint("Servery", 6, 44);
            ConsoleStuffs.TextPrint("Datum", 6, 56);
#else
            int CountPrinted = 0;
            for (int i = 0; i < length; i++)
            {
                //nevypíšu záznamy které jsou nulové, lvl je už od začátku 1 a proto když je ve skóre nula tak položka ještě není na světě
                if (Score.ScoreData[i].Lvl != 0)
                {
                    ConsoleStuffs.TextPrint(Score.ScoreData[i].Name, i + 8, 3);
                    ConsoleStuffs.TextPrint(Score.ScoreData[i].Lvl.ToString(), i + 8, 20);
                    ConsoleStuffs.TextPrint(Score.ScoreData[i].Exp.ToString(), i + 8, 28);
                    ConsoleStuffs.TextPrint(Score.ScoreData[i].TuxPower.ToString(), i + 8, 36);
                    ConsoleStuffs.TextPrint(Score.ScoreData[i].InstalledServers.ToString(), i + 8, 44);
                    ConsoleStuffs.TextPrint(Score.ScoreData[i].Date.ToString(), i + 8, 56);

                    CountPrinted++;
                }
            }
            //nějaké krátké info pokud nic nevytisknu = skore není žádné
            if (CountPrinted == 0)
            {
                ConsoleStuffs.TextPrint("Nebyl nalezen žádný záznam!", 6, 3);
            }
            //pokud jsem  něco vytiskl tak tam přidám hlavičku
            else
            {
                ConsoleStuffs.TextPrint("Jméno", 6, 3);
                ConsoleStuffs.TextPrint("Level", 6, 20);
                ConsoleStuffs.TextPrint("Exp", 6, 28);
                ConsoleStuffs.TextPrint("ST", 6, 36);
                ConsoleStuffs.TextPrint("Servery", 6, 44);
                ConsoleStuffs.TextPrint("Datum", 6, 56);
            }
#endif
            //toto je pro návrat do menu, bude se tu čekat tak dlouho dokud se nestikne Q
            ConsoleStuffs.TextPrint("Pro návrat stiskni \"q\" ...", 28, 2);
            while (ConsoleStuffs.ReadKey().Key != ConsoleKey.Q)
            {
                ;
            }
        }
Beispiel #6
0
        /// <summary>
        /// Tato metoda vytvoří hru, je to takvé to okno před zapnutím hry kde se píše jméno hráče.
        /// </summary>
        private static void CreateAndPlayNewGame()
        {
            //vykreslím úvodní info na obrazovku
            Console.Clear();
            ConsoleStuffs.DrawFrame();
            ConsoleStuffs.TextPrint("Nová hra", 3, 3);
            ConsoleStuffs.TextPrint("Zadej své jméno udatný bojovníku: ", 6, 3);

            //sem uložím jméno hráče
            string PlayerName;

            //dokavaď se uživateli nepovede dobře zadat jméno tak ho tu držím, ven se dostanu pomocí break
            while (true)
            {
                //načtu jméno
                PlayerName = Console.ReadLine();

                //čekuju jméno jestli není již použito
                if (Saver.CheckName(PlayerName))
                {
                    //jméno taky musí být max. 15 znaků dlouhé
                    if (PlayerName.Length > 15)
                    {
                        //tohle se vypíše když bude jméno krátké
                        ConsoleStuffs.TextPrint("Bojovníkovo jméno musí být krátké a výstižné!", 10, 3);
                        ConsoleStuffs.TextPrint("Pokračuj stiskem klávesy enter...", 11, 3);
                        Console.ReadLine();
                        ConsoleStuffs.TextPrint("                                             ", 10, 3);
                        ConsoleStuffs.TextPrint("                                 ", 11, 3);
                        ConsoleStuffs.TextPrint("                                   ", 6, 37);
                        Console.SetCursorPosition(37, 6);
                    }
                    //když se dostanu až sem je vše jak má být a můžu pokračovat za while
                    else
                    {
                        break;
                    }
                }
                //vypsání informace pokud je jméno již použito jiným  uživatelem
                else
                {
                    //toto se vypíše pokud je jméno již použito
                    ConsoleStuffs.TextPrint("Toto jméno nelze použít. Již jej nese jiný hrdina!", 10, 3);
                    ConsoleStuffs.TextPrint("Pokračuj stiskem klávesy enter...", 11, 3);
                    Console.ReadLine();
                    ConsoleStuffs.TextPrint("                                                  ", 10, 3);
                    ConsoleStuffs.TextPrint("                                 ", 11, 3);
                    ConsoleStuffs.TextPrint("                                   ", 6, 37);
                    Console.SetCursorPosition(37, 6);
                }
            }
            //nějaké další povídání pokud jsem už úspěšně vytvořil jméno
            ConsoleStuffs.TextPrint("Nyní můžeš začít hrát! Pokračuj stiskem \"S\" Hodně štěstí! ", 10, 3);
            ConsoleStuffs.TextPrint("Pro návrat stiskni \"q\" pro pokračování \"s\" ...", 28, 2);

            //tady držím hráče dokud bude hrát a nebo dokud nezmáčkne Q aby utekl z volby hráče
            while (true)
            {
                //tuten se čte klávesa
                switch (ConsoleStuffs.ReadKey().Key)
                {
                //pokud zmáčknu Q vrátím se do menu
                case ConsoleKey.Q:
                    return;

                //pokud zmáčknu S tak vytvořím novou hru
                case ConsoleKey.S:
                    //v této metodě je hráč držen tak dlouho dokud nedohraje
                    game.MakeNewGame(PlayerName);
                    return;

                default: break;
                }
            }
        }