/// <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; } }
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; } } }
/// <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); } }
/// <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); } }
/// <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); } }