Пример #1
0
        /// <summary>
        /// Metoda pro odkryti policka
        /// </summary>
        /// <param name="x">Aktualni souradnice x na plose</param>
        /// <param name="y">Aktualni souradnice y na plose</param>
        public virtual void OdkryjHerniPolicko(int x, int y)
        {
            //Kontroluje za je policko skryte
            if (herniPlocha.OdkryjPolicko(x, y))
            {
                KontrolaStavuPolicka = true;
                if (herniPlocha.OdkrytePolicko == HerniPrvek.Lod)    //Kdyz se na policku bude nachazet lod
                {
                    Pocitac.Logika  = true;
                    Pocitac.Policko = HerniPrvek.Lod;
                    for (int i = 0; i < seznamLodi.Count; i++)
                    {
                        if (seznamLodi[i].SkontrolujPozici(x, y))
                        {
                            Pocitac.VelikostZasazeneLode = seznamLodi[i].VelikostLode;
                            //Kontrola zda lod nebyla znicena
                            if (seznamLodi[i].Znicena())
                            {
                                Zvuky.ZniceniLode();
                                Hra.Zprava("Zasáhl si, a zničil jsi loď " + seznamLodi[i].ToString() + " !!!!", ConsoleColor.DarkGreen, ConsoleColor.White);
                                Pocitac.Logika = false;
                                seznamLodi.Remove(seznamLodi[i]);  //Znicenou lod vymaze ze seznamu lodi
                                zniceneLode++;
                                pocetZashu++;
                            }
                            else
                            {
                                Zvuky.ZasahLode();
                                Hra.Zprava("Zasahl si loď " + seznamLodi[i].ToString() + "!!!!", ConsoleColor.DarkGreen, ConsoleColor.White);
                                pocetZashu++;
                            }
                        }
                    }
                    //Prekresleni plochy
                    Hra.NaTahu();
                    Hra.HerniOkno(this);
                    System.Threading.Thread.Sleep(1000);
                }

                else if (herniPlocha.OdkrytePolicko == HerniPrvek.Voda)
                {
                    Pocitac.Policko = HerniPrvek.Voda;
                    Zvuky.Voda();
                    Hra.NaTahu();
                    Hra.HerniOkno(this);
                    System.Threading.Thread.Sleep(1000);
                }
                KontrolaStavuPolicka = true;
            }
            //Kdyz se snazime odkryt odkryte policko
            else
            {
                Zvuky.Chyba();
                Hra.Zprava("Tuto pozici jste už odkryly. Hrajte znovu!!!!!!!", ConsoleColor.Red, ConsoleColor.Cyan);
                KontrolaStavuPolicka = false;
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            Console.Title = "Lodě";   //Nastaveni napisu hlavniho okna
            bool hraPokracuje = true; //pro opakovane zobrazeni hlavni nabidky po ukonceni hry

            Zvuky.prehravac = new System.Media.SoundPlayer();

            Zvuky.MelodieMenu(true);
            while (hraPokracuje)
            {
                //Hlavni nabidka
                switch (Menu.ZobrazHlavniNabidku())
                {
                case PolozkyNabidky.NovaHra:      //Spusteni hry
                    bool podMenu = true;

                    while (podMenu)
                    {
                        //Zobrazi podnabidku
                        switch (Menu.ZobrazPodMenu())
                        {
                        case PolozkyNabidky.HraJednohoHrace:
                            podMenu = false;
                            Zvuky.MelodieMenu(false);
                            Menu.NovaHraJednohoHrace();
                            Zvuky.MelodieMenu(true);
                            break;

                        case PolozkyNabidky.HraDvouHracu:
                            podMenu = false;
                            Zvuky.MelodieMenu(false);
                            Menu.NovaHraProDvaHrace();
                            Zvuky.MelodieMenu(true);
                            break;

                        case PolozkyNabidky.Zpet:
                            podMenu = false;
                            break;
                        }
                    }
                    break;

                case PolozkyNabidky.Ohre:
                    Zvuky.MelodieMenu(false);
                    Menu.Info();
                    Zvuky.MelodieMenu(true);
                    break;

                case PolozkyNabidky.Konec:
                    hraPokracuje = false;
                    break;
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Metoda spusti hru pro dva hrace
        /// </summary>
        static public void NovaHraProDvaHrace()
        {
            Hrac.index = 0;
            bool   kontrolaJmena1 = true;
            bool   kontrolaJmena2 = true;
            string vstup1         = "Zadejte jméno 1.hráče: ";
            string vstup2         = "Zadejte jméno 2.hráče: ";

            while (kontrolaJmena1) //Ziskani jmena 1.hrace
            {
                Console.Clear();
                Console.SetCursorPosition(1, 3);
                Console.Write(vstup1);
                jmenoHrace1 = Console.ReadLine();

                if (jmenoHrace1.Length < 10)
                {
                    kontrolaJmena1 = false;
                }
                else
                {
                    Hra.Zprava("Zadali jste příliš dlouhé jméno. Můžete zadat Max. 10 znaků", ConsoleColor.Red, ConsoleColor.Cyan);
                }
            }

            while (kontrolaJmena2)  //Ziskani jmena 2.hrace
            {
                Console.Clear();
                Console.SetCursorPosition(1, 3);
                Console.Write(vstup2);
                jmenoHrace2 = Console.ReadLine();

                if (jmenoHrace2.Length < 10)
                {
                    kontrolaJmena2 = false;
                }
                else
                {
                    Hra.Zprava("Zadali jste příliš dlouhé jméno. Můžete zadat Max. 10 znaků", ConsoleColor.Red, ConsoleColor.Cyan);
                }
            }

            Hrac hrac1 = new Hrac(jmenoHrace1, ConsoleColor.DarkGreen);
            Hrac hrac2 = new Hrac(jmenoHrace2, ConsoleColor.Magenta);

            hrac1.OdkryjPolicko += hrac2.OdkryjHerniPolicko;
            hrac2.OdkryjPolicko += hrac1.OdkryjHerniPolicko;
            hrac1.VytvoreniHerniPlochy();
            System.Threading.Thread.Sleep(300);
            hrac2.VytvoreniHerniPlochy();
            hrac1.Pohyb += hrac2.PohybPoHerniPlose;
            hrac2.Pohyb += hrac1.PohybPoHerniPlose;

            //Herni smycka
            while (hrac1.PocetLodi > 0 && hrac2.PocetLodi > 0 && !hrac1.UkonceniHry && !hrac2.UkonceniHry)
            {
                try
                {
                    if (hrac1.NaTahu)
                    {
                        hrac2.KontrolaStavuPolicka = false;
                        while (!hrac2.KontrolaStavuPolicka && !hrac1.UkonceniHry)
                        {
                            Hra.hrac = hrac1;
                            Hra.NaTahu();
                            Hra.HerniOkno(hrac2);
                            hrac1.Hraje();
                        }
                        if (!hrac2.UkonceniHry)
                        {
                            hrac1.NaTahu = false;
                            hrac2.NaTahu = true;
                        }
                    }

                    else if (hrac2.NaTahu)
                    {
                        hrac1.KontrolaStavuPolicka = false;
                        while (!hrac1.KontrolaStavuPolicka && !hrac2.UkonceniHry)
                        {
                            Hra.hrac = hrac2;
                            Hra.NaTahu();
                            Hra.HerniOkno(hrac1);
                            hrac2.Hraje();
                        }

                        if (!hrac2.UkonceniHry)
                        {
                            hrac2.NaTahu = false;
                            hrac1.NaTahu = true;
                        }
                    }
                }

                catch
                {
                    Zvuky.Chyba();
                    Hra.Zprava("Neočekávaná chyba", ConsoleColor.Red, ConsoleColor.Cyan);
                }
            }

            //Vypise na konci hry kdo vyhral
            if (hrac1.PocetLodi > 0 && !hrac1.UkonceniHry && !hrac2.UkonceniHry)
            {
                Zvuky.Vyhra();
                Hra.ZpravaKonecHry("Vyhrál(a)", hrac1);
            }
            else if (hrac2.PocetLodi > 0 && !hrac1.UkonceniHry && !hrac2.UkonceniHry)
            {
                Zvuky.Vyhra();
                Hra.ZpravaKonecHry("Vyhrál(a)", hrac2);
            }
        }
Пример #4
0
        /// <summary>
        /// Metoda spusti hru pro jednoho hrace
        /// </summary>
        public static void NovaHraJednohoHrace()
        {
            Hrac.index = 0;
            bool   kontrolaJmena = true;
            string vstup         = "Zadejte jméno hráče: ";

            while (kontrolaJmena)  //ziskani jemna hrace
            {
                Console.Clear();
                Console.SetCursorPosition(1, 3);
                Console.Write(vstup);
                jmenoHrace1 = Console.ReadLine();

                if (jmenoHrace1.Length < 10)
                {
                    kontrolaJmena = false;
                }
                else
                {
                    Hra.Zprava("Zadali jste příliš dlouhé jméno. Můžete zadat Max. 10 znaků", ConsoleColor.Red, ConsoleColor.Cyan);
                }
            }

            Hrac    hrac    = new Hrac(jmenoHrace1, ConsoleColor.DarkGreen);
            Pocitac pocitac = new Pocitac(ConsoleColor.Red);

            hrac.OdkryjPolicko    += pocitac.OdkryjHerniPolicko;
            pocitac.OdkryjPolicko += hrac.OdkryjHerniPolicko;
            hrac.VytvoreniHerniPlochy();
            System.Threading.Thread.Sleep(300);
            pocitac.VytvoreniHerniPlochy();
            hrac.Pohyb += pocitac.PohybPoHerniPlose;

            //Herni smycka
            while (hrac.PocetLodi > 0 && pocitac.PocetLodi > 0 && !hrac.UkonceniHry && !pocitac.UkonceniHry)
            {
                try
                {
                    if (hrac.NaTahu)
                    {
                        pocitac.KontrolaStavuPolicka = false;
                        while (!pocitac.KontrolaStavuPolicka && !hrac.UkonceniHry)
                        {
                            Hra.hrac = hrac;
                            Hra.NaTahu();
                            Hra.HerniOkno(pocitac);
                            hrac.Hraje();
                        }
                        if (!hrac.UkonceniHry)
                        {
                            hrac.NaTahu    = false;
                            pocitac.NaTahu = true;
                        }
                    }
                    else if (pocitac.NaTahu)
                    {
                        Hra.hrac = pocitac;
                        Hra.NaTahu();
                        Hra.HerniOkno(hrac);
                        pocitac.Hraje();
                        pocitac.NaTahu = false;
                        hrac.NaTahu    = true;
                    }
                }

                catch
                {
                    Zvuky.Chyba();
                    Hra.Zprava("Neočekávaná chyba", ConsoleColor.Red, ConsoleColor.Cyan);
                }
            }

            //Vypis viteze na konci hry
            if (hrac.PocetLodi > 0 && !hrac.UkonceniHry && !pocitac.UkonceniHry)
            {
                Zvuky.Vyhra();
                Hra.ZpravaKonecHry("Vyhrál(a)", hrac);
            }
            else if (pocitac.PocetLodi > 0 && !hrac.UkonceniHry && !pocitac.UkonceniHry)
            {
                Zvuky.Prohra();
                Hra.ZpravaKonecHry("Vyhrál(a)", pocitac);
            }
        }
Пример #5
0
        /// <summary>
        /// Metoda Hraje, umoznuje pohyb na herni plose soupere
        /// </summary>
        public virtual void Hraje()
        {
            bool pohybHrace = true;

            Console.SetCursorPosition(herniPlocha.SirkaX + 35, 5);
            Console.WriteLine("Aktualní pozice: " + herniPlocha.legenda[x] + " , " + herniPlocha.legenda[y]); //Vypise aktualni pozici na plose
            Hra.Napoveda();
            Pohyb(x, y);                                                                                      //Vyznaci policko na kterym se nachazime

            while (pohybHrace)
            {
                klavesa = Console.ReadKey(true);

                switch (klavesa.Key)
                {
                //pohyb na horu
                case ConsoleKey.UpArrow:
                    y--;
                    if (y < 0)
                    {
                        y = herniPlocha.VyskaY - 1;
                    }
                    break;

                //Pohyb dolu
                case ConsoleKey.DownArrow:
                    y++;
                    if (y > herniPlocha.VyskaY - 1)
                    {
                        y = 0;
                    }
                    break;

                //Pohyb do leva
                case ConsoleKey.LeftArrow:
                    x--;
                    if (x < 0)
                    {
                        x = herniPlocha.SirkaX - 1;
                    }
                    break;

                //Pohyb do prava
                case ConsoleKey.RightArrow:
                    x++;
                    if (x > herniPlocha.SirkaX - 1)
                    {
                        x = 0;
                    }
                    break;

                //Stisk ENTER odkryje policko
                case ConsoleKey.Enter:
                    pohybHrace = false;
                    break;

                //Ukonceni hry
                case ConsoleKey.Escape:
                    pohybHrace           = false;
                    UkonceniHry          = true;
                    KontrolaStavuPolicka = true;
                    break;
                }
                Zvuky.Pohyb();  //Zvuk pri pohybu
                Pohyb(x, y);
                Console.SetCursorPosition(herniPlocha.SirkaX + 35, 5);
                Console.WriteLine("Aktualní pozice: " + herniPlocha.legenda[x] + " , " + herniPlocha.legenda[y]);
                Hra.Napoveda();
            }

            //Kdyz neni stisknuto ESC odkryje policko
            if (klavesa.Key != ConsoleKey.Escape)
            {
                OdkryjPolicko(x, y);
            }
        }