// pop-up do wyboru ciosu, przyjmuje listę ciosów bohatera public void okienkoWyboruCiosu(Cios[] listaCiosow, int zaznaczonaOpcja) { const int x = 16; const int y = 6; const int w = 24; Wyswietlanie.prostokat(x, y, w, listaCiosow.Length * 2 + 3); int temp, temp2 = x + w; var kolor = ConsoleColor.White; for (int i = 0; i <= listaCiosow.Length; i++) { temp = y + 1 + i * 2; if (i == zaznaczonaOpcja) { kolor = ConsoleColor.Blue; } if (i < listaCiosow.Length) { Wyswietlanie.pisz(listaCiosow[i].pobierzNazwe(), kolor, x + 1, temp); Wyswietlanie.pisz(listaCiosow[i].pobierzKoszt().ToString(), ConsoleColor.Yellow, temp2 - 6, temp); Wyswietlanie.pisz(listaCiosow[i].pobierzObrazenia().ToString(), ConsoleColor.Red, temp2 - 3, temp); } else { Wyswietlanie.pisz("Powrot", kolor, x + 1, temp); } if (i == zaznaczonaOpcja) { kolor = ConsoleColor.White; } } }
public static void okienko(string tytul, int x, int y, int width, int height) { Wyswietlanie.wyczyscPole(x, y, width, height); var offset = (width - tytul.Length) / 2; Wyswietlanie.prostokat(x, y, width, height); Wyswietlanie.gotoXY(x + offset, y + 1); Console.Write(tytul); Wyswietlanie.gotoXY(x, y + 2); Wyswietlanie.rozdzielacz(width, false); }
public static void wyczyscPole(int x, int y, int width, int height) { for (int i = 0; i < height; i++) { Wyswietlanie.gotoXY(x, y + i); for (int j = 0; j < width; j++) { Console.Write(" "); } } }
// drugie okno pomocnicze dojo. Tutaj możemy wykonywać ćwiczenia, // które podnoszą statystyki bohatera public void oknoCwiczen(Cwiczenie[] listaCwiczen, int zaznaczonaOpcja) { Wyswietlanie.okienko("Cwiczenia na silowni", 40, 3, 80, 30); Wyswietlanie.pisz("Cwiczenie", ConsoleColor.White, 43, 6); Wyswietlanie.pisz("koszt", ConsoleColor.White, 93, 6); Wyswietlanie.pisz("zycie", ConsoleColor.White, 99, 6); Wyswietlanie.pisz("stamina", ConsoleColor.White, 105, 6); Wyswietlanie.pisz("sila", ConsoleColor.White, 114, 6); Wyswietlanie.rozdzielacz(28, true, 92, 5); Wyswietlanie.rozdzielacz(28, true, 98, 5); Wyswietlanie.rozdzielacz(28, true, 104, 5); Wyswietlanie.rozdzielacz(28, true, 112, 5); Wyswietlanie.rozdzielacz(80, false, 40, 7); Wyswietlanie.krzyz(92, 7); Wyswietlanie.krzyz(98, 7); Wyswietlanie.krzyz(104, 7); Wyswietlanie.krzyz(112, 7); int y = 8; var kolor = ConsoleColor.White; for (int i = 0; i <= listaCwiczen.Length; ++i) { if (i == zaznaczonaOpcja) { kolor = ConsoleColor.Blue; } if (i < listaCwiczen.Length) { Wyswietlanie.pisz(listaCwiczen[i].pobierzNazwe(), kolor, 43, y); Wyswietlanie.pisz($"{listaCwiczen[i].pobierzKoszt()}g", kolor, 94, y); uint[] staty = listaCwiczen[i].pobierzStaty(); Wyswietlanie.pisz($"{staty[0]}", kolor, 101, y); Wyswietlanie.pisz($"{staty[1]}", kolor, 108, y); Wyswietlanie.pisz($"{staty[2]}", kolor, 115, y); } else { Wyswietlanie.pisz("Powrot", kolor, 43, y); } if (i == zaznaczonaOpcja) { kolor = ConsoleColor.White; } y += 2; } }
// menu i ekran walki public void ekranWalki(int zaznaczonaOpcja) { Wyswietlanie.okienko("Wybierz akcje", 0, 3, 26, 30); for (int i = 0; i < this.opcjeWalki.Length; ++i) { if (i == zaznaczonaOpcja) { Wyswietlanie.pisz(this.opcjeWalki[i], ConsoleColor.Blue, 3, 7 + 2 * i); } else { Wyswietlanie.pisz(this.opcjeWalki[i], ConsoleColor.White, 3, 7 + 2 * i); } } }
public void oknoInstrukcji() { const int x = 65; Wyswietlanie.okienko("Instrukcja", x, 3, 120 - x, 30); var czytnik = new System.IO.StreamReader(this.sciezkaInstrukcji); string linia; int offsetY = 0; while ((linia = czytnik.ReadLine()) != null) { Wyswietlanie.pisz(linia, ConsoleColor.White, x + 3, 7 + offsetY); offsetY += 1; } czytnik.Close(); }
// główne menu gry a także jej ekran tytułowy // wersja kiedy nie ma żadnego przeciwnika public void ekranGry(int zaznaczonaOpcja) { Wyswietlanie.okienko("Menu glowne", 0, 3, 30, 30); for (int i = 0; i < this.opcjeGry.Length; ++i) { if (i == zaznaczonaOpcja) { Wyswietlanie.pisz(this.opcjeGry[i], ConsoleColor.Blue, 3, 7 + 2 * i); } else { Wyswietlanie.pisz(this.opcjeGry[i], ConsoleColor.White, 3, 7 + 2 * i); } } }
// górny pasek statusu wyświetlający informacje o bohaterze // przyjmuje StatusPostaci public void pasekStatusu(StatusPostaci status) { // TODO: dodatkowe atrybuty przekazywać przez jakiś struct this.info(); Wyswietlanie.prostokat(0, 0, 120, 3); Wyswietlanie.wyczyscPole(1, 1, 118, 1); string tekst = $"Sila:{status.sila}, Pancerz:{status.pancerz}, "; tekst += $"Poziom:{status.poziom}, Doswiadczenie:{status.doswiadczenie}/1000, "; tekst += $"Pkt. Zdol:{status.punktyZdolnosci}, Pieniadze:{status.pieniadze}g"; Wyswietlanie.pisz($"Zycie:{status.zycie}, ", ConsoleColor.Red, 2, 1); Wyswietlanie.pisz($"Wytrzymalosc:{status.wytrzymalosc}, ", ConsoleColor.Yellow); Wyswietlanie.pisz(tekst, ConsoleColor.White); }
// pierwszy z ekranów pomocniczych dojo. Tutaj uczymy się nowych ciosów public void oknoNaukiCiosow(Cios[] listaCiosow, int zaznaczonaOpcja) { Wyswietlanie.okienko("Nauka ciosow", 40, 3, 80, 30); Wyswietlanie.pisz("Nazwa", ConsoleColor.White, 43, 6); Wyswietlanie.pisz("DMG", ConsoleColor.White, 109, 6); Wyswietlanie.pisz("Koszt", ConsoleColor.White, 114, 6); // Wyswietlanie.rozdzielacz(28, true, 80, 5); Wyswietlanie.rozdzielacz(28, true, 107, 5); Wyswietlanie.rozdzielacz(28, true, 113, 5); Wyswietlanie.rozdzielacz(80, false, 40, 7); // Wyswietlanie.krzyz(80, 7); Wyswietlanie.krzyz(107, 7); Wyswietlanie.krzyz(113, 7); int y = 8; var kolor = ConsoleColor.White; for (int i = 0; i <= listaCiosow.Length; ++i) { if (i == zaznaczonaOpcja) { kolor = ConsoleColor.Blue; } if (i < listaCiosow.Length) { Wyswietlanie.pisz(listaCiosow[i].pobierzNazwe(), kolor, 43, y); Wyswietlanie.pisz(listaCiosow[i].pobierzObrazenia().ToString(), kolor, 110, y); Wyswietlanie.pisz(listaCiosow[i].pobierzKoszt().ToString(), kolor, 116, y); } else { Wyswietlanie.pisz("Powrot", kolor, 43, y); } if (i == zaznaczonaOpcja) { kolor = ConsoleColor.White; } y += 2; } }
// ostatnie okno pomocnicze dojo. W tym możemy zakupować dodatkowe pancerze public void oknoPrzedmiotow(Przedmiot[] listaPrzedmiotow, int zaznaczonaOpcja) { Wyswietlanie.okienko("Pancerze do kupienia", 40, 3, 80, 30); Wyswietlanie.pisz("Nazwa", ConsoleColor.White, 43, 6); Wyswietlanie.pisz("Pancerz", ConsoleColor.White, 105, 6); Wyswietlanie.pisz("Cena", ConsoleColor.White, 114, 6); Wyswietlanie.rozdzielacz(28, true, 104, 5); Wyswietlanie.rozdzielacz(28, true, 112, 5); Wyswietlanie.rozdzielacz(80, false, 40, 7); Wyswietlanie.krzyz(104, 7); Wyswietlanie.krzyz(112, 7); int y = 8; var kolor = ConsoleColor.White; for (int i = 0; i <= listaPrzedmiotow.Length; ++i) { if (i == zaznaczonaOpcja) { kolor = ConsoleColor.Blue; } if (i < listaPrzedmiotow.Length) { Wyswietlanie.pisz(listaPrzedmiotow[i].pobierzNazwe(), kolor, 43, y); Wyswietlanie.pisz(listaPrzedmiotow[i].pobierzPancerz().ToString(), kolor, 108, y); Wyswietlanie.pisz($"{listaPrzedmiotow[i].pobierzCene()}g", kolor, 114, y); } else { Wyswietlanie.pisz("Powrot", kolor, 43, y); } if (i == zaznaczonaOpcja) { kolor = ConsoleColor.White; } y += 2; } }
public static void rozdzielacz(int dlugosc, bool pionowy) { if (pionowy) { var x = Console.CursorLeft; var y = Console.CursorTop; Console.Write('┬'); Wyswietlanie.gotoXY(x, y + 1); Wyswietlanie.linia(dlugosc - 2, true); Wyswietlanie.gotoXY(x, y + dlugosc - 1); Console.Write('┴'); } else { Console.Write('├'); Wyswietlanie.linia(dlugosc - 2, false); Console.Write('┤'); } }
// Wyświetla przebieg walki (ciosy, ataki, punkty obrażeń) public void oknoPrzebieguWalki(string[] przebieg) { const int x = 29; Wyswietlanie.okienko("Przebieg Walki", x - 3, 3, 67, 30); int y = 7; int i = 0; if (przebieg.Length > 24) { i = przebieg.Length - 24; } for (; i < przebieg.Length; i++) { Wyswietlanie.pisz(przebieg[i], ConsoleColor.White, x, y++); } }
public static void linia(int dlugosc, bool pionowa) { if (pionowa) { var x = Console.CursorLeft; var y = Console.CursorTop; for (int i = 0; i < dlugosc; i++) { Wyswietlanie.gotoXY(x, y + i); Console.Write('│'); } } else { for (int i = 0; i < dlugosc; i++) { Console.Write('─'); } } }
// ekran dojo wyświetla dojo we współpracy z oknami ciosów, przedmiotów i ćwiczeń // przyjmuje int zaznaczonej opcji // (możemy wysłać -1 jeżeli nie chcemy zaznaczać niczego) public void ekranDojo(int zaznaczonaOpcja, bool rightScreen) { Wyswietlanie.okienko("Dojo", 0, 3, 40, 30); for (int i = 0; i < this.opcjeDojo.Length; ++i) { if (i == zaznaczonaOpcja) { Wyswietlanie.pisz(this.opcjeDojo[i], ConsoleColor.Blue, 3, 7 + 2 * i); } else { Wyswietlanie.pisz(this.opcjeDojo[i], ConsoleColor.White, 3, 7 + 2 * i); } } if (rightScreen) { Wyswietlanie.okienko("Podmenu", 40, 3, 80, 30); } }
public void oknoNastepnego(StatusPostaci przeciwnik, Cios[] listaCiosowPrzeciwnika) { this.oknoNastepnego(); const int x = 33; Wyswietlanie.pisz($"Statystyki", ConsoleColor.White, x, 6); Wyswietlanie.pisz($"Życie: {przeciwnik.zycie}", ConsoleColor.Red, x, 8); Wyswietlanie.pisz($"Wytrzymalosc: {przeciwnik.wytrzymalosc}", ConsoleColor.Yellow, x, 9); Wyswietlanie.pisz($"Sila: {przeciwnik.sila}", ConsoleColor.White, x, 10); Wyswietlanie.pisz($"Pancerz: {przeciwnik.pancerz}", ConsoleColor.White, x, 11); Wyswietlanie.pisz($"Znane ciosy", ConsoleColor.White, x, 16); Wyswietlanie.rozdzielacz(35, false, x - 3, 7); Wyswietlanie.rozdzielacz(35, false, x - 3, 15); Wyswietlanie.rozdzielacz(35, false, x - 3, 17); for (int i = 0; i < listaCiosowPrzeciwnika.Length; i++) { Wyswietlanie.pisz($"{listaCiosowPrzeciwnika[i].pobierzNazwe()}", ConsoleColor.White, x, 19 + i); } }
// pop-up do wyboru obrony public void okienkoWyboruObrony(int zaznaczonaOpcja) { const int x = 16; const int y = 6; const int w = 16; Wyswietlanie.prostokat(x, y, w, 7); int temp, temp2 = x + w - 3; var kolor = ConsoleColor.White; for (int i = 0; i < opcjeObrony.Length; i++) { temp = y + 1 + (i * 2); if (i == zaznaczonaOpcja) { kolor = ConsoleColor.Blue; } Wyswietlanie.pisz(this.opcjeObrony[i], kolor, x + 1, temp); switch (this.opcjeObrony[i]) { case "Normalna": Wyswietlanie.pisz(SilaObrony.kosztNormalna.ToString(), ConsoleColor.Yellow, temp2, temp); break; case "Mocna": Wyswietlanie.pisz(SilaObrony.kosztMocna.ToString(), ConsoleColor.Yellow, temp2, temp); break; } if (i == zaznaczonaOpcja) { kolor = ConsoleColor.White; } } }
// okno pomocnicze przeciwnika. Wyświetla jego status i znane ciosy public void oknoPrzeciwnika(StatusPostaci przeciwnik, Cios[] ciosyPrzeciwnika) { const int x = 96; Wyswietlanie.okienko("Twoj przeciwnik", x - 3, 3, 120 - x + 3, 30); Wyswietlanie.pisz($"Statystyki", ConsoleColor.White, x, 6); Wyswietlanie.pisz($"Życie: {przeciwnik.zycie}", ConsoleColor.Red, x, 8); Wyswietlanie.pisz($"Wytrzymalosc: {przeciwnik.wytrzymalosc}", ConsoleColor.Yellow, x, 9); Wyswietlanie.pisz($"Sila: {przeciwnik.sila}", ConsoleColor.White, x, 10); Wyswietlanie.pisz($"Pancerz: {przeciwnik.pancerz}", ConsoleColor.White, x, 11); Wyswietlanie.pisz($"Znane ciosy", ConsoleColor.White, x, 16); Wyswietlanie.rozdzielacz(120 - x + 3, false, x - 3, 7); Wyswietlanie.rozdzielacz(120 - x + 3, false, x - 3, 15); Wyswietlanie.rozdzielacz(120 - x + 3, false, x - 3, 17); for (int i = 0; i < ciosyPrzeciwnika.Length; i++) { Wyswietlanie.pisz($"{ciosyPrzeciwnika[i].pobierzNazwe()}", ConsoleColor.White, x, 19 + i); } }
public static void prostokat(int x, int y, int width, int height) { Wyswietlanie.wyczyscPole(x, y, width, height); // górna krawędź Wyswietlanie.gotoXY(x, y); Console.Write('┌'); Wyswietlanie.linia(width - 2, false); Console.Write('┐'); // dolna krawędź Wyswietlanie.gotoXY(x, y + height - 1); Console.Write('└'); Wyswietlanie.linia(width - 2, false); Console.Write('┘'); // lewa krawędź Wyswietlanie.gotoXY(x, y + 1); Wyswietlanie.linia(height - 2, true); // prawa krawędź Wyswietlanie.gotoXY(x + width - 1, y + 1); Wyswietlanie.linia(height - 2, true); }
public static void pisz(string tekst, ConsoleColor kolor, int x, int y) { gotoXY(x, y); Wyswietlanie.pisz(tekst, kolor); }
public void oknoNastepnego() { Wyswietlanie.okienko("Nastepny przeciwnik", 30, 3, 35, 30); }
// test interfejsu public void test() { Bohater tomek = new Bohater(100, 100, 100, 1); tomek.dodajPieniadze(200); tomek.dodajDoswiadczenie(3300); tomek.wydajPieniadze(20); Cios xd = new Cios("Testowy", 12, 2); for (int i = 0; i < 8; i++) { tomek.dodajCios(xd); } tomek.pozycjaObronna(SilaObrony.mocna); var pobraneCiosy = tomek.pobierzCiosy(); var status = tomek.pobierzStatus(); System.Console.WriteLine(status.punktyZdolnosci); tomek.przyjmijObrazenia(10); this.pasekStatusu(status); this.ekranGry(0); this.oknoNastepnego(status, pobraneCiosy); this.oknoInstrukcji(); Console.ReadKey(); this.ekranDojo(1, true); Wyswietlanie.gotoXY(0, 38); Console.ReadKey(); this.oknoNaukiCiosow(pobraneCiosy, 2); Console.ReadKey(); var xp = new Cwiczenie("Testowe", 4, 3, 4, 5); var cwiczenia = new Cwiczenie[] { xp, xp, xp }; this.ekranDojo(0, true); this.oknoCwiczen(cwiczenia, 1); Console.ReadKey(); this.ekranDojo(2, true); var xc = new Przedmiot("Testowy", 12, 154); var przedmioty = new Przedmiot[] { xc, xc, xc, xc }; this.oknoPrzedmiotow(przedmioty, 1); Console.ReadKey(); Wyswietlanie.clrscr(); this.pasekStatusu(status); this.ekranWalki(0); var lista = new List <string>(); lista.Add("Zaczynamy! Hej, Hej!"); lista.Add(" "); for (int i = 0; i < 16; i++) { lista.Add($"{i} TEST TEST TEST"); } this.oknoPrzebieguWalki(lista.ToArray()); this.oknoPrzeciwnika(status, pobraneCiosy); this.okienkoWyboruCiosu(pobraneCiosy, 1); Console.ReadKey(); this.ekranWalki(1); this.oknoPrzebieguWalki(lista.ToArray()); this.okienkoWyboruObrony(1); Wyswietlanie.gotoXY(0, 38); Console.ReadKey(); }
public static void rozdzielacz(int dlugosc, bool pionowy, int x, int y) { Wyswietlanie.gotoXY(x, y); rozdzielacz(dlugosc, pionowy); }
public static void krzyz(int x, int y) { Wyswietlanie.gotoXY(x, y); Console.Write('┼'); }
// wyświetlanie informacji o grupie pod ekranem gry public void info() { Wyswietlanie.prostokat(0, 33, 23, 3); Wyswietlanie.pisz("Grupa 12, INIS2_3.1", ConsoleColor.White, 2, 34); }