public void ZobrazZpravuPoBitve(bool jeHracUtocnik, bool vyhral, Provincie utociciProvincie, Provincie oblehanaProvincie, Jednotka[] utociciArmada, Jednotka[] puvodniUtociciArmada, Jednotka[] braniciArmada, Jednotka[] puvodniBraniciArmada) { Hra.ZobrazPrehled(this, true); if (jeHracUtocnik) { if (vyhral) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" ÚTOK NA PROVINCII {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper()); Console.WriteLine("Útok na provincii {0} - {1} byl úspěšný!", oblehanaProvincie.JmenoProvincie, oblehanaProvincie.Vlastnik.Jmeno); Console.WriteLine("Provincie {0} byla obsazena", oblehanaProvincie.JmenoProvincie); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" ÚTOK NA PROVINCII {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper()); Console.WriteLine("Útok na provincii {0} - {1} selhal!", oblehanaProvincie.JmenoProvincie, oblehanaProvincie.Vlastnik.Jmeno); Console.WriteLine("Naše jednotky byly poraženy"); Console.ResetColor(); } } else { if (vyhral) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" OBRANA PROVINCIE {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper()); Console.WriteLine("Na naší provincii {0} zaútočil {1} z provincie {2}", oblehanaProvincie.JmenoProvincie, utociciProvincie.Vlastnik.Jmeno, utociciProvincie.JmenoProvincie); Console.WriteLine("Naše provincie byla ubráněna!"); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" OBRANA PROVINCIE {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper()); Console.WriteLine("Na naší provincii {0} zaútočil {1} z provincie {2}", oblehanaProvincie.JmenoProvincie, utociciProvincie.Vlastnik.Jmeno, utociciProvincie.JmenoProvincie); Console.WriteLine("Naše provincie byla obsazena!"); Console.ResetColor(); } } Console.WriteLine("\nNaše jednotky:"); for (int i = 0; i < puvodniUtociciArmada.Length; i++) { Jednotka j = puvodniUtociciArmada[i]; Console.WriteLine("{0}: {1} -{2}", j.Jmeno, j.Pocet, j.Pocet - utociciArmada[i].Pocet); } Console.WriteLine("\n\nNepřátelské jednotky:"); for (int i = 0; i < puvodniBraniciArmada.Length; i++) { Jednotka j = puvodniBraniciArmada[i]; Console.WriteLine("{0}: {1} -{2}", j.Jmeno, j.Pocet, j.Pocet - braniciArmada[i].Pocet); } Console.WriteLine("\nENTER"); Console.ReadLine(); }
public void PosliJednotky(Provincie cilovaProvincie, Jednotka[] armada) { //Pokud je ćilová provincie naše - příjme jednokty - !zaútočí if (Hra.AktualniHrac.SeznamProvincii.IndexOf(cilovaProvincie) != -1) { if (Hra.AktualniHrac == Hra.Player) { Hra.ZobrazPrehled(Hra.Player, true); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Jednotky z provincie {0} dorazily do provincie {1}", JmenoProvincie, cilovaProvincie.JmenoProvincie); Hra.VypisArmadu(armada.ToList()); Console.ResetColor(); Console.WriteLine("\n\nENTER"); Console.ReadLine(); } cilovaProvincie.PrijmiJednotky(armada); } else { ZautocNaProvincii(cilovaProvincie, armada.ToList()); } }
public void ZvysPriorituProvincie(Provincie provincieProInkrementaci, int hodnota) { Hrac vlastnik = provincieProInkrementaci.Vlastnik; int indexVlastnika = Souperi.IndexOf(vlastnik); int indexProvincie = vlastnik.SeznamProvincii.IndexOf(provincieProInkrementaci); PriorityProvinciiSouperu[indexVlastnika][indexProvincie] += hodnota; }
public override void VyberJednotkyProPodporu(Provincie cilovaProvincie) { List <Jednotka> armada = VyberJednotky(null); if (armada != null) { Hra.AktualniProvincie.PridejJednotkyProPodporu(armada.ToArray()); Hra.AktualniProvincie.PridejProvincieProPodporu(cilovaProvincie); } else { } }
public override void VyberJednoktyDoBoje(Provincie nepratelskaProvincie) { List <Jednotka> armada = VyberJednotky(null); if (armada != null) { Hra.AktualniProvincie.PridejJednotkyDoUtoku(armada.ToArray()); Hra.AktualniProvincie.PridejProvincieProUtok(nepratelskaProvincie); } else { } }
protected override Provincie ZjistiVlastnenouProvincii() { Provincie vlastnenaProvincie = null; foreach (Provincie p in Hra.SeznamProvincii) { if (this == p.Ninjove || this == p.NinjoveMimoProvincii) { vlastnenaProvincie = p; } } return(vlastnenaProvincie); }
public void PrepravSuroviny(int[] suroviny, Provincie vybranaProvincie) { if (Hra.AktualniHrac == Hra.Player) { Hra.ZobrazPrehled(Hra.Player, true); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Suroviny z provincie {0} byly doručeny do provincie {1}\n", JmenoProvincie, vybranaProvincie.JmenoProvincie); Console.WriteLine("Zlato: {0} Dřevo: {1} Rýže: {2}\n", suroviny[0], suroviny[1], suroviny[2]); Console.ResetColor(); Console.WriteLine("ENTER"); Console.ReadLine(); } vybranaProvincie.PrepoctiSuroviny(suroviny[0], suroviny[1], suroviny[2]); }
public virtual void VyslatNinju(Provincie nepratelskaProvincie) { Hra.AktualniBudova.ZobrazInformace(); Console.WriteLine("Vyslat ninju do: {1}, {0}\n", nepratelskaProvincie.Vlastnik.Jmeno, nepratelskaProvincie.JmenoProvincie); if (Hra.AktualniProvincie.Ninjove.Pocet == 0) { Console.WriteLine("Nejsou dostupní žádní ninjové\n"); Console.WriteLine("1 -> Zpět"); int volba = Hra.VyberZnabidky(1); ((Hrad)Hra.AktualniBudova).VyberAkci(); } else { Console.WriteLine("Ninjové: {0}\n", Hra.AktualniProvincie.Ninjove.Pocet); Console.WriteLine("1 -> Vyslat ninju!"); Console.WriteLine("2 -> Zpět"); int volba = Hra.VyberZnabidky(2); switch (volba) { case 1: Hra.AktualniBudova.ZobrazInformace(); Hra.AktualniProvincie.PridejProvinciiProSpehovani(nepratelskaProvincie); Hra.AktualniProvincie.PridejNinjyMimoProvicnii(1); Hra.AktualniProvincie.Ninjove.PridejPocet(-1); Console.WriteLine("Ninja byl poslán do provincie {1} - {0}", nepratelskaProvincie.Vlastnik.Jmeno, nepratelskaProvincie.JmenoProvincie); Console.WriteLine("\n1 -> Zpět"); volba = Hra.VyberZnabidky(1); ((Hrad)Hra.AktualniProvincie.Budovy[0]).VyberAkci(); break; case 2: ((Hrad)Hra.AktualniBudova).VyberAkci(); break; } } }
protected virtual Provincie ZjistiVlastnenouProvincii() { Provincie vlastnenaProvincie = null; foreach (Provincie p in Hra.SeznamProvincii) { foreach (Jednotka j in p.Jednotky) { if (j == this) { vlastnenaProvincie = p; break; } } } return(vlastnenaProvincie); }
protected Provincie ZjistiVlastnenouProvincii() { Provincie vlastnenaProvincie = null; foreach (Provincie p in Hra.SeznamProvincii) { foreach (Budova b in p.Budovy) { if (b == this) { vlastnenaProvincie = p; break; } } } return(vlastnenaProvincie); }
public void VyberZpravu(Provincie vybranaProvincie, bool lokaceCelaMapa) { if (lokaceCelaMapa) { Console.Clear(); Hra.ZobrazPrehled(Hra.Player, true); } else { ((Hrad)Hra.AktualniProvincie.Budovy[0]).ZobrazInformace(); } //////////////////////////////////////////////////////////////////// bool je = false; foreach (Zprava zprava in ZpravyNinju) { if (zprava.JmenoProvincie == vybranaProvincie.JmenoProvincie) { ZobrazVybranouZpravu(zprava); je = true; break; } } /////////////////////////////////////////////////////////////////////// if (je == false) { Console.WriteLine("Provincie nebyla špehována - vyšli do ni Ninju aby o ní poskytl informace"); } Console.WriteLine("\n1 -> Zpět"); int volba = Hra.VyberZnabidky(1); if (!lokaceCelaMapa) { ((Hrad)Hra.AktualniProvincie.Budovy[0]).VyberAkci(); } // else = Hra -> ZobrazNabidku(vNepratelskeProvincii) }
private void VyberSurovinyProProvincii(Provincie vybranaProvincie) { int[] suroviny = new int[3]; string[] jmenaSurovn = { "Zlato: ", "Dřevo: ", "Rýže: " }; int[] surovinyMax = { Hra.AktualniProvincie.Zlato, Hra.AktualniProvincie.Drevo, Hra.AktualniProvincie.Ryze }; for (int i = 0; i <= suroviny.Length; i++) { ZobrazInformace(); Console.WriteLine("Poslat suroviny do {0}", vybranaProvincie.JmenoProvincie); Console.WriteLine("Vybrané suroviny: Zlato: {0} Dřevo: {1} Rýže: {2}", suroviny[0], suroviny[1], suroviny[2]); if (i < suroviny.Length) { suroviny[i] = Hra.CtiCislo(jmenaSurovn[i], surovinyMax[i]); } } Console.WriteLine("\n1 -> Polsat suroviny"); Console.WriteLine("2 -> Zpět"); volba = Hra.VyberZnabidky(2); switch (volba) { case 1: Hra.AktualniProvincie.PridejProvinciiProDovozSurovin(vybranaProvincie); Hra.AktualniProvincie.PridejSurovinyProDovoz(suroviny); Hra.AktualniProvincie.PrepoctiSuroviny(-suroviny[0], -suroviny[1], -suroviny[2]); ZobrazInformace(); Console.WriteLine("Suroviny jsou na cestě do provincie {0}\n", vybranaProvincie.JmenoProvincie); Console.WriteLine("1 -> Zpět"); volba = Hra.VyberZnabidky(1); PoslatSuroviny(); break; case 2: PoslatSuroviny(); break; } }
public void Spehuj(Provincie nepratelskaProvincie) //NinjaMimoProvincii { string jmenoVladce = nepratelskaProvincie.Vlastnik.Jmeno; string jmenoProvincie = nepratelskaProvincie.JmenoProvincie; int pocetObyvatel = nepratelskaProvincie.Populace; int levelHradeb = 0; //Level Hradeb - zjištění zda soupeř postavil hradby Budova hradby = new Budova(); foreach (Budova budova in nepratelskaProvincie.Budovy) { if (budova is Hradby) { levelHradeb = hradby.Level; } } //Kontrola pokud již provincie špehována byla :) if (Hra.AktualniHrac.ZpravyNinju.Count > 0) { int index = -1; for (int i = 0; i < Hra.AktualniHrac.ZpravyNinju.Count; i++) { if (Hra.AktualniHrac.ZpravyNinju[i].JmenoProvincie == nepratelskaProvincie.JmenoProvincie) { index = i; } } //V cyklu nelze odebrat element z kolekce --> chyba - změna délky kolekce if (index != -1) { Hra.AktualniHrac.ZpravyNinju.RemoveAt(index); } } //Návrat Hra.AktualniProvincie.Ninjove.PridejPocet(1); Pocet--; //ninja mimo provincii Hra.AktualniHrac.ZpravyNinju.Add(new Zprava(jmenoVladce, jmenoProvincie, pocetObyvatel, levelHradeb)); }
public bool JeOdemknutaVProvincii() { bool jeOdemknuta = false; Provincie vlastnenaProvincie = VlastnenaProvincie; if (vlastnenaProvincie != null) { foreach (Budova b in vlastnenaProvincie.Budovy) { if (b == this) { jeOdemknuta = true; break; } } } return(jeOdemknuta); }
protected Budova ZjistiVlastnenouBudovu() { Provincie vlastnenaProvincie = VlastnenaProvincie; Budova vlastnenaBudova = null; foreach (Budova b in vlastnenaProvincie.Budovy) { if (b.JednotkyProReferenci != null) { foreach (Jednotka j in b.JednotkyProReferenci) { if (j.Jmeno == Jmeno) { vlastnenaBudova = b; break; } } } } return(vlastnenaBudova); }
private void VyberNepratelskouProvincii() { //Výběr nepřátelské provincie ZobrazInformace(); Console.WriteLine("{0} \n", souper.Jmeno); souper.VypisProvincieProNabidku(); Console.WriteLine("\n{0} -> Zpět", souper.SeznamProvincii.Count + 1); volba = Hra.VyberZnabidky(souper.SeznamProvincii.Count + 1); if (volba == souper.SeznamProvincii.Count + 1) { NaplanujUtok(); } else { vybranaProvincie = souper.SeznamProvincii[volba - 1]; VyberAkci(); } }
private void PostavJednotky() { Provincie p = Hra.AktualniProvincie; Jednotka[] JednotkyProRekrutovani = p.Jednotky.ToArray(); int nahoda = Hra.NahodnyGenerator.Next(0, 2); if (nahoda == 1) { Array.Reverse(JednotkyProRekrutovani); } int podminkaZlata = 0; int podminkaDreva = 0; if (zvoleneUtocneKolo) { bool jeBudovaKrozsireni = false; foreach (Budova b in Hra.AktualniProvincie.Budovy) { if (!(b is Domy) && b.JsouSurovinyNaRozsireni()) { jeBudovaKrozsireni = true; } } if (jeBudovaKrozsireni) { podminkaZlata = 500; podminkaDreva = 500; } } while (true) { bool lzeRekrutovatAsponJednuJednotku = false; foreach (Jednotka j in JednotkyProRekrutovani) { Obchoduj(); Budova vlastnenaBudova = j.VlastnenaBudova; if (j.JeOdemknutaVbudove() == false || vlastnenaBudova.Level == 0) { if (vlastnenaBudova is Hrad) { if (Hra.Den > 5) { RozsirBudovu(vlastnenaBudova); } } else { RozsirBudovu(vlastnenaBudova); } } if (j.JeOdemknutaVbudove() == true && vlastnenaBudova.Level != 0) { if (Hra.AktualniProvincie.Zlato <= podminkaZlata || Hra.AktualniProvincie.Drevo <= podminkaDreva) { break; } if (((p.MaxPopulace - Convert.ToInt32(Math.Round(((double)p.Populace / 100) * 20))) <= p.Populace) || (Hra.AktualniProvincie.Populace == Hra.AktualniProvincie.MaxPopulace)) { Budova domy = p.Budovy[4]; if (domy.JsouSurovinyNaRozsireni()) { RozsirBudovu(domy); //Domy } else { break; } } int puvodniPocet = j.Pocet; j.NaverbujJednotky(podminkaZlata, podminkaDreva); if (puvodniPocet != j.Pocet) { lzeRekrutovatAsponJednuJednotku = true; } } } if (!lzeRekrutovatAsponJednuJednotku) { break; } if (((p.MaxPopulace - Convert.ToInt32(Math.Round(((double)p.Populace / 100) * 20))) <= p.Populace) || (Hra.AktualniProvincie.Populace == Hra.AktualniProvincie.MaxPopulace)) { Budova domy = p.Budovy[4]; if ((!domy.JsouSurovinyNaRozsireni()) || domy.Level == domy.MaxLevel) { break; } } //if (zvoleneUtocneKolo == false && Hra.Den > 5) break; Array.Reverse(JednotkyProRekrutovani); } Hra.AktualniProvincie.Ninjove.NaverbujJednotky(podminkaZlata, podminkaDreva); }
public void PridejProvinciiProDovozSurovin(Provincie vybranaProvincie) { ProvincieProDovozSurovin.Add(vybranaProvincie); }
public void PridejProvinciiProSpehovani(Provincie nepratelskaProvincie) { NepratelskeProvincieProSpehovani.Add(nepratelskaProvincie); }
public void PridejProvincieProPodporu(Provincie provincie) { ProvincieProPodporu.Add(provincie); }
public void PridejProvincieProUtok(Provincie nepratelskaProvincie) { ProvincieProUtok.Add(nepratelskaProvincie); }
private static void ZahajHru() { Console.Clear(); //Deklarace provincií Provincie owari = new Provincie("Owari"); Provincie suruga = new Provincie("Suruga"); Provincie totomi = new Provincie("Tótomi"); Provincie mino = new Provincie("Mino"); Provincie mikawa = new Provincie("Mikawa"); Provincie kai = new Provincie("Kai"); Provincie omi = new Provincie("Ōmi"); Provincie ecizen = new Provincie("Echizen"); Provincie ecigo = new Provincie("Echigo"); Provincie aki = new Provincie("Aki"); Provincie izu = new Provincie("Izu"); Provincie izumo = new Provincie("Izumo"); Provincie[] seznamProvincii = { owari, suruga, totomi, mino, mikawa, kai, omi, ecizen, ecigo, aki, izu, izumo }; //Deklarace vládců - typ Pocitac Hrac[] vladci = new Hrac[11]; vladci[0] = new Pocitac("Nobunaga Oda", new Provincie[] { owari }); vladci[1] = new Pocitac("Imagawa Jošimoto", new Provincie[] { suruga, totomi }); vladci[2] = new Pocitac("Dosan Saito", new Provincie[] { mino }); vladci[3] = new Pocitac("Iejasu Tokugawa", new Provincie[] { mikawa }); vladci[4] = new Pocitac("Azai Nagamasa", new Provincie[] { omi }); vladci[5] = new Pocitac("Asakura Yoshikage", new Provincie[] { ecizen }); vladci[6] = new Pocitac("Shingen Takeda", new Provincie[] { kai }); vladci[7] = new Pocitac("Kenshin Uesugi", new Provincie[] { ecigo }); vladci[8] = new Pocitac("Motonari Mori", new Provincie[] { aki }); vladci[9] = new Pocitac("Soun Hojo", new Provincie[] { izu }); vladci[10] = new Pocitac("Amago Yoshihisa", new Provincie[] { izumo }); //Vybraní si vládce za kterého bude hrát hráč - ostatní zůstanou typu Pocitac int indexVybranehoVladce = Hra.VyberVladce(vladci); vladci[indexVybranehoVladce] = new Hrac(vladci[indexVybranehoVladce].Jmeno, vladci[indexVybranehoVladce].SeznamProvincii.ToArray()); //Deklarace hry Hra.DeklarujHru(vladci, seznamProvincii, indexVybranehoVladce); /////////////////////////////////////////////////////////////////////////////////////// //Hra while (true) { foreach (Hrac h in Hra.Vladci) { h.Hraj(); } Console.Clear(); Console.WriteLine("Kolo ukončeno"); Console.WriteLine("ENTER"); Console.ReadLine(); ///////////////////////////// //Skončení kol - vyhodnocení: //Vyhodnocení produkce, špehování a přesunů suroviny atd atd atd atd foreach (Hrac h in Hra.Vladci) { Hra.NastavAktualnihoHrace(h); foreach (Provincie provinceVladce in h.SeznamProvincii) { Hra.NastavAktualniProvincii(provinceVladce); //Vyhodnocení produkce provinceVladce.PrijmiVyprodukovaneSuroviny(); //Vyhodnocení špehovacích požadavků if (provinceVladce.NepratelskeProvincieProSpehovani.Count != 0) { foreach (Provincie provincieProSpehovani in provinceVladce.NepratelskeProvincieProSpehovani) { ((Ninja)provinceVladce.NinjoveMimoProvincii).JdiDoNepratelskeProvincie(provincieProSpehovani); } provinceVladce.VynulujProvincieProSpehovani(); } //Vyhodnocení dovozních požadavků if (provinceVladce.ProvincieProDovozSurovin.Count != 0) { int index = 0; foreach (Provincie provincieProDovoz in provinceVladce.ProvincieProDovozSurovin) { provinceVladce.PrepravSuroviny(provinceVladce.SurovinyProDovoz[index], provincieProDovoz); index++; } provinceVladce.VynulujProvincieASurovinyProDovoz(); } //Vyhodnocení požadávků podpory if (provinceVladce.ProvincieProPodporu.Count != 0) { for (int i = 0; i < provinceVladce.ProvincieProPodporu.Count; i++) { provinceVladce.PosliJednotky(provinceVladce.ProvincieProPodporu[i], provinceVladce.JednotkyProPodporu[i]); } provinceVladce.VynulujJednoktyAProvincieProPodporu(); } } } //Vyhodnocení útočných požadavků 2. foreach kvůli změnám v kolekci hra.vládci //Kvůli změně kolekci bool pruchod = true; while (pruchod) { pruchod = false; foreach (Hrac utociciVladce in Hra.Vladci) { Hra.NastavAktualnihoHrace(utociciVladce); foreach (Provincie utociciProvincie in utociciVladce.SeznamProvincii) { Hra.NastavAktualniProvincii(utociciProvincie); if (utociciProvincie.ProvincieProUtok.Count != 0) { for (int i = 0; i < utociciProvincie.ProvincieProUtok.Count; i++) { utociciProvincie.PosliJednotky(utociciProvincie.ProvincieProUtok[i], utociciProvincie.JednotkyDoUtoku[i]); } if (Hra.Vladci.Count == 1 || Hra.Player.SeznamProvincii.Count == 0) { //utočící vládce porazil posledního vládce a stává se vítězem - hra končí Hra.ZobrazViteznouZpravu(utociciVladce); } utociciProvincie.VynulujProvincieAJednotkyProUtok(); pruchod = true; break; } } if (pruchod == true) { break; } } } //Zvyýší den o 1 Hra.InkrementujDen(); } }
public override void VyslatNinju(Provincie nepratelskaProvincie) { Hra.AktualniProvincie.PridejProvinciiProSpehovani(nepratelskaProvincie); Hra.AktualniProvincie.PridejNinjyMimoProvicnii(1); Hra.AktualniProvincie.Ninjove.PridejPocet(-1); }
public void PrepocitejPriorityProvinciiProNovehoVlastnika(Hrac novyVlastnik, Hrac byvalyVlastnik, Provincie obsazenaProvincie) { if (byvalyVlastnik != this) { int indexByvalehoVlastnika = Souperi.IndexOf(byvalyVlastnik); int indexProvincieByvalehoVlastnika = byvalyVlastnik.SeznamProvincii.IndexOf(obsazenaProvincie); PriorityProvinciiSouperu[indexByvalehoVlastnika].RemoveAt(indexProvincieByvalehoVlastnika); } if (novyVlastnik != this) { int indexNovehoVlastnika = Souperi.IndexOf(novyVlastnik); PriorityProvinciiSouperu[indexNovehoVlastnika].Add(0); } }
private void ZagrajUtocneKolco() { Budova dojo = Hra.AktualniProvincie.Budovy[5]; if (dojo.Level == 0) { int postavit = Hra.NahodnyGenerator.Next(0, 2); if (postavit == 1) { while (dojo.Level != 3 && dojo.JsouSurovinyNaRozsireni()) { RozsirBudovu(dojo); } } } PostavJednotky(); List <Hrac> souperiSnejvyssiPrioritou = new List <Hrac>(); int nejvyssiPrioritaSouperu = PrioritySouperu.Max(); //Do pole souepriSnejvysiiBlabla přida soupeře se stejnou prioritou ktera je nejvyssi for (int i = 0; i < Souperi.Count; i++) { if (PrioritySouperu[i] == nejvyssiPrioritaSouperu) { souperiSnejvyssiPrioritou.Add(Souperi[i]); } } int indexVybranehoSoupere = Hra.NahodnyGenerator.Next(0, souperiSnejvyssiPrioritou.Count); Hrac vybranySouper = souperiSnejvyssiPrioritou[indexVybranehoSoupere]; int indexVybranehoSoupereVkolekci = Souperi.IndexOf(vybranySouper); //Do poleProvincieSnejvyssiPrioritou přidá provincie s prioritou té nejvyšší int nejvyssiPrioritaProvincie = PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci].Max(); List <Provincie> provincieSnejvyssiPrioritou = new List <Provincie>(); for (int i = 0; i < vybranySouper.SeznamProvincii.Count; i++) { if (PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci][i] == nejvyssiPrioritaProvincie) { provincieSnejvyssiPrioritou.Add(vybranySouper.SeznamProvincii[i]); } } int indexVybraneProvincie = Hra.NahodnyGenerator.Next(0, provincieSnejvyssiPrioritou.Count); Provincie vybranaProvincie = provincieSnejvyssiPrioritou[indexVybraneProvincie]; int indexVybraneProvincieVkolekci = vybranySouper.SeznamProvincii.IndexOf(vybranaProvincie); //Kontrola zda byla provincie špehována Zprava zpravaOSpehovani = null; bool bylaSpehovana = false; foreach (Zprava z in ZpravyNinju) { if (vybranaProvincie.JmenoProvincie == z.JmenoProvincie) { bylaSpehovana = true; zpravaOSpehovani = z; } } if (bylaSpehovana && zpravaOSpehovani.Stari < 4) { if (Hra.AktualniProvincie.Populace <= zpravaOSpehovani.PocetObyvatel) { PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci][indexVybraneProvincieVkolekci]++; } int priorita = PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci][indexVybraneProvincieVkolekci]; if (Hra.AktualniProvincie.Populace >= zpravaOSpehovani.PocetObyvatel || priorita > 30) { VyberJednoktyDoBoje(vybranaProvincie); } } else { Jednotka ninjove = Hra.AktualniProvincie.Ninjove; if (ninjove.Pocet != 0) { VyslatNinju(vybranaProvincie); } else { if (ninjove.JeOdemknutaVbudove() == false) //dojo { RozsirBudovu(ninjove.VlastnenaBudova); } if (ninjove.JeOdemknutaVbudove() == true) { ninjove.NaverbujJednotky(); if (ninjove.Pocet != 0) { VyslatNinju(vybranaProvincie); } } } } //Vyšpehuje ostatní vesnice if (Hra.AktualniProvincie.Ninjove.Pocet != 0) { List <Provincie> dalsiProvincieKeSpehovani = new List <Provincie>(); foreach (Provincie p in Hra.SeznamProvincii) { if (p.Vlastnik != this && Hra.AktualniProvincie.NepratelskeProvincieProSpehovani.IndexOf(p) == -1) { dalsiProvincieKeSpehovani.Add(p); } } for (int i = 0; i < Hra.AktualniProvincie.Ninjove.Pocet; i++) { if (dalsiProvincieKeSpehovani.Count == 0) { break; } int nahodnyIndexProvincie = Hra.NahodnyGenerator.Next(0, dalsiProvincieKeSpehovani.Count); Provincie provincieKeSpehovani = dalsiProvincieKeSpehovani[nahodnyIndexProvincie]; VyslatNinju(vybranaProvincie); dalsiProvincieKeSpehovani.RemoveAt(nahodnyIndexProvincie); } } }
private void ZagrajEkonomickeKolco() { //Změna budovy pro rozšíření podle dostatků suroviny Provincie p = Hra.AktualniProvincie; if (p.Budovy[5].Level == 0) { RozsirBudovu(p.Budovy[5]); //Dojo } List <int> indexyProVybraniBudov = new List <int>(); for (int i = 0; i < p.Budovy.Count; i++) { if (i != 1 && i != 2) { indexyProVybraniBudov.Add(i); } } List <Budova> budovyKrozsireni = new List <Budova>(); budovyKrozsireni.Add(p.Budovy[1]); //pole budovyKrozsireni.Add(p.Budovy[2]); //pila for (int i = 0; i < indexyProVybraniBudov.Count; i++) { int index = Hra.NahodnyGenerator.Next(0, indexyProVybraniBudov.Count); budovyKrozsireni.Add(p.Budovy[indexyProVybraniBudov[index]]); indexyProVybraniBudov.RemoveAt(index); } int podminkaZustatekDreva = 0; int podminkaZustatekZlata = 0; if (zvoleneUtocneKolo == false) { if (Hra.Den <= 5) { podminkaZustatekDreva = 1200; podminkaZustatekZlata = 1200; } else { podminkaZustatekDreva = 600; podminkaZustatekZlata = 600; } } while (true) { bool lzePostaviAsponJednuBudovu = false; for (int i = 0; i < p.Budovy.Count; i++) { //Určení budov ke stavbě /////////////////////////////////////////////////////////// //P.Budovy se může zvětit po vyzkoumání nových budov Budova b = null; if (i >= budovyKrozsireni.Count) { if (p.Budovy.Count > i) { b = p.Budovy[i]; } else { int nahodnyIndex = Hra.NahodnyGenerator.Next(0, p.Budovy.Count); b = p.Budovy[nahodnyIndex]; } } else { b = budovyKrozsireni[i]; } ////////////////////////////////////////////////////// int puvodniLevel = b.Level; Obchoduj(); //Výstavba if (p.Zlato - b.CenaZlato >= podminkaZustatekZlata && p.Drevo - b.CenaDrevo >= podminkaZustatekDreva) { if (b is Pole || b is Pila) { int nahoda = Hra.NahodnyGenerator.Next(2, 5); for (int j = 1; j < nahoda; j++) { if (p.Zlato - b.CenaZlato >= podminkaZustatekZlata && p.Drevo - b.CenaDrevo >= podminkaZustatekDreva) { RozsirBudovu(b); } } } if (b is Domy) { if ((p.MaxPopulace - Convert.ToInt32(Math.Round((double)p.Populace / 100) * 20)) <= p.Populace || p.Populace == p.MaxPopulace) { RozsirBudovu(b); } } else { RozsirBudovu(b); } if (puvodniLevel != b.Level) { lzePostaviAsponJednuBudovu = true; } } } if (!lzePostaviAsponJednuBudovu) { break; } } }
private void ZautocNaProvincii(Provincie nepratelskaProvincie, List <Jednotka> utociciArmada) { Hrac utocnik = Vlastnik; Hrac obrance = nepratelskaProvincie.Vlastnik; List <Jednotka> braniciArmada = new List <Jednotka>(); foreach (Jednotka j in nepratelskaProvincie.Jednotky) { if (j.Pocet > 0) { braniciArmada.Add(j); } } Jednotka[] puvodniArmadaUtocnika = new Jednotka[utociciArmada.Count]; //Pro zprávu for (int i = 0; i < puvodniArmadaUtocnika.Length; i++) { puvodniArmadaUtocnika[i] = new Jednotka(utociciArmada[i]); } Jednotka[] puvodniArmadaObrance = new Jednotka[braniciArmada.Count]; //Pro zprávu for (int i = 0; i < puvodniArmadaObrance.Length; i++) { puvodniArmadaObrance[i] = new Jednotka(braniciArmada[i]); } //Útočník = A //Obránce = B nepratelskaProvincie.ZvysJednotkamObranuZhradeb(braniciArmada.ToArray()); while (Hra.VratPocetArmady(utociciArmada) != 0 && Hra.VratPocetArmady(braniciArmada) != 0) { /* * List<Jednotka> braniciArmadaReference = VyhodnotUtok(utociciArmada, braniciArmada); * List<Jednotka> utociciArmadaReference = VyhodnotUtok(braniciArmada, utociciArmada);*/ List <Jednotka> braniciArmadaReference = VvyhodnotUtok(utociciArmada, braniciArmada); List <Jednotka> utociciArmadaReference = VvyhodnotUtok(braniciArmada, utociciArmada); /*Console.WriteLine(Hra.VratPocetArmady(utociciArmada)); * Console.WriteLine(Hra.VratPocetArmady(braniciArmada)); * Console.WriteLine();*/ for (int i = 0; i < braniciArmadaReference.Count; i++) { braniciArmada[i].NastavPocet(braniciArmadaReference[i].Pocet); } for (int i = 0; i < utociciArmadaReference.Count; i++) { utociciArmada[i].NastavPocet(utociciArmadaReference[i].Pocet); } /*Console.WriteLine(Hra.VratPocetArmady(utociciArmada)); * Console.WriteLine(Hra.VratPocetArmady(braniciArmada)); * Console.WriteLine(); * Console.WriteLine();*/ } nepratelskaProvincie.NastavJednoktamObranuNaPuvodni(braniciArmada.ToArray()); //Vyhodnocení bitvy if (Hra.VratPocetArmady(utociciArmada) > 0) //Vyhrála útočíci armáda { if (utocnik == Hra.Player) { utocnik.ZobrazZpravuPoBitve(true, true, this, nepratelskaProvincie, utociciArmada.ToArray(), puvodniArmadaUtocnika, braniciArmada.ToArray(), puvodniArmadaObrance); } else if (obrance == Hra.Player) { obrance.ZobrazZpravuPoBitve(false, false, this, nepratelskaProvincie, braniciArmada.ToArray(), puvodniArmadaObrance, utociciArmada.ToArray(), puvodniArmadaUtocnika); } Vlastnik.ObsadProvincii(nepratelskaProvincie); //Návrat armády nepratelskaProvincie.PrijmiJednotky(utociciArmada.ToArray()); } else { if (utocnik == Hra.Player) { utocnik.ZobrazZpravuPoBitve(true, false, this, nepratelskaProvincie, utociciArmada.ToArray(), puvodniArmadaUtocnika, braniciArmada.ToArray(), puvodniArmadaObrance); } else if (obrance == Hra.Player) { obrance.ZobrazZpravuPoBitve(false, true, this, nepratelskaProvincie, braniciArmada.ToArray(), puvodniArmadaObrance, utociciArmada.ToArray(), puvodniArmadaUtocnika); } if (obrance is Pocitac) { ((Pocitac)obrance).ZvysPriorituProvincie(this, 1); ((Pocitac)obrance).ZvzsPriorituVladce(Vlastnik, 2); } } }
public void ObsadProvincii(Provincie porazenaProvincie) { Hrac porazenySouper = porazenaProvincie.Vlastnik; //Přepočítání priorit !!!!!!!!!!!!!!!!!!!!!!ZměnA foreach (Hrac h in Hra.Vladci) { if (h is Pocitac) { ((Pocitac)h).PrepocitejPriorityProvinciiProNovehoVlastnika(this, porazenySouper, porazenaProvincie); } } porazenaProvincie.VynulujProvincieAJednotkyProUtok(); porazenaProvincie.VynulujProvincieASurovinyProDovoz(); porazenaProvincie.VynulujProvincieProSpehovani(); porazenaProvincie.VynulujJednoktyAProvincieProPodporu(); porazenaProvincie.Ninjove.NastavPocet(0); porazenaProvincie.NinjoveMimoProvincii.NastavPocet(0); foreach (Jednotka j in porazenaProvincie.Jednotky) { j.NastavPocet(0); } SeznamProvincii.Add(porazenaProvincie); porazenySouper.SeznamProvincii.Remove(porazenaProvincie); if (this is Pocitac) { ((Pocitac)this).ZvzsPriorituVladce(porazenySouper, 1); } if (porazenySouper is Pocitac) { ((Pocitac)porazenySouper).ZvysPriorituProvincie(porazenaProvincie, 2); ((Pocitac)porazenySouper).ZvzsPriorituVladce(this, 2); } bool vladceVyhlazen = false; if (porazenySouper.SeznamProvincii.Count == 0) { //Priority - dříve - referenční pole Soupeři majngot foreach (Hrac h in Hra.Vladci) { if (h is Pocitac && h != porazenySouper) { ((Pocitac)h).OdeberSoupereZPrioritSouperuAprovincii(porazenySouper); } } Hra.OdeberVladce(porazenySouper); vladceVyhlazen = true; //Přepočítá všem hráčům ve hře jejich soupeře Hra.PrepocitejSoupereVladcu(); } if (this != Hra.Player && porazenySouper != Hra.Player) { Hra.VypisZpravuOobsazeni(Jmeno, porazenaProvincie.JmenoProvincie, porazenySouper.Jmeno, vladceVyhlazen); } }
public void JdiDoNepratelskeProvincie(Provincie nepratelksProvincie) //NinjaMimoProvincii { bool prezilCestu = true; Random r = new Random(); Hrac vlastnikSpehovaneVesncie = nepratelksProvincie.Vlastnik; int procentualniNahoda = r.Next(1, 101); if (procentualniNahoda <= nepratelksProvincie.Ninjove.Pocet * 8) { prezilCestu = false; //40% šance na odhlaení ninjy (když má týpek 5 ninjů) } switch (prezilCestu) { case true: { Spehuj(nepratelksProvincie); if (Hra.AktualniHrac == Hra.Player) { Hra.ZobrazPrehled(Hra.Player, true); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" ŠPEHOVÁNÍ PROVINCIE {0}\n", nepratelksProvincie.JmenoProvincie.ToUpper()); Console.WriteLine("Špehování vesnice {0} - {1} - bylo úspěšné!\n", nepratelksProvincie.JmenoProvincie, vlastnikSpehovaneVesncie); Hra.Player.ZobrazVybranouZpravu(Hra.Player.ZpravyNinju.Last()); Console.ResetColor(); Console.WriteLine("\nENTER"); Console.ReadLine(); } break; } case false: //Zemřel { if (Hra.AktualniHrac == Hra.Player) { Hra.ZobrazPrehled(Hra.Player, true); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" ŠPEHOVÁNÍ PROVINCIE {0}\n", nepratelksProvincie.JmenoProvincie.ToUpper()); Console.WriteLine("Špehování vesnice {0} - {1} - selhalo - náš ninja byl odhalen!", nepratelksProvincie.JmenoProvincie, vlastnikSpehovaneVesncie); Console.ResetColor(); Console.WriteLine("\nENTER"); Console.ReadLine(); } if (nepratelksProvincie.Vlastnik == Hra.Player) { Hra.ZobrazPrehled(Hra.Player, true); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(" DOPADENÍ NINJY V PROVINCII {0}\n", nepratelksProvincie.JmenoProvincie.ToUpper()); Console.WriteLine("Dopadli jsme nepřátelského ninju z vesnice: {0} - {1}", VlastnenaProvincie.JmenoProvincie, VlastnenaProvincie.Vlastnik); Console.ResetColor(); Console.WriteLine("\nENTER"); Console.ReadLine(); } //Zemřel Pocet--; if (vlastnikSpehovaneVesncie is Pocitac) { ((Pocitac)vlastnikSpehovaneVesncie).ZvysPriorituProvincie(VlastnenaProvincie, 1); ((Pocitac)vlastnikSpehovaneVesncie).ZvzsPriorituVladce(VlastnenaProvincie.Vlastnik, 2); } if (Hra.AktualniHrac is Pocitac) { ((Pocitac)Hra.AktualniHrac).ZvysPriorituProvincie(nepratelksProvincie, 1); } break; } } }
public virtual void VyberJednotkyProPodporu(Provincie cilovaProvincie) { Hra.AktualniBudova.ZobrazInformace(); string inforamce = string.Format("Poslat jednotky do {0}", cilovaProvincie.JmenoProvincie); List <Jednotka> armada = VyberJednotky(inforamce); if (armada != null) { if (armada.Count != 0) { Console.WriteLine("\n\n1 -> Poslat podporu"); Console.WriteLine("2 -> Zpět"); int volba = Hra.VyberZnabidky(2); switch (volba) { case 1: { Hra.AktualniProvincie.PridejJednotkyProPodporu(armada.ToArray()); Hra.AktualniProvincie.PridejProvincieProPodporu(cilovaProvincie); Hra.AktualniBudova.ZobrazInformace(); Console.WriteLine("Armáda byla vyslána do provincie {0}", cilovaProvincie.JmenoProvincie); Hra.VypisArmadu(armada); Console.WriteLine("\n\n1 -> Zpět"); volba = Hra.VyberZnabidky(1); ((Hrad)Hra.AktualniBudova).PoslatPodporu(); break; } case 2: { //Vrácení jednotek Hra.AktualniProvincie.PrijmiJednotky(armada.ToArray()); ((Hrad)Hra.AktualniBudova).PoslatPodporu(); break; } } } else { Hra.AktualniBudova.ZobrazInformace(); Console.WriteLine("Nebyly vybrány žádné jednotky"); Console.WriteLine("\n1 -> Zpět"); int volba = Hra.VyberZnabidky(1); ((Hrad)Hra.AktualniBudova).Nahled(); } } else { Console.WriteLine("\nV provincii se nenacházejí žádné jednotky\n"); Console.WriteLine("1 - > Zpět"); int volba = Hra.VyberZnabidky(1); ((Hrad)Hra.AktualniBudova).Nahled(); } }