source: 2014/koodauskerho/38/JaakkoS/Jaakon_Talo/Jaakon_Talo/MainWindow.xaml.cs @ 5791

Revision 5791, 4.2 KB checked in by sieerinn, 6 years ago (diff)
Line 
1
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using System.Text;
6using System.Windows;
7using System.Windows.Controls;
8using System.Windows.Data;
9using System.Windows.Documents;
10using System.Windows.Input;
11using System.Windows.Media;
12using System.Windows.Media.Imaging;
13using System.Windows.Navigation;
14using System.Windows.Shapes;
15
16namespace Jaakon_Talo
17{
18    /// <summary>
19    /// Interaction logic for MainWindow.xaml
20    /// </summary>
21    public partial class MainWindow : Window
22    {
23        private Huoneet huoneet;
24        private Huone valittuHuone;
25        public MainWindow()
26        {
27            InitializeComponent();
28           
29            this.huoneet = new Huoneet();
30            Huone eteinen = this.huoneet.LisaaHuone("Eteinen", "Otat kengät pois jalasta ja astut peremmälle.");
31            Huone olohuone = this.huoneet.LisaaHuone("Olohuone", "Olohuoneessa on paljon sohvia. Istut yhdelle sohvalle.");
32            eteinen.LisaaOvi(olohuone);
33            KirjoitaTekstiRuudulle("Tervetuloa peliin.");
34            KirjoitaTekstiRuudulle("Astut huoneeseen: " + eteinen.Nimi);
35            KirjoitaTekstiRuudulle(eteinen.Teksti);
36            KirjoitaOvilistaRuudulle(eteinen);
37            this.valittuHuone = eteinen;
38        }
39
40        public void KirjoitaTekstiRuudulle(string kirjoitettavaTeksti)
41        {
42            textBlockViestiIkkuna.Text += kirjoitettavaTeksti + "\n";
43            scrollViewer1.UpdateLayout();
44            scrollViewer1.ScrollToBottom();
45        }
46        public void KirjoitaOvilistaRuudulle(Huone huone)
47        {
48            KirjoitaTekstiRuudulle("Voit mennä seuraaviin huoneisiin:");
49            foreach (Ovi ovi in huone.Ovet)
50            {
51                KirjoitaTekstiRuudulle(" * " + ovi.Mihin.Nimi);
52            }
53
54        }
55
56       
57        private void toimintopainike_Click(object sender, RoutedEventArgs e)
58{
59    // Poistetaan alusta ja lopusta turhat välilyönnit:
60    Mitä_teet.Text = Mitä_teet.Text.Trim();
61
62   
63    // Katkaistaan komento alku- ja loppuosiin
64    // ensimmäisen välilyönnin kohdalta:
65    int katkaisukohta = Mitä_teet.Text.IndexOf(' '); // etsitään ensimmäinen välilyönti
66    string alkuosa;
67    string loppuosa;
68    if (katkaisukohta > 0)
69    {
70        alkuosa = Mitä_teet.Text.Substring(0, katkaisukohta);
71        loppuosa = Mitä_teet.Text.Substring(katkaisukohta + 1);
72    }
73    else // jos katkaisukohtaa ei löydy, kyseessä oli vain yksittäinen sana
74    {
75        alkuosa = Mitä_teet.Text;
76        loppuosa = "";
77    }
78   
79    // Tulostetaan käyttäjän kirjoittama komentoteksti ruudulle
80    // aivan ensimmäisenä ennen seuraavaa tekstiä:
81    KirjoitaTekstiRuudulle("> " + Mitä_teet.Text);
82   
83    // Tarkistetaan komento ja toimitaan sen mukaan:
84    if (alkuosa.Length == 0)
85    {
86        // jos komentoa ei ole syötetty, ei tehdä mitään,
87        // vaan kirjoitetaan esille huoneen kuvaus:
88        KirjoitaHuoneenTiedotRuudulle(this.valittuHuone);
89    }
90    else if (alkuosa == "mene") // jos 1. sana on mene...
91    {
92       if (loppuosa.Length == 0)
93        {
94            KirjoitaTekstiRuudulle("Minne pitäisi mennä?");
95            return;
96        }
97        // tarkistaa onko toisen sanan mukaista huonetta ja menee sinne, jos on:
98        foreach (Ovi ovi in valittuHuone.Ovet)
99        {
100            if (ovi.Mihin.Nimi.ToLower().Equals(loppuosa.ToLower()))
101            {
102                this.valittuHuone = ovi.Mihin;
103               
104                // Tulostetaan uuden huoneen kuvausteksti ruudulle:
105                KirjoitaHuoneenTiedotRuudulle(this.valittuHuone);
106                return;
107            }
108        }
109        KirjoitaTekstiRuudulle("Huoneen nimi ei ole kelvollinen.");
110    }
111    else
112    {
113        KirjoitaTekstiRuudulle("Komento \"" + Mitä_teet.Text + "\" tuntematon.");
114        return; // Poistutaan aliohjelmasta, koska komento ei ollutkaan järkevä
115    }
116
117        }
118        public void KirjoitaHuoneenTiedotRuudulle(Huone huone)
119        {
120            KirjoitaTekstiRuudulle("Olet huoneessa: " + huone.Nimi);
121            KirjoitaTekstiRuudulle(huone.Teksti);
122            KirjoitaOvilistaRuudulle(huone);
123        }
124      }
125    }
Note: See TracBrowser for help on using the repository browser.