Exemplo n.º 1
0
        private void karta_Click(object sender, EventArgs e)
        {
            var card = (sender as CardGraphics)?.Owner;

            var walka = new Walka();

            PrepareEnemyCardToFight(kartap);
            walka.Zmiana(kartag, card);
            counter++;


            if (kartag.CombatValue > kartap.CombatValue)
            {
                graczScore++;
            }

            if (graczScore >= 3 && counter == 7)
            {
                TryAgain.Hide();
                NextLvl.Show();
            }
            else if (graczScore < 3 && counter == 7)
            {
                NextLvl.Hide();
                TryAgain.Show();
            }
        }
        public void PowinienObliczyćCelność()
        {
            var pudła = 30;
            var celne = 100;

            var walka = new Walka()
            {
            };
            var celujący = new Pokemon("Rajczu")
            {
                Statystyki = new Statystyki {
                    Szybkość = 1776
                },
                Ruchy = new List <Ruch> {
                    new Ruch {
                        Celność = 70
                    }, new Ruch {
                        Celność = 50
                    }
                }
            };

            var unikający = new Pokemon("Venusaur")
            {
                Statystyki = new Statystyki {
                    Szybkość = 1036
                }
            };

            celujący.WybierzRuch(walka);

            var celowanie       = new CelowanieRuchami();
            var trafilNieTrafił = new List <bool>();
            var random          = new Random();
            var procent         = celowanie.Traf(walka, celujący, unikający);

            for (var i = 0; i < 130; i++)
            {
                var proce = random.Next(0, 99);
                if (proce <= procent)
                {
                    trafilNieTrafił.Add(true);
                }
                else
                {
                    trafilNieTrafił.Add(false);
                }
            }

            var trafił    = trafilNieTrafił.Count(x => x);
            var nieTrafił = trafilNieTrafił.Count(x => x == false);


            trafił.Should().BeInRange(celne - 8, celne + 8);
            nieTrafił.Should().BeInRange(pudła - 7, pudła + 3);
        }
        public bool ZablokujAtak(Pokemon atakujący, Pokemon broniący, Walka walka)
        {
            foreach (var efekt in atakujący.Efekty)
            {
                if (efekt.RodzajEfektu == RodzajEfektu.BlokującyRuch)
                {
                    if (efekt.Działa())
                    {
                        Console.WriteLine($"{atakujący} jest pod wpływem efektu: {efekt.Nazwa} nie może wykonać ruchu");
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemplo n.º 4
0
 public void Uaktywnij(Walka element, Pokemon pokemon)
 {
     Uaktywnij(pokemon, pokemon);
 }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            var pantibian = new Trener
            {
                Wszechstronny = 0.23,
                Pokemon       = new Pokemon("Rajczu")
                {
                    Poziom       = 100,
                    Odporności   = RajczuOdporności,
                    Przywiązanie = 0.25,
                    Typ          = Typy.Elektryczny,
                    Shiny        = true,
                    Umiejętność  = new Umiejętność()
                    {
                        //Nazwa = "Static", Efekty = new List<EfektZdażenie<Pokemon, Walka>> { new NałożenieParaliżu { SzansaNaEfekt = 30, PrzyKontakcie = true } }
                    },
                    Statystyki = new Statystyki
                    {
                        SpAtak   = 1650,
                        Obrona   = 1000,
                        SpObrona = 1000,
                        Szybkość = 1200,
                        Życie    = 6000
                    },
                    Ruchy = new List <Ruch>
                    {
                        new Ruch
                        {
                            Nazwa   = "Thunder",
                            Celność = 70,
                            Moc     = 110,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Elektryczny,
                            Efekty  = new List <EfektZdażenie <Pokemon, Pokemon> > {
                                new NałożenieParaliżu {
                                    SzansaNaEfekt = 30
                                }
                            }
                        },
                        new Ruch
                        {
                            Nazwa   = "Zap Cannon",
                            Celność = 50,
                            Moc     = 120,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Elektryczny,
                            Efekty  = new List <EfektZdażenie <Pokemon, Pokemon> > {
                                new NałożenieParaliżu {
                                    SzansaNaEfekt = 100
                                }
                            }
                        },
                        new Ruch
                        {
                            Nazwa   = "Focus Blast",
                            Celność = 70,
                            Moc     = 120,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Walczący
                        },
                        new Ruch
                        {
                            Nazwa   = "Thunderbolt",
                            Celność = 100,
                            Moc     = 95,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Elektryczny,
                            Efekty  = new List <EfektZdażenie <Pokemon, Pokemon> > {
                                new NałożenieParaliżu {
                                    SzansaNaEfekt = 10
                                }
                            }
                        }
                    }
                }
            };
            var brains = new Trener
            {
                Wszechstronny = 0.25,
                Pokemon       = new Pokemon("Empoleon")
                {
                    Poziom       = 100,
                    Odporności   = EmpoleonOdporności,
                    Przywiązanie = 0.25,
                    Shiny        = true,
                    Typ          = Typy.Wodny,
                    Statystyki   = new Statystyki
                    {
                        SpAtak   = 1600,
                        Obrona   = 1200,
                        SpObrona = 1245,
                        Szybkość = 700,
                        Życie    = 8000
                    },
                    Ruchy = new List <Ruch>
                    {
                        new Ruch
                        {
                            Nazwa   = "Hydro Pump",
                            Celność = 80,
                            Moc     = 110,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Wodny
                        },
                        new Ruch
                        {
                            Nazwa   = "Blizzard",
                            Celność = 70,
                            Moc     = 120,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Lodowy
                        },
                        new Ruch
                        {
                            Nazwa   = "Ice Beam",
                            Celność = 95,
                            Moc     = 90,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Lodowy
                        },
                        new Ruch
                        {
                            Nazwa   = "Scald",
                            Celność = 100,
                            Moc     = 80,
                            Rodzaj  = "Specjalny",
                            Typ     = Typy.Wodny
                        }
                    }
                }
            };

            var walka = new Walka
            {
                Trener = pantibian,
                Rywal  = brains
            };

            var potok = walka.Walk.Where(x => x is WalkaZakończona).Subscribe(data => WalkaKoniec(data));

            walka.Rozpocznij();

            Console.WriteLine("Hello World!");
        }
Exemplo n.º 6
0
        public double Traf(Walka walka, Pokemon celujący, Pokemon unikający)
        {
            var efektModyfikator = 1;

            double maxCelność = celujący.OstatniRuch.Celność * 2;
            double minCelność = celujący.OstatniRuch.Celność * 0.4;

            var celność = celujący.Celność;
            var uniki   = unikający.Unik;

            var szybkośćCelujący  = celujący.Statystyki.Szybkość;
            var szybkośćUnikający = unikający.Statystyki.Szybkość;

            var    stosunek    = szybkośćCelujący / szybkośćUnikający;
            double modyfikator = 1;

            if (stosunek > 1 && stosunek < 1.2)
            {
                modyfikator = 1.04;
            }
            if (stosunek > 1.2 && stosunek < 1.4)
            {
                modyfikator = 1.08;
            }
            if (stosunek > 1.4 && stosunek < 1.7)
            {
                modyfikator = 1.1;
            }
            if (stosunek > 1.7 && stosunek < 1.9)
            {
                modyfikator = 1.17;
            }
            if (stosunek > 1.9 && stosunek < 2.2)
            {
                modyfikator = 1.26;
            }
            if (stosunek > 2.2 && stosunek < 2.5)
            {
                modyfikator = 1.31;
            }
            if (stosunek > 2.5 && stosunek < 2.8)
            {
                modyfikator = 1.35;
            }
            if (stosunek > 2.8 && stosunek < 3.1)
            {
                modyfikator = 1.40;
            }
            if (stosunek > 3.1 && stosunek < 3.5)
            {
                modyfikator = 1.49;
            }
            if (stosunek > 3.5 && stosunek < 3.9)
            {
                modyfikator = 1.55;
            }
            if (stosunek > 3.9 && stosunek < 4.4)
            {
                modyfikator = 1.63;
            }
            if (stosunek > 4.4 && stosunek < 5.0)
            {
                modyfikator = 1.81;
            }
            if (stosunek > 5.0 && stosunek < 5.5)
            {
                modyfikator = 1.92;
            }
            if (stosunek > 5.5 && stosunek < 6)
            {
                modyfikator = 2;
            }

            if (stosunek < 1 && stosunek > 0.9)
            {
                modyfikator = 0.96;
            }
            if (stosunek < 0.9 && stosunek > 0.8)
            {
                modyfikator = 0.92;
            }
            if (stosunek < 0.8 && stosunek > 0.7)
            {
                modyfikator = 0.90;
            }
            if (stosunek < 0.7 && stosunek > 0.6)
            {
                modyfikator = 0.83;
            }
            if (stosunek < 0.54 && stosunek > 0.4)
            {
                modyfikator = 0.74;
            }
            if (stosunek < 0.4 && stosunek > 0.37)
            {
                modyfikator = 0.69;
            }
            if (stosunek < 0.37 && stosunek > 0.33)
            {
                modyfikator = 0.65;
            }
            if (stosunek < 0.33 && stosunek > 0.31)
            {
                modyfikator = 0.60;
            }
            if (stosunek < 0.31 && stosunek > 0.28)
            {
                modyfikator = 0.51;
            }
            if (stosunek < 0.28 && stosunek > 0.26)
            {
                modyfikator = 0.45;
            }
            if (stosunek < 0.26 && stosunek > 0.23)
            {
                modyfikator = 0.37;
            }
            if (stosunek < 0.23 && stosunek > 0.19)
            {
                modyfikator = 0.19;
            }
            if (stosunek < 0.19 && stosunek > 0.17)
            {
                modyfikator = 0.8;
            }
            if (stosunek < 0.17 && stosunek > 0.14)
            {
                modyfikator = 0.1;
            }

            var ruchCelność = celujący.OstatniRuch.Celność;
            var procent     = ruchCelność * modyfikator * (celność / uniki);

            if (procent > maxCelność)
            {
                return(maxCelność);
            }
            if (procent < minCelność)
            {
                return(minCelność);
            }

            return(procent);
        }