예제 #1
0
        // Noutaa auton ruudusta jos ruutu löytyy
        // Laskee parkkeerauksen hinnan ja pyytää maksua
        // Jos maksu hyväksytään, auto poistetaan parkkihallista
        public Moottoriajoneuvo nouda(int ruutu)
        {
            if (this.parkkipaikat.ElementAtOrDefault(ruutu) == null)
            {
                Console.WriteLine("Ruutua {0} ei ole", ruutu);
                return(null);
            }
            if (this.parkkipaikat[ruutu].onVarattu() == false)
            {
                Console.WriteLine("Ruudussa {0} ei ole ajoneuvoa", ruutu);
                return(null);
            }

            Parkkipaikka     parkkipaikka = this.parkkipaikat[ruutu];
            Moottoriajoneuvo ajoneuvo     = parkkipaikka.ajoneuvo;
            bool             maksettu     = false;
            string           komento      = "-1";

            while (!maksettu)
            {
                Console.WriteLine();
                Console.WriteLine("Kulunut aika {0} tuntia", parkkipaikka.kulunutAika());
                Console.WriteLine("Parkkeerauksen hinta on {0} €", parkkipaikka.laskeHinta());
                Console.Write("Kaiva kuvetta[y/n]: ");

                // *** Start changes
                // impeding that a real string is entered
                // read a char with ReadLine()
                // and use ToString() to convert a char in string

                // old code komento = Console.ReadLine();

                komento = Console.ReadKey().ToString();
                // added to
                komento = komento.ToUpperInvariant();
                // *** End changes

                if (komento == "n")
                {
                    Console.WriteLine("Parkkihalli pitää ajoneuvon!\n");
                    maksettu = true;
                    return(null);
                }
                else if (komento == "y")
                {
                    maksettu = true;
                }
            }

            this.parkkipaikat[ruutu].ajoneuvo = null;

            return(ajoneuvo);
        }
예제 #2
0
        // Lisää auton vapaaseen ruutuun
        public int parkkeeraa(Moottoriajoneuvo auto)
        {
            int vapaaRuutu = this.etsiVapaaRuutu();

            if (vapaaRuutu >= 0)
            {
                this.parkkipaikat[vapaaRuutu].parkkeeraa(auto);
            }
            else
            {
                Console.WriteLine("Parkkihalli on täynnä");
            }

            return(vapaaRuutu);
        }
예제 #3
0
        public void kysyTyyppi()
        {
            string[] vaihtoehdot = { "a", "m" };

            string tyyppi = "-1";

            while (!vaihtoehdot.Contains(tyyppi))
            {
                Console.WriteLine("[a] auto\n"
                                  + "[m] moottoripyörä\n");

                //old code: Console.Write("Anna ajoneuvon tyyppi: ");

                // Continuosly inserting "bmw" as input
                Console.Write("Anna ajoneuvon tyyppi [a / m]: ");

                tyyppi = Console.ReadLine();

                // Making lowerChar imput valid too
                // Old code: nothing
                tyyppi = tyyppi.ToUpperInvariant();
            }

            switch (tyyppi)
            {
            case "a":
                ajoneuvo = new Auto();
                break;

            case "m":
                ajoneuvo = new Moottoripyora();
                break;
            }

            this.vaihe = 2;
        }
예제 #4
0
        static public void Run()
        {
            Console.OutputEncoding = Encoding.UTF8;

            //Ladataan tiedosto, jossa parkissa olevat autot ja tyhjät ruudut.
            parkkihalli.lataaParkkipaikat();
            //Ladataan fillarit
            parkkihalli.pyorateline.lataaFillarit();
            List <string> vaihtoehdot = Ohjeet.TulostaOhjeet();

            Polkupyora fillari = null;
            int        paikka  = -1;

            bool jatka = true;

            while (jatka)
            {
                Console.WriteLine("");
                string komento = "-1";
                while (vaihtoehdot.IndexOf(komento) < 0)
                {
                    Console.Write("Anna komento (o näyttää ohjeen): ");
                    komento = Console.ReadLine();
                }

                Parkkeeraaja parkkeeraaja = new Parkkeeraaja();
                //Kuunnellaan käyttäjän inputtia
                switch (komento)
                {
                case "o":
                    Ohjeet.TulostaOhjeet();
                    break;

                case "p":
                    Console.Clear();
                    // Etsitään alkuun vapaa ruutu. Jos löytyy, kysytään käyttäjältä ajoneuvon tiedot ja merkataan se vapaaseen ruutuun
                    // Lopuksi tallennetaan parkkipaikat tiedostoon
                    Console.Clear();
                    if (parkkihalli.etsiVapaaRuutu() < 0)
                    {
                        Console.WriteLine("Parkkihalli on täynnä!");
                        break;
                    }

                    Console.WriteLine("");
                    var ajoneuvo = parkkeeraaja.parkkeeraa();

                    if (ajoneuvo is Auto || ajoneuvo is Moottoripyora)
                    {
                        Moottoriajoneuvo auto = ajoneuvo as Moottoriajoneuvo;
                        paikka = parkkihalli.parkkeeraa(auto);
                        Console.WriteLine("Parkkeerattu paikalle {0}. Tarvitset tätä poistuessasi!", paikka);
                    }

                    parkkihalli.tallennaParkkipaikat();
                    break;

                case "f":
                    Console.Clear();
                    Console.WriteLine("Jätä polkupyörä. HUOM: Ei takeita, että saat omasi takaisin!");

                    fillari = parkkeeraaja.varastoiFillari();
                    var tallessa = parkkihalli.pyorateline.parkkeeraa(fillari);

                    parkkihalli.pyorateline.tallennaFillarit();

                    if (tallessa)
                    {
                        Console.WriteLine("Homma hyvä");
                    }

                    break;

                case "n":
                    // Kysytään käyttäjältä ruutu ja poistetaan auto parkkihallista. Lopuksi tallennetaan parkkipaikat tiedostoon
                    Console.Clear();
                    Moottoriajoneuvo noudettuAjoneuvo = null;
                    int ruutu = parkkeeraaja.kysyRuutu();
                    noudettuAjoneuvo = parkkihalli.nouda(ruutu);

                    if (noudettuAjoneuvo != null)
                    {
                        Console.WriteLine("Autonne: {0}. Pesty ja puunattu.", noudettuAjoneuvo.kutsumanimi());
                        parkkihalli.tallennaParkkipaikat();
                    }

                    //Ohjeet.TulostaOhjeet();

                    break;

                case "nf":
                    // Kysytään käyttäjältä ruutu ja poistetaan auto parkkihallista. Lopuksi tallennetaan parkkipaikat tiedostoon
                    Console.Clear();
                    parkkihalli.pyorateline.Listaa();
                    paikka  = parkkeeraaja.kysyFillariPaikka();
                    fillari = parkkihalli.pyorateline.nouda(paikka);

                    if (fillari != null)
                    {
                        Console.Write("Fillari: {0}. Pesty ja puunattu. Onko oma [K/E]: ", fillari.kutsumanimi());
                        string vastaus = "";
                        while (vastaus != "K" && vastaus != "E")
                        {
                            vastaus = Console.ReadLine();
                            // I crashed the program adding a " to the input -
                            // the bug can be removed using vastaus = vastaus.Trim();

                            // Making it comparable also iuf imput on "k" and "e"
                            vastaus = vastaus.ToUpperInvariant();
                        }
                        if (vastaus == "K")
                        {
                            Console.WriteLine("Sepäs sattui");
                        }
                        else
                        {
                            Console.WriteLine("Harmi. Kiitos hei!");
                        }
                        Console.WriteLine();
                        parkkihalli.pyorateline.tallennaFillarit();
                    }

                    break;

                case "l":
                case "t":
                    // Listaa parkkihallista löytyvät ajoneuvot
                    Console.Clear();
                    Parkkipaikka parkkipaikka;
                    for (int i = 0; i < parkkihalli.parkkipaikat.Count; i++)
                    {
                        if (parkkihalli.parkkipaikat[i].onVarattu())
                        {
                            parkkipaikka = parkkihalli.parkkipaikat[i];
                            var ajoneuvo1 = parkkipaikka.getOccupant();

                            Console.WriteLine("Ruutu {0}: {1}.", i, ajoneuvo1.kutsumanimi());
                            if (komento == "t")
                            {
                                Console.WriteLine(" - Parkissa {0} lähtien.", parkkipaikka.parkkeerattuAika.ToString("dd.MM.yyyy klo HH:mm:ss"));
                                Console.WriteLine(" - Hinta tähän asti: {0} €, tunteja {1}", parkkipaikka.laskeHinta(), parkkipaikka.kulunutAika());
                            }

                            Console.WriteLine();
                        }
                        else
                        {
                            Console.WriteLine("Ruutu {0}: VAPAA", i);
                        }
                    }
                    Console.WriteLine();
                    //Ohjeet.TulostaOhjeet();

                    break;

                case "lf":
                    // Listaa parkkihallista löytyvät fillarit
                    Console.Clear();
                    parkkihalli.pyorateline.Listaa();

                    break;

                case "c":
                    // Lopettaa ohjelman
                    Console.WriteLine();
                    Console.WriteLine("Hei hei!");
                    System.Threading.Thread.Sleep(2000);

                    Environment.Exit(0);
                    break;
                }
            }
        }
예제 #5
0
 public void parkkeeraa(Moottoriajoneuvo ajoneuvo)
 {
     this.ajoneuvo         = ajoneuvo;
     this.parkkeerattuAika = DateTime.Now;
 }
예제 #6
0
 public Parkkipaikka(Moottoriajoneuvo ajoneuvo = null)
 {
     this.parkkeeraa(ajoneuvo);
 }