Пример #1
0
 // Vypíše panel statistik
 public static void printStats(Stats s)
 {
     Console.Write("Min ve hře:  {0}".PadRight(18), s.minesTotal);
     Console.Write("| Počet kroků: {0}\n", s.steps);
     Console.Write("Min označno: {0}", s.minesFound);
     TUI.printHorizontalBorder();
 }
Пример #2
0
        // Vypíše herní desku s navigací
        public static void printGrid(int n, Cells cells)
        {
            // Šířka (ve znacích) vertikální navigace
            const int indent = 4;

            // Horizontální navigace tabulky
            Console.Write("".PadRight(indent));
            for (int i = 0; i < n; i++)
            {
                // Potřeba dynamického odsazení. Pokud by bylo odsazení pomocí mezer,
                // při více-ciferných číslech by se rozpadlo
                Console.Write("  " + i.ToString().PadRight(2));
            }
            Console.Write("\n\n");

            // Výpis hrací desky
            for (int y = 0; y < n; y++)
            {
                // Hrana tabulky nad každým řádkem
                Console.Write("".PadRight(indent));
                TUI.printHorizontalBorder(n);

                for (int x = 0; x < n; x++)
                {
                    // Vertikální navigace tabulky
                    if (x == 0)
                    {
                        Console.Write(y.ToString().PadRight(indent));
                    }

                    // Hodnoty tabulky
                    TUI.printCell(cells.get(x, y), n);
                }
                Console.Write("\n");
            }

            // Spodní hrana tabulky
            Console.Write("".PadRight(indent));
            TUI.printHorizontalBorder(n);
        }
Пример #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Zadejte velikost mřížky.");
            Console.WriteLine("Volte čísla v rozsahu {0} - {1}", Minesweeper.Minesweeper.minGridSize, Minesweeper.Minesweeper.maxGridSize);
            Console.WriteLine("Pro hodnotu 9 bude velikost mřížky 9x9");
            int size = 0;

            do             // Uživatel se musí trefit do povoleného rozsahu velikostí
            {
                try
                {
                    Console.Write("Velikost [{0}]: ", Minesweeper.Minesweeper.defaultGridSize);
                    size = Convert.ToInt32(Console.ReadLine());
                }
                catch
                {
                    size = Minesweeper.Minesweeper.defaultGridSize;
                }
            } while ((size < Minesweeper.Minesweeper.minGridSize) || (size > Minesweeper.Minesweeper.maxGridSize));
            Console.WriteLine();

            // Vytvoříme a vygenerujeme herní desku
            Minesweeper.Minesweeper m = new Minesweeper.Minesweeper();
            m.size = size;
            m.generateMines();

            char action = ' ';

            do             // Uživatel prozkoumává herní desku a označuje miny, dokud neřekne, že má hotovo
            {
                // Nejdříve se vyčistí obrazovka
                Console.Clear();

                // Vypíšeme statistiky
                TUI.printStats(m.stats);

                TUI.printGrid(m.size, m.cells);
                Console.WriteLine();
                Console.WriteLine("Na kterou hodnotu chcete kliknout?");
                Console.WriteLine("Zadejte operaci následovanou dvěma čísly oddělenýmy mezerou.");
                Console.WriteLine("Operace jsou:\n s (stoupnout), m (označit minu), u (zrušit označení), q (vyhodnotit).");
                Console.WriteLine("První číselná hodnota reprezentuje osu X, druhá osu Y");
                Console.Write("\nVstup: ");

                // Parsujeme vstup [1/2]
                int x = 0, y = 0;
                try
                {
                    string[] input = Console.ReadLine().Split();
                    action = char.Parse(input[0]);

                    // Pokud uživatel řekl, že už má hotovo
                    if (action == 'q')
                    {
                        break;
                    }

                    // Parsujeme vstup [2/2]
                    x = int.Parse(input[1]);
                    y = int.Parse(input[2]);
                }
                catch { };

                // Pokud uživatel zadal neexistující souřadnice
                if (m.cells.get(x, y) == null)
                {
                    TUI.pressAnyKeyToContinue(
                        "\nNeplatné souřadnice.\n"
                        + "Pokračujte stiskem libovolné klávesy ..."
                        );
                    continue;
                }

                // Pokud by chtěl uživatel provést na prozkoumaných souřadnicích
                if (m.cells.get(x, y).value >= 0)
                {
                    TUI.pressAnyKeyToContinue(
                        "\nNelze provést operaci na daných souřadnicích. Jsou již prozkoumané.\n"
                        + "Pokračujte stiskem libovolné klávesy ..."
                        );
                    continue;
                }

                // Provedeme požadovanou akci s požadovanými souřadnicemi
                m.action(action, x, y);

                // Pokud uživatel stoupl na minu
                if ((action == 's') && (m.toBeOrNotToBe(x, y)))
                {
                    break;
                }
            } while (true);             // Cyklus je ukončen zevnitř

            TUI.printHorizontalBorder();

            // Pokud uživatel stoupl na minu
            if (action == 's')
            {
                Console.WriteLine("Stoupl jste na minu a umřete za 3... 2... 1...");
                Console.WriteLine("Smůla. Jste mrtvý. Zkuste to znovu :-)");
            }
            else
            {
                // Pokud uživatel označil miny na správných místech
                if (m.foundAllAndOnlyMines())
                {
                    Console.WriteLine("Jste rozený profík! Našel jste všechny miny.");
                }
                else
                {
                    Console.WriteLine("Bohužel jste neoznačil všechny miny správně. Doufejme, že na ně nikdo nešlápne.");
                }
            }
            TUI.pressAnyKeyToContinue("\nStisknutím libovolné klávesy ukončíte program");
        }