예제 #1
0
        private void WykonajRuch(Pokemon atakujący, Pokemon broniący, Walka walka)
        {
            //if (broniący.Umiejętność.Efekty != null)
            //{
            //    foreach (var efekt in broniący.Umiejętność.Efekty)
            //    {
            //        if (efekt.MożnaAktywować(atakujący, walka))
            //            efekt.Uaktywnij(walka,atakujący);
            //    }
            //}

            atakujący.Atakuj(broniący, walka);
            //var obrazenia = atakujący.ZadajObrażenia(broniący, walka);
            //broniący.Statystyki.Życie -= obrazenia;

            //Console.WriteLine($"{atakujący} używa ruchu {atakujący.OstatniRuch.Nazwa}. Zadaje {(int)obrazenia} obrażeń");

            if (atakujący.OstatniRuch.Efekty != null)
            {
                foreach (var efekt in atakujący.OstatniRuch.Efekty)
                {
                    if (efekt.MożnaAktywować(broniący, null))
                    {
                        efekt.Uaktywnij(broniący, null);
                    }
                }
            }
        }
예제 #2
0
        private void PróbujZabić(Pokemon atakujący, Pokemon broniący, Walka walka)
        {
            if (walka.KoniecWalki)
            {
                return;
            }

            var blokowanieAtaków = new BlokowanieAtaków();

            if (!blokowanieAtaków.ZablokujAtak(atakujący, broniący, walka))
            {
                var obliczCelnośc = new CelowanieRuchami();
                var random        = new Random();

                var celnośćAtakProcent = obliczCelnośc.Traf(walka, atakujący, broniący);
                var procent            = random.Next(0, 99);

                if (celnośćAtakProcent >= procent)
                {
                    WykonajRuch(atakujący, broniący, walka);
                }
                else
                {
                    Console.WriteLine($"{atakujący} używa ruchu {atakujący.OstatniRuch.Nazwa}. Jednak pudłuję");
                }
            }
        }
예제 #3
0
        public void OkreślKolejność(Walka walka)
        {
            var priorytetRuchTrener = walka.Trener.Pokemon.OstatniRuch.Priorytet;
            var priorytetRuchRywal  = walka.Rywal.Pokemon.OstatniRuch.Priorytet;

            if (priorytetRuchRywal == priorytetRuchTrener)
            {
                var szybkośćTrener = walka.Trener.Pokemon.Statystyki.Szybkość;
                var szybkośćRywal  = walka.Rywal.Pokemon.Statystyki.Szybkość;
                if (szybkośćTrener > szybkośćRywal)
                {
                    AtakujePierwszy = walka.Trener.Pokemon;
                    AtakujeDrugi    = walka.Rywal.Pokemon;
                }

                else
                {
                    AtakujePierwszy = walka.Rywal.Pokemon;
                    AtakujeDrugi    = walka.Trener.Pokemon;
                }
            }
            else if (priorytetRuchRywal > priorytetRuchTrener)
            {
                AtakujePierwszy = walka.Trener.Pokemon;
                AtakujeDrugi    = walka.Rywal.Pokemon;
            }
            else
            {
                AtakujePierwszy = walka.Rywal.Pokemon;
                AtakujeDrugi    = walka.Trener.Pokemon;
            }
            return;
        }
예제 #4
0
 public void Atakuj(Pokemon atakowany, Walka walka)
 {
     AktywujBonusy(atakowany);
     _atakujeSkurczybyk.OnNext(new PokemonAtakuje
     {
         Nazwa       = Name,
         KogoAtakuje = atakowany.Name,
         NazwaRuchu  = OstatniRuch.Nazwa,
         Obrażenia   = ZadajObrażenia(atakowany, walka)
     });
 }
예제 #5
0
        public void Start(Walka walka)
        {
            walka.Trener.Pokemon.WybierzRuch(walka);
            walka.Rywal.Pokemon.WybierzRuch(walka);
            OkreślKolejność(walka);
            InitTuraEfekt(AtakujePierwszy);
            InitTuraEfekt(AtakujeDrugi);

            PróbujZabić(AtakujePierwszy, AtakujeDrugi, walka);
            PróbujZabić(AtakujeDrugi, AtakujePierwszy, walka);
        }
예제 #6
0
 public double ZadajObrażenia(Pokemon rywal, Walka walka)
 {
     if (OstatniRuch.Rodzaj == "Specjalny")
     {
         return(Wzory.WzórNaSpAtak(rywal, this, OstatniRuch));
     }
     else if (OstatniRuch.Rodzaj == "Fizyczny")
     {
         return(Wzory.WzórNaAtak(rywal, this, OstatniRuch));
     }
     else
     {
         return(0);
     }
 }
예제 #7
0
        public Ruch WybierzRuch(Walka walka)
        {
            Ruch ruch;

            if (OstatniRuch == null)
            {
                ruch = Ruchy.FirstOrDefault();
            }
            else
            {
                var index = Ruchy.IndexOf(OstatniRuch);
                index = index + 1;
                if (index > 3)
                {
                    index = 0;
                }
                ruch = Ruchy.Skip(index).FirstOrDefault();
            }
            OstatniRuch = ruch;
            return(ruch);
        }
예제 #8
0
 private void ZakończWalke(Pokemon przegrany, Pokemon wygrany, Walka walka)
 {
     walka.KoniecWalki = true;
     Console.WriteLine($"{przegrany} Pada na ziemie. Wygrywa {wygrany}");
 }