Пример #1
0
        public static Postac generujPostac(int poziom, Cios[] dostepneCiosy)
        {
            var  rnd          = new Random();
            uint zycie        = (uint)rnd.Next(poziom + 2, 2 * poziom + 5);
            uint wytrzymalosc = (uint)rnd.Next(poziom + 1, 2 * poziom);
            uint sila         = (uint)rnd.Next(1, poziom);
            uint pancerz      = poziom > 5 ? (uint)rnd.Next(1, poziom / 5 + 1) : 0;

            var postac = new Postac(zycie, wytrzymalosc, sila, pancerz);

            // losujemy ciosy dla postaci
            // ilosc bazowana na połowie poziomu
            bool[] wykorzystane = new bool[dostepneCiosy.Length];
            int    i = 0, g = 0;

            while ((i < poziom / 3 + 1) && (g < dostepneCiosy.Length))
            {
                var los = rnd.Next(0, dostepneCiosy.Length);

                // sprawdzam czy cios jest już wykorzystany
                // jeżeli nie, to dodaję go do postaci
                if (!wykorzystane[los])
                {
                    wykorzystane[los] = true;
                    if (dostepneCiosy[los].pobierzKoszt() <= postac.pobierzStatus().wytrzymalosc)
                    {
                        postac.dodajCios(dostepneCiosy[los]);
                        ++i;
                    }
                    ++g;
                }
            }

            return(postac);
        }
Пример #2
0
        public Walka(Postac bohater, Postac przeciwnik, InterfejsGry interfejs)
        {
            this.bohater            = bohater;
            this.maxBohater         = bohater.pobierzStatus().wytrzymalosc;
            this.przeciwnik         = przeciwnik;
            this.maxPrzeciwnik      = przeciwnik.pobierzStatus().wytrzymalosc;
            this.licznikTury        = 1;
            this.interfejs          = interfejs;
            this.przebieg           = new List <string>();
            this.turowaWytrzymalosc = 3;

            this.przebieg.Add("Panie i Panowie!");
            this.przebieg.Add("Na arenie zaczynamy wlasnie nowy pojedynek!");
            this.przebieg.Add("Czy dzielny bohater da sobie tym razem rade?");
            this.przebieg.Add(" ");
            this.przebieg.Add($"=== TURA {this.licznikTury} ===");
        }
Пример #3
0
        public void graj()
        {
            int            wybor = 0;
            ConsoleKeyInfo input;
            var            nastRefresh   = true;
            var            instRefresh   = true;
            var            statusRefresh = true;

            do
            {
                // wyświetlam ekran gry
                this.interfejs.ekranGry(wybor);

                if (statusRefresh)
                {
                    this.interfejs.pasekStatusu(this.bohater.pobierzStatus());
                    statusRefresh = false;
                }

                if (nastRefresh)
                {
                    if (przeciwnik != null)
                    {
                        this.interfejs.oknoNastepnego(
                            przeciwnik.pobierzStatus(),
                            przeciwnik.pobierzCiosy()
                            );
                    }
                    else
                    {
                        this.interfejs.oknoNastepnego();
                    }

                    nastRefresh = false;
                }

                if (instRefresh)
                {
                    this.interfejs.oknoInstrukcji();
                    instRefresh = false;
                }

                // wczytuję wciśnięty klawisz
                input = Console.ReadKey();

                // na podstawie klawisza zmieniam wybór,
                // lub wybieram zaznaczoną opcję
                if (input.Key == ConsoleKey.UpArrow)
                {
                    --wybor;
                }
                else if (input.Key == ConsoleKey.DownArrow)
                {
                    ++wybor;
                }
                else if (input.Key == ConsoleKey.Enter)
                {
                    switch (wybor)
                    {
                    case 0:
                        this.menuDojo();
                        instRefresh = true;
                        nastRefresh = true;
                        break;

                    case 1:
                        przeciwnik = Postac.generujPostac(
                            (int)this.bohater.pobierzStatus().poziom,
                            this.dojo.pobierzCiosy()
                            );
                        nastRefresh = true;
                        break;

                    case 2:
                        if (przeciwnik != null)
                        {
                            var walka = new Walka(this.bohater, this.przeciwnik, this.interfejs);
                            this.przeciwnik = null;
                            walka.rozpocznij();

                            statusRefresh = nastRefresh = instRefresh = true;
                        }
                        break;
                    }
                }

                // zapętlające się menu
                if (wybor < 0)
                {
                    wybor = 3;
                }
                else if (wybor > 3)
                {
                    wybor = 0;
                }
            } while (wybor != 3 || input.Key != ConsoleKey.Enter);
        }