public void Tallenna(Lemmikki tallennettava) { //tallennetaan lemmikki-olion tiedot xml filuun serialize-metodilla XmlSerializer serializerTallenna = new XmlSerializer(typeof(Lemmikki)); using (StreamWriter myWriter = new StreamWriter(@"..\..\TallennusXML\Tallennus.xml", false)) { serializerTallenna.Serialize(myWriter, tallennettava); } }
public Form1() { //nämä tapahtuu pelin käynnistyessä InitializeComponent(); hWnd = GetConsoleWindow(); randomruoat.Add(myrkkysieni); randomruoat.Add(karkki); textBox3.Text = ohjeet; lemmikki = lemmikki.LataaTallennettu <Lemmikki>(); }
public Lemmikki LataaTallennettu <Lemmikki>() { //ladataan tallennetun lemmikki-olion tiedot deserialize-metodilla XmlSerializer serializerLataa = new XmlSerializer(typeof(Lemmikki)); Lemmikki luettu = default(Lemmikki); if (string.IsNullOrEmpty(@"..\..\TallennusXML\Tallennus.xml")) { return(default(Lemmikki)); } try { StreamReader xmlStream = new StreamReader(@"..\..\TallennusXML\Tallennus.xml"); luettu = (Lemmikki)serializerLataa.Deserialize(xmlStream); } catch (Exception ex) { Console.WriteLine(ex); } return(luettu); }
public void Button2Klikattu(string input) { //muutetaan input pieneksi typojen korjaamiseksi, ja splitataan input välilyönnin kohdalta input = input.ToLower(); var splitattu = input.Split(' '); if (tehdäänvaihto == true) { //jos on tehty vaihtokauppa vastaantulijan kanssa, tapahtuu tämä buttonia painettaessa string vaihdettava = textBox2.Text; TeeVaihtoKauppa(vaihdettava); tehdäänvaihto = false; vaihdettu = true; } if (!vaihdettu) { //jos ei ole tehty vaihtokauppaa, niin tutkitaan, mitä käyttäjä halusi tehdä? switch (splitattu[0]) { #region hoitoon liittyvät käskyt case "harjaa": if (splitattu.Length == 1) { lemmikki.Harjaa(); } break; case "pese": if (splitattu.Length == 1) { textBox2.Text = "Et antanut esineen nimeä"; } else { bool onko = lemmikki.Pese(splitattu[1]); if (!onko) { textBox2.Text = $"{splitattu[1]} ei ole varastossa"; } } break; case "syötä": if (splitattu.Length == 1) { textBox2.Text = "Et antanut esineen nimeä"; } else { bool löytyykö = lemmikki.Syötä(splitattu[1]); if (!löytyykö) { textBox2.Text = $"{splitattu[1]} ei ole varastossa"; } } break; case "leiki": if (splitattu.Length == 1) { lemmikki.Harjaa(); } else { bool jooko = lemmikki.Leiki(splitattu[1]); if (!jooko) { textBox2.Text = $"{splitattu[1]} ei ole varastossa"; } } break; case "paijaa": if (splitattu.Length == 1) { lemmikki.Paijaa(); } break; case "potki": textBox2.Text = "Lopeta!! >:("; LaskeMieliAlaa(); break; #endregion #region pelin käynnistäminen case "etsi": //etsi-käsky käynnistää pelin. //ensin asetetaan konsoli-ikkuna näkyväksi ja määritellään sen sijainti SetWindowPos(hWnd, IntPtr.Zero.ToInt32(), 100, 100, 0, 0, SWP_NOZORDER | SWP_NOSIZE | (isVisible ? SW_SHOW : SW_HIDE)); ShowWindow(hWnd, isVisible ? SW_SHOW : SW_HIDE); isVisible = !isVisible; //käynnistetään peli, löydetyt-lista sisältää ruoka-oliot jotka pelistä palautetaan löydetyt = kartta.NäytäKartta(); //peli päättyi, asetetaan konsoli-ikkuna piilotetuksi SetWindowPos(hWnd, IntPtr.Zero.ToInt32(), 100, 100, 0, 0, SWP_NOZORDER | SWP_NOSIZE | (isVisible ? SW_HIDE : SW_SHOW)); ShowWindow(hWnd, isVisible ? SW_SHOW : SW_HIDE); isVisible = !isVisible; //Tulostetaan löydetyt ruoat ja lisätään ne inventoryyn textBox3.Text = "Jee! Löysit seuraavat asiat:" + Environment.NewLine; foreach (var ruoka in löydetyt) { lemmikki.ruoat.Add(ruoka); textBox3.Text += ruoka.ruoanNimi + Environment.NewLine; } //kun löydetyt ruoat on lisätty inventoryyn, tyhjennetään lista, //jotta ensi kerralla tulee taas uudet löydökset for (int i = löydetyt.Count - 1; i >= 0; i--) { löydetyt.Remove(löydetyt[i]); } //kutsutaan vastaantulija-metodia, tämä olisi mahdollista tehdä myös arpomalla VastaanTulija(); break; #endregion #region kyllä/ei/poistu case "kyllä": //jos lemmikin health oli 0, on vastaus restarttaamiseen ollut kyllä if (lemmikki.OverAllHealth == 0) { Lemmikki uusilemmikki = new Lemmikki(teeuusi); lemmikki = uusilemmikki; } //jos vastaantulijan kanssa suostuttiin vaihtokauppaan, kysytään, mitä haluaa vaihtaa if (vastaantulija == true) { tehdäänvaihto = true; textBox3.Text += Environment.NewLine + Environment.NewLine + "Minkä ruoan haluat antaa vaihdossa?"; vastaantulija = false; } break; case "ei": //vastattu ei joko restarttiin tai vaihtokauppaan. Tulostetaan ohjeet näkyville textBox3.Text = ohjeet; break; case "poistu": //tallennetaan ja suljetaan peli lemmikki.Tallenna(lemmikki); this.Close(); break; default: foreach (var item in lemmikki.ruoat) { if (splitattu[0] == item.ruoanNimi) { tehdäänvaihto = true; } } if (!tehdäänvaihto) { textBox2.Text = "Virheellinen komento!"; } break; #endregion } } //jos vaihtokauppa oli tehty, niin ylläoleva switch skipattiin //tämä siksi, ettei switchissä luulla syötteen olevan virheellinen, //kun kirjoitetaan että mikä tuote vaihdetaan //vaihdon ja switchin skippaamisen jälkeen on bool vaihdettu false, //jolloin seuraavalla klikkauksella switch taas toimii. else { vaihdettu = false; } //switchissä tehtiin asioita käyttäjän syötteen perusteella, oletettavasti inventory ja health muuttuivat //tulostetaan siis päivitettynä kuva, inventory ja health ajan tasalle NäytäLemmikinKuva(); NäytäInventory(); NäytäHealth(); NäytäIkä(); }