private void Edytuj_Click(object sender, EventArgs e) //przycisk edycji postaci - aktualizuje dane { if (listaPos.Count == 0 || ListaPostaci.SelectedItem == null) //sprawdzenie czy wybrano postac z listy { MessageBox.Show("Brak postaci do edycji!"); return; } bool czydobre = Sprawdz(); //sprawdzenie czy pola są uzupełnione odpowiednimi wartosciami if (!czydobre) { return; } Postać edytowana = listaPos[ListaPostaci.SelectedIndex]; //aktualizacja danych edytowana.Imię = ImięPos.Text; edytowana.Level = Int32.Parse(LevelPos.Text); edytowana.Opis = OpisPos.Text; edytowana.klasaPostaci = WybórKlasaPostaci.SelectedItem.ToString(); edytowana.Moc = listaKlas[WybórKlasaPostaci.SelectedIndex].moc; edytowana.Obrona = listaKlas[WybórKlasaPostaci.SelectedIndex].obrona; edytowana.Udźwig = listaKlas[WybórKlasaPostaci.SelectedIndex].udźwig; edytowana.ZwiekszWartosc(edytowana.Level); ListaPostaci.Items[ListaPostaci.SelectedIndex] = edytowana.Imię; //jesli zmienione imie - jego aktualizacja w comboboxie (+ jesli zmieniony lvl, to pola mocy obrony udzwigu tez sie zaktualizuja) if (wybrany != null && wybrany.ID == edytowana.ID) //jesli edytowana postac byla wczesniej wybrana i wyswietlona w oknie glownym to wyswietl komunikat o zmianie (info w oknie głownym sie nie zmieni dopoki jeszcze raz nie wybierze sie przycisku wyboru postaci) { MessageBox.Show("Uwaga: zmieniono dane wybranej wcześniej postaci." + Environment.NewLine + "Jeśli chcesz zaktualizować te dane w oknie głównym, kliknij ponownie \"Wybierz postać\" (bieżące ustawienia w oknie głównym zostaną usunięte)."); } }
public void WczytajPostać(Postać nowa) //metoda dodająca postac z okna głównego do listy postaci w przypadku wczytywania gotowej postaci z pliku { Postać nowaPostać = nowa; listaPos.Add(nowaPostać); ListaPostaci.Items.Add(nowaPostać.Imię); }
private void Odczyt_Click(object sender, EventArgs e) { int size = -1; DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. if (result == DialogResult.OK) // Test result. { string file = openFileDialog1.FileName; Encoding enc = Encoding.GetEncoding("Windows-1250");//zmiana kodowania do prawidlowego wczytania polskich znakow try { if (listaPos != null) //wczytujac plik, czyscimy textboxy itd { ListaPostaci.DropDownHeight = 106; WyczyśćTextBoxyiComboboxy(); } List <Postać> tmp = new List <Postać>(listaPos); //lista przechowujaca stan sprzed dodawania postaci string[] filelines = File.ReadAllLines(file, enc); //kazda linia jest kolejnym elementem tablicy, jedna linia-jedna postac size = filelines.Length; if (size == 0) { MessageBox.Show("Pusty plik!"); return; } for (int i = 0; i < size; i++) //petla po tablicy z liniami pliku { string[] dane = filelines[i].Split(';'); //tablica przechowujaca kolejne dane przedmiotow, dzieli po ';' if (dane.Length != 7) { MessageBox.Show("Nieprawidłowy format pliku!"); return; } bool czydobre = SprawdzPlik(dane); if (!czydobre) { //jesli jakas postac jest zle zapisana w pliku - usun dotychczas dodane dane listaPos = tmp; ListaPostaci.Items.Clear(); for (int j = 0; j < listaPos.Count; j++) { ListaPostaci.Items.Add(listaPos[j].Imię); } ListaPostaci.DropDownHeight = 106; return; } Postać nowy = new Postać(Id, dane[0], Int32.Parse(dane[1]), dane[2], dane[3], double.Parse(dane[4]), double.Parse(dane[5]), double.Parse(dane[6])); Id++; ListaPostaci.Items.Add(dane[0]); listaPos.Add(nowy); } } catch (IOException) { MessageBox.Show("Błąd odczytu pliku!"); return; } } }
private void ListaPostaci_SelectedIndexChanged(object sender, EventArgs e) //wybor elementu (postaci) z comboboxa i wyswietlenie go w textboxach { Postać wyswietlony = listaPos[ListaPostaci.SelectedIndex]; ImięPos.Text = wyswietlony.Imię; LevelPos.Text = wyswietlony.Level.ToString(); OpisPos.Text = wyswietlony.Opis; WybórKlasaPostaci.Text = wyswietlony.klasaPostaci; MocPos.Text = wyswietlony.Moc.ToString(); ObronaPos.Text = wyswietlony.Obrona.ToString(); UdźwigPos.Text = wyswietlony.Udźwig.ToString(); }
public bool SprawdzPlik(string[] dane) { if (dane[0] == "" || dane[1] == "" || dane[2] == "" || dane[3] == "" || dane[4] == "" || dane[5] == "" || dane[6] == "") { MessageBox.Show("Brak wartości pola postaci!"); return(false); } if (dane[0].Length < 4 || dane[0].Length > 15) { MessageBox.Show("Nieprawidłowa długość imienia!"); return(false); } int result; if (!Int32.TryParse(dane[1], out result)) { MessageBox.Show("Level musi być liczbą!"); return(false); } if (Int32.Parse(dane[1]) < 0 || Int32.Parse(dane[1]) > 99) { MessageBox.Show("Niepoprawny level! (0-99)"); return(false); } if (dane[2].Length < 3 || dane[2].Length > 100) { MessageBox.Show("Długość opisu spoza zakresu (3-100 znaków)!"); return(false); } if (dane[3] != "Tropiciel" && dane[3] != "Mag" && dane[3] != "Wojownik") { MessageBox.Show("Niepoprawna klasa postaci!"); return(false); } double result2; if (!double.TryParse(dane[4], out result2) || !double.TryParse(dane[5], out result2) || !double.TryParse(dane[6], out result2)) { MessageBox.Show("Nieprawidłowa wartość mocy/obrony/udźwigu!"); return(false); } int id = 0; if (dane[3] == "Tropiciel") { id = 1; } if (dane[3] == "Wojownik") { id = 2; } //w zaleznosci od wybranej klasy, bierzemy jej wartosci bazowe mocy/obrony/udzwigu do stworzenia nowej postaci Postać nowy = new Postać(0, dane[0], Int32.Parse(dane[1]), dane[2], dane[3], listaKlas[id].moc, listaKlas[id].obrona, listaKlas[id].udźwig); //tworzymy nową postac na podstawie wartosci z tablicy i porownujemy moc/obrone/udzwig jakie powinny być na postawie levelu postaci a wartosciami z pliku, czy sa takie same nowy.ZwiekszWartosc(Int32.Parse(dane[1])); if ((nowy.Moc.ToString() != dane[4]) || (nowy.Obrona.ToString() != dane[5]) || (nowy.Udźwig.ToString() != dane[6])) { MessageBox.Show("Niepoprawne wartości mocy/obrony/udźwigu w zależności od levelu postaci!"); return(false); } return(true); }
private void WybierzPos_Click(object sender, EventArgs e) //przycisk wyboru postaci - user wybiera postać z listy (combobox), która jest nastepnie wysyłana i wyświetlana w oknie głównym { if (listaPos.Count == 0) { MessageBox.Show("Brak postaci na liście! Nie ma z czego wybierać!"); return; } if (ListaPostaci.SelectedItem == null) { MessageBox.Show("Wybierz postać z listy!"); return; } wybrany = listaPos[ListaPostaci.SelectedIndex]; //string text = (nowy.Imię + ';' + nowy.Level.ToString() + ';' + nowy.Opis + ';' + nowy.klasaPostaci + ';' + nowy.Moc.ToString() + ';' + nowy.Obrona.ToString() + ';' + nowy.Udźwig.ToString()); this.mainForm.Wybrana = wybrany; }
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { string name = saveFileDialog1.FileName; string text = ""; string[] tab = new string[listaPos.Count]; for (int i = 0; i < listaPos.Count; i++) { Postać nowy = listaPos[i]; text = (nowy.Imię + ';' + nowy.Level.ToString() + ';' + nowy.Opis + ';' + nowy.klasaPostaci + ';' + nowy.Moc.ToString() + ';' + nowy.Obrona.ToString() + ';' + nowy.Udźwig.ToString()); tab[i] = text; } File.WriteAllLines(name, tab, Encoding.UTF8); //zapis do pliku z odpowiednim kodowaniem (by przy otwieraniu pliku były polskie znaki) }
private void StwórzPostać_Click(object sender, EventArgs e) //przycisk tworzenia postaci { //Postać(pola: ID, Imię, lvl, Moc, Obrona, Opis, Udźwig, klasaPostaci) bool czydobre = Sprawdz(); if (!czydobre) { return; } //sprawdzenie czy podane wartosci sa prawidlowe, jesli nie-zakoncz działanie string imię = ImięPos.Text; int lvl = Int32.Parse(LevelPos.Text); string opis = OpisPos.Text; string klasa = WybórKlasaPostaci.SelectedItem.ToString(); //do zmiennych lokalnych przypisujemy wartosci wprowadzone/wybrane przez użytkownika double moc = listaKlas[WybórKlasaPostaci.SelectedIndex].moc; double obrona = listaKlas[WybórKlasaPostaci.SelectedIndex].obrona; double udźwig = listaKlas[WybórKlasaPostaci.SelectedIndex].udźwig; //bazowe wartosci pochodzace z klas postaci // MessageBox.Show(moc.ToString(), obrona.ToString()); Postać nowaPostać = new Postać(Id, imię, lvl, opis, klasa, moc, obrona, udźwig); nowaPostać.ZwiekszWartosc(lvl); //wywołanie metody zwiekszajacej bazowe wartosci na podstawie lvl listaPos.Add(nowaPostać); ListaPostaci.Items.Add(imię); Id++; }
public bool SprawdzDane(Postać nowa, List <Przedmiot> lista, string[] dane) { double udzwig = 0; double moc = nowa.Moc; double obrona = nowa.Obrona; //zmienne opisujące postac for (int i = 0; i < lista.Count; i++) { udzwig += lista[i].Waga; //waga wszystkich wybranych przedmiotow if (lista[i].Typ == "broń") //jesli typ = bron, zwiekszamy moc na podstawie bonusu. w przeciwnym razie obrone { moc += lista[i].Bonus; } else { obrona += lista[i].Bonus; } } if (lista.Count.ToString() != dane[1]) { MessageBox.Show("Różna ilość przedmiotów!"); return(false); } string text = (udzwig.ToString() + "/" + nowa.Udźwig.ToString()); if (text != dane[2]) { MessageBox.Show("Różna wartość udźwigu!"); return(false); } string text2 = (moc.ToString() + " ; " + obrona.ToString()); if (text2 != dane[3]) { MessageBox.Show("Różna wartość mocy/obrony!"); return(false); } return(true); }
private void Wczytaj_Click(object sender, EventArgs e) //odczyt gotowej postaci z pliku + "dostawa" czyli wczytanie aktualnego stanu sklepu(listy przedmiotow z okna przedmiotow) { int size = -1; DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. if (result == DialogResult.OK) // Test result. { string file = openFileDialog1.FileName; Encoding enc = Encoding.GetEncoding("Windows-1250");//zmiana kodowania do prawidlowego wczytania polskich znakow try { if (Info.Text != "") //wczytujac plik, usuwamy wszystkie dotychczasowe dane w oknie gł - nadpisanie danych { Info.Text = ""; Wyczyść(); } string[] filelines = File.ReadAllLines(file, enc); //kazda linia jest kolejnym elementem tablicy size = filelines.Length; if (size == 0 || size < 4) { MessageBox.Show("Zły format pliku!"); return; } string[] dane = filelines[0].Split(';'); //tablica przechowujaca kolejne dane przedmiotow (1 linia pliku), dzieli po ';' if (dane.Length != 7) { MessageBox.Show("Nieprawidłowy format pliku!"); return; } if (!lista_postaci.SprawdzPlik(dane)) { return; } //sprawdzamy info o postaci z pliku za pomoca metody z okna postaci if (nowy == null) //jeśli od razu odpalamy wczytywanie, bez wczesniejszego wyboru postaci, musimy stworzyć jakąkolwiek postać żeby nie była z wartością null { nowy = new Postać(0, "Arya", 10, "przykładowy opis", "Tropiciel", 30, 30, 30); } nowy.Imię = dane[0]; nowy.Level = Int32.Parse(dane[1]); nowy.Opis = dane[2]; nowy.klasaPostaci = dane[3]; nowy.Moc = double.Parse(dane[4]); nowy.Obrona = double.Parse(dane[5]); nowy.Udźwig = double.Parse(dane[6]); Info.Text = ("Imię: " + nowy.Imię + Environment.NewLine + "Level: " + nowy.Level.ToString() + Environment.NewLine + "Opis: " + nowy.Opis + Environment.NewLine + "Klasa postaci: " + nowy.klasaPostaci + Environment.NewLine + "Moc: " + nowy.Moc.ToString() + Environment.NewLine + "Obrona: " + nowy.Obrona.ToString() + Environment.NewLine + "Udźwig: " + nowy.Udźwig.ToString()); for (int i = 4; i < size; i++) //petla po tablicy z liniami pliku, licznik 'i' bedzie takze ID kolejnych elementow { string[] danep = filelines[i].Split(';'); //tablica przechowujaca kolejne dane przedmiotow, dzieli po ';' if (danep.Length != 7) { Info.Text = ""; MessageBox.Show("Nieprawidłowy format pliku!"); return; } if (!lista_przedmiotow.SprawdzPlik(danep)) { Info.Text = ""; Wyczyść(); return; } //jak wyzej - sprawdzenie przedmiotow za pomoca metody z okna przedmiotow, jak ktorys zły to usun wszystkie dodane wczesniej dane Przedmiot nowyPrz = new Przedmiot(i - 4, danep[0], danep[1], danep[2], danep[3], Int32.Parse(danep[4]), danep[5], Int32.Parse(danep[6])); PrzedmiotyPostaci.Items.Add(danep[0]); listaWybrPrz.Add(nowyPrz); } if (!SprawdzDane(nowy, listaWybrPrz, filelines)) { Info.Text = ""; Wyczyść(); return; } IlośćPrzedmiotów.Text = filelines[1]; UdźwigPostaci.Text = filelines[2]; MocIObrona.Text = filelines[3]; for (int i = 0; i < listaWybrPrz.Count; i++) //jesli wszystkie przedmioty i reszta pliku sa ok, zmieniamy im unikalne id na postawie id z okna przedmiotow { listaWybrPrz[i].ID = lista_przedmiotow.Id; lista_przedmiotow.Id++; ListaWybranychPrzedmiotów.Items.Add(listaWybrPrz[i].Nazwa); } nowy.ID = lista_postaci.Id; //to samo z postacia lista_postaci.Id++; lista_przedmiotow.WyślijListę(); //wczytanie listy przedmiotow do sklepu for (int i = 0; i < listaPrzedm.Count; i++) //wczytujemy do sklepu wszystkie dostepne przedmioty z wyjatkiem tych ostatnio wczytanych i dodanych do wybranych { ListaPrzedmiotówSklep.Items.Add(listaPrzedm[i].Nazwa + " [" + listaPrzedm[i].Wymagania + "]"); //dodajemy przedmioty do listboxa w zakładce sklepu (dostepne przedmioty w sklepie) } //dodajemy postac i przedmioty do odpowiednich okienek tylko gdy caly plik jest w porzadku lista_postaci.WczytajPostać(nowy); //metoda - dodanie postaci do listy postaci w oknie postaci lista_przedmiotow.WczytajPrzedmioty(listaWybrPrz); //metoda - dodanie wszystkich przedmiotow z listy wybranych przedmiotow do listy z okna przedmiotów } catch (IOException) { MessageBox.Show("Błąd odczytu pliku!"); return; } } }