Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        public Form1()
        {
            //nämä tapahtuu pelin käynnistyessä
            InitializeComponent();

            hWnd = GetConsoleWindow();
            randomruoat.Add(myrkkysieni);
            randomruoat.Add(karkki);
            textBox3.Text = ohjeet;
            lemmikki      = lemmikki.LataaTallennettu <Lemmikki>();
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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ä();
        }