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); }
public void Uaktywnij(Walka element, Pokemon pokemon) { Uaktywnij(pokemon, pokemon); }
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!"); }
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); }