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); }
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} ==="); }
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); }