public Miasto(Bohater bohater, Ekwipunek plecak, Bron bron, Pancerz pancerz) { int indeks = 0; bool wyjdz = false; do { Console.Clear(); Rysuj_logo rysuj = new Rysuj_logo(15, 10); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Ramka.Rysuj_ramke(0, 0, 45, 177); Ramka.Rysuj_ramke(140, 0, 45, 37); Ramka.Rysuj_ramke(0, 35, 10, 139); Ramka.Rysuj_ramke(144, 18, 9, 28); Console.SetCursorPosition(150, 15); Console.Write("Dostępne Lokacje:"); Console.SetCursorPosition(70 - (bohater.Nazwa.Length + 12) / 2, 36); Console.Write("Statystyki: {0}", bohater.Nazwa); Console.SetCursorPosition(10, 38); Console.Write("Plecak: Poziom {0}", plecak.Poziom_plecaka); Console.SetCursorPosition(10, 39); Console.Write("Pancerz: {0} (Poziom {1})", plecak.Pancerz, plecak.Poziom_Pancerza); Console.SetCursorPosition(10, 40); Console.Write("Bron: {0} (Poziom {1})", plecak.Bron, plecak.Poziom_broni); Console.SetCursorPosition(10, 41); Console.Write("Liczba potionów: {0}/{1}", plecak.Ile_potionow, plecak.Ile_max_potionow); Console.SetCursorPosition(10, 42); Console.Write("Dostępne złoto: {0}/{1}", plecak.Kasa, plecak.Max_kasa); Console.SetCursorPosition(72, 38); Console.Write("Życie:"); Console.SetCursorPosition(50, 39); Console.Write("0"); Console.SetCursorPosition(100, 39); Console.Write("{0}", bohater.Max_zycie); Console.SetCursorPosition(116, 38); Console.Write("Pancerz:"); Console.SetCursorPosition(110, 39); Console.Write("0"); Console.SetCursorPosition(130, 39); Console.Write("{0}", pancerz.Bonus_zycia); Console.SetCursorPosition(84, 41); Console.Write("Wytrzymałość:"); Console.SetCursorPosition(50, 42); Console.Write("0"); Console.SetCursorPosition(130, 42); Console.Write("{0}", bohater.Max_stamina); Pasek_postepu.pasek(52, 39, 1, 45, 0, Convert.ToDouble(bohater.Max_zycie), Convert.ToDouble(bohater.Zycie), 1); Pasek_postepu.pasek(112, 39, 1, 15, 0, Convert.ToDouble(pancerz.Bonus_zycia), Convert.ToDouble(pancerz.Zycie_pancerza), 1); Pasek_postepu.pasek(52, 42, 1, 75, 0, Convert.ToDouble(bohater.Max_stamina), Convert.ToDouble(bohater.Stamina), 1); Console.SetCursorPosition(0, 0); Menu Menu = new Menu(5); Menu.UstawElement(" Warsztat Kowala ", 0); Menu.UstawElement(" Warsztat Alchemika ", 1); Menu.UstawElement(" Twoja Chata ", 2); Menu.UstawElement(" Kopalnia ", 3); Menu.UstawElement(" Wyjdź z gry ", 4); Menu.Dzialaj(146, 20); indeks = Menu.Indeks_wybranego; switch (indeks) { case 0: { Warsztat_Kowala warsztat_kowala = new Warsztat_Kowala(bohater, plecak, bron, pancerz); break; } case 1: { Warsztat_Alchemika warsztat_alchemika = new Warsztat_Alchemika(bohater, plecak, bron, pancerz); break; } case 2: { Twoja_Chata twoja_chata = new Twoja_Chata(bohater, plecak, bron, pancerz); break; } case 3: { Kopalnia kopalnia = new Kopalnia(bohater, plecak, bron, pancerz); break; } case 4: { wyjdz = true; break; } default: break; } } while (wyjdz == false); }
public Walka(Bohater bohater, Ekwipunek plecak, Bron bron, Pancerz pancerz) { Random rand = new Random(); ConsoleKeyInfo k = new ConsoleKeyInfo(); int pozycja_kursora_Logu = 6; int odliczanie_do_ataku = 0; int czyszczenie_informacji = 0; bool czy_czyslcimy = false; bool czy_atak_gracza = false; bool czy_atak = false; bool czy_konczymy = false; int Szansa_na_atak = 0; int Szansa_na_zmiane_obrony = 0; string[] kierunek = { "góra", "dół", "lewo", "prawo" }; bool czy_lecimy_dalej = false; int poziom = 1; string kierunek_ataku_potwora = "góra", kierunek_bez_obrony_potwora = "góra"; string kierunek_obrony_gracza = "góra", kierunek_ataku_gracza = "góra"; do { Console.Clear(); Potwor potwor = generuj_potwora(poziom); Rysuj_interface(bohater, potwor, bron, pancerz, plecak); while ((bohater.Czy_Zyje == true && potwor.Czy_zyje == true) && czy_konczymy == false) { if (Console.KeyAvailable) { k = Console.ReadKey(); if (k.Key == ConsoleKey.Escape) { czy_konczymy = true; } else if (k.Key == ConsoleKey.W || k.Key == ConsoleKey.S || k.Key == ConsoleKey.A || k.Key == ConsoleKey.D) { switch (k.Key) { case ConsoleKey.W: Wskaznik_ataku.czyszczenie_wskazania_wewn_gracza(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("", "góra", 35, 20, 7); kierunek_obrony_gracza = "góra"; break; case ConsoleKey.S: Wskaznik_ataku.czyszczenie_wskazania_wewn_gracza(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("", "dół", 35, 20, 7); kierunek_obrony_gracza = "dół"; break; case ConsoleKey.A: Wskaznik_ataku.czyszczenie_wskazania_wewn_gracza(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("", "lewo", 35, 20, 7); kierunek_obrony_gracza = "lewo"; break; case ConsoleKey.D: Wskaznik_ataku.czyszczenie_wskazania_wewn_gracza(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("", "prawo", 35, 20, 7); kierunek_obrony_gracza = "prawo"; break; } } else if (k.Key == ConsoleKey.UpArrow || k.Key == ConsoleKey.DownArrow || k.Key == ConsoleKey.LeftArrow || k.Key == ConsoleKey.RightArrow) { switch (k.Key) { case ConsoleKey.UpArrow: Wskaznik_ataku.czyszczenie_wskazania_zewn(105, 20, 7); Wskaznik_ataku.Wskazanie_potwora("góra", "", 105, 20, 7); if (bohater.Stamina >= bron.Zmeczenie - pancerz.Bonus_staminy) { kierunek_ataku_gracza = "góra"; bohater.Zmecznie(bron.Zmeczenie - pancerz.Bonus_staminy); czy_atak_gracza = true; } else { Console.SetCursorPosition(95, 29); Console.Write("Jesteś zbyt wyczerpany!"); czy_czyslcimy = true; } break; case ConsoleKey.DownArrow: Wskaznik_ataku.czyszczenie_wskazania_zewn(105, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("dół", "", 105, 20, 7); if (bohater.Stamina >= bron.Zmeczenie - pancerz.Bonus_staminy) { kierunek_ataku_gracza = "dół"; bohater.Zmecznie(bron.Zmeczenie - pancerz.Bonus_staminy); czy_atak_gracza = true; } else { Console.SetCursorPosition(95, 29); Console.Write("Jesteś zbyt wyczerpany!"); czy_czyslcimy = true; } break; case ConsoleKey.LeftArrow: Wskaznik_ataku.czyszczenie_wskazania_zewn(105, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("lewo", "", 105, 20, 7); if (bohater.Stamina >= bron.Zmeczenie - pancerz.Bonus_staminy) { kierunek_ataku_gracza = "lewo"; bohater.Zmecznie(bron.Zmeczenie - pancerz.Bonus_staminy); czy_atak_gracza = true; } else { Console.SetCursorPosition(95, 29); Console.Write("Jesteś zbyt wyczerpany!"); czy_czyslcimy = true; } break; case ConsoleKey.RightArrow: Wskaznik_ataku.czyszczenie_wskazania_zewn(105, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("prawo", "", 105, 20, 7); if (bohater.Stamina >= bron.Zmeczenie - pancerz.Bonus_staminy) { kierunek_ataku_gracza = "prawo"; bohater.Zmecznie(bron.Zmeczenie - pancerz.Bonus_staminy); czy_atak_gracza = true; } else { Console.SetCursorPosition(95, 29); Console.Write("Jesteś zbyt wyczerpany!"); czy_czyslcimy = true; } break; } } else if (k.Key == ConsoleKey.Spacebar) { if (plecak.Ile_potionow > 0) { Console.SetCursorPosition(20, 29); Console.Write(" "); Console.SetCursorPosition(28, 29); Console.Write("Używasz Potiona"); czy_czyslcimy = true; bohater.Regeneracja_zycia(40); plecak.minus_potion(); } else { Console.SetCursorPosition(20, 29); Console.Write(" "); Console.SetCursorPosition(28, 29); Console.Write("Nie masz Potionów"); czy_czyslcimy = true; } } else { } } if (Szansa_na_zmiane_obrony > rand.Next(5, 95)) { kierunek_bez_obrony_potwora = kierunek[rand.Next(0, 4)]; switch (kierunek_bez_obrony_potwora) { case "góra": { Wskaznik_ataku.Wskazanie_potwora("", "góra", 105, 20, 7); Szansa_na_zmiane_obrony = 0; break; } case "dół": { Wskaznik_ataku.Wskazanie_potwora("", "dół", 105, 20, 7); Szansa_na_zmiane_obrony = 0; break; } case "lewo": { Wskaznik_ataku.Wskazanie_potwora("", "lewo", 105, 20, 7); Szansa_na_zmiane_obrony = 0; break; } case "prawo": { Wskaznik_ataku.Wskazanie_potwora("", "prawo", 105, 20, 7); Szansa_na_zmiane_obrony = 0; break; } default: break; } } if (Szansa_na_atak > rand.Next(1, 100)) { kierunek_ataku_potwora = kierunek[rand.Next(0, 4)]; switch (kierunek_ataku_potwora) { case "góra": { Wskaznik_ataku.czyszczenie_wskazania_zewn(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("góra", "", 35, 20, 7); Szansa_na_atak = 0; czy_atak = true; break; } case "dół": { Wskaznik_ataku.czyszczenie_wskazania_zewn(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("dół", "", 35, 20, 7); Szansa_na_atak = 0; czy_atak = true; break; } case "lewo": { Wskaznik_ataku.czyszczenie_wskazania_zewn(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("lewo", "", 35, 20, 7); Szansa_na_atak = 0; czy_atak = true; break; } case "prawo": { Wskaznik_ataku.czyszczenie_wskazania_zewn(35, 20, 7); Wskaznik_ataku.Wskazanie_Gracza("prawo", "", 35, 20, 7); Szansa_na_atak = 0; czy_atak = true; break; } default: break; } } if (Szansa_na_atak < 100) { Szansa_na_atak += 1; } else { Szansa_na_atak = 100; } if (Szansa_na_zmiane_obrony < 100) { Szansa_na_zmiane_obrony += 10; } else { Szansa_na_zmiane_obrony = 100; } if (czy_atak == true) { Szansa_na_atak = 0; if (kierunek_ataku_potwora != kierunek_obrony_gracza) { odliczanie_do_ataku++; if (odliczanie_do_ataku >= 16) { if (pancerz.Zycie_pancerza > 0) { pancerz.Obrażenia_pancerza(potwor.Obrazenia); } else { bohater.Zadane_obrazenia(potwor.Obrazenia); } odliczanie_do_ataku = 0; czy_atak = false; Console.SetCursorPosition(20, 29); Console.Write(" "); Console.SetCursorPosition(28, 29); Console.Write("Obrona Nieudana!"); czy_czyslcimy = true; Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("{0} {1} atakuje", potwor.Typ, potwor.Nazwa); Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("Obrywasz za {0}!", potwor.Obrazenia); Console.SetCursorPosition(144, pozycja_kursora_Logu++); } } else { odliczanie_do_ataku = 0; czy_atak = false; Console.SetCursorPosition(20, 29); Console.Write(" "); Console.SetCursorPosition(28, 29); Console.Write("Obrona Udana!"); czy_czyslcimy = true; Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("{0} {1} atakuje", potwor.Typ, potwor.Nazwa); Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("Bronisz się!"); Console.SetCursorPosition(144, pozycja_kursora_Logu++); } } if (czy_atak_gracza == true) { if (kierunek_ataku_gracza == kierunek_bez_obrony_potwora) { Console.SetCursorPosition(90, 29); Console.Write(" "); Console.SetCursorPosition(98, 29); Console.Write("Atak Udany!"); czy_czyslcimy = true; potwor.Zadane_obrazenia(bron.Obrazenia_goly); Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("Twój atak ominął gardę"); Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("Zadajesz {0} obrażeń", bron.Obrazenia_goly); Console.SetCursorPosition(144, pozycja_kursora_Logu++); } else { if (bron.Obrazenia_zasloniety > 0) { Console.SetCursorPosition(90, 29); Console.Write(" "); Console.SetCursorPosition(94, 29); Console.Write("Atak w gardę Udany!"); czy_czyslcimy = true; potwor.Zadane_obrazenia(bron.Obrazenia_zasloniety); Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("Twój atak rozbił gardę"); Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("Zadajesz {0} obrażeń", bron.Obrazenia_zasloniety); Console.SetCursorPosition(144, pozycja_kursora_Logu++); } else { Console.SetCursorPosition(90, 29); Console.Write(" "); Console.SetCursorPosition(96, 29); Console.Write("Atak Sparowany!"); czy_czyslcimy = true; Console.SetCursorPosition(144, pozycja_kursora_Logu++); Console.Write("Twój atak nie przeszedł gardy"); Console.SetCursorPosition(144, pozycja_kursora_Logu++); } } } if (czy_czyslcimy == true) { if (czyszczenie_informacji >= 8) { Console.SetCursorPosition(20, 29); Console.Write(" "); Console.SetCursorPosition(90, 29); Console.Write(" "); czyszczenie_informacji = 0; czy_czyslcimy = false; } else { czyszczenie_informacji++; } } if (pozycja_kursora_Logu >= 35) { for (int i = 0; i < 30; i++) { Console.SetCursorPosition(141, 6 + i); Console.WriteLine(" "); pozycja_kursora_Logu = 6; } } Pasek_postepu.pasek(4, 6, 1, 60, 0, Convert.ToDouble(bohater.Max_stamina), Convert.ToDouble(bohater.Stamina), 1); Pasek_postepu.pasek(4, 3, 1, 38, 0, Convert.ToDouble(bohater.Max_zycie), Convert.ToDouble(bohater.Zycie), 1); Pasek_postepu.pasek(54, 3, 1, 10, 0, Convert.ToDouble(pancerz.Bonus_zycia), Convert.ToDouble(pancerz.Zycie_pancerza), 1); Pasek_postepu.pasek(75, 3, 2, 58, 0, Convert.ToDouble(potwor.Max_zycie), Convert.ToDouble(potwor.Zycie), 2); bohater.Regeneracja_staminy(0.25); czy_atak_gracza = false; System.Threading.Thread.Sleep(125); } if (potwor.Czy_zyje == false) { pozycja_kursora_Logu = 6; lup = lup + potwor.Kasa; poziom++; Console.Clear(); Ramka.Rysuj_ramke(60, 12, 15, 60); Console.SetCursorPosition(75, 20); Console.Write("Gotory na następnego potwora?"); Console.SetCursorPosition(75, 22); Console.Write("TAK [ENTER] DO MIASTA [ESC]"); k = Console.ReadKey(); if (k.Key == ConsoleKey.Enter) { czy_lecimy_dalej = true; } if (k.Key == ConsoleKey.Escape) { Console.Clear(); Ramka.Rysuj_ramke(60, 12, 15, 60); Console.SetCursorPosition(82, 16); Console.Write("Wracasz do miasta"); Console.SetCursorPosition(85, 18); Console.Write("ZEBRANY ŁUP"); Console.SetCursorPosition(90 - (Convert.ToString(lup).Length / 2), 20); Console.Write(lup); plecak.Zysk(lup); czy_lecimy_dalej = false; } } if (bohater.Czy_Zyje == false) { Console.Clear(); Ramka.Rysuj_ramke(60, 12, 15, 60); Console.SetCursorPosition(85, 16); Console.Write("!!NIE ŻYJESZ!!"); Console.SetCursorPosition(70, 18); Console.Write("ZOSTAJEZ ZABRANY DO MIASTA I WSKRZESZONY"); Console.SetCursorPosition(78, 20); Console.Write("TRACISZ CAŁY ZEBRANY ŁUP"); Console.SetCursorPosition(90 - (Convert.ToString(lup).Length / 2), 22); Console.Write(lup); Console.ReadKey(); czy_lecimy_dalej = false; } if (czy_konczymy == true) { Console.Clear(); Ramka.Rysuj_ramke(60, 12, 15, 60); Console.SetCursorPosition(82, 16); Console.Write("Wracasz do miasta"); Console.SetCursorPosition(85, 18); Console.Write("ZEBRANY ŁUP"); Console.SetCursorPosition(90 - (Convert.ToString(lup).Length / 2), 20); Console.Write(lup); plecak.Zysk(lup); czy_lecimy_dalej = false; } }while (czy_lecimy_dalej == true); Console.ReadKey(); }