public virtual void RozsirBudovu(Budova budovaKRozsireni) { budovaKRozsireni.ZobrazInformace(); if (budovaKRozsireni.Level != budovaKRozsireni.MaxLevel) { if (budovaKRozsireni.JsouSurovinyNaRozsireni()) { Console.WriteLine("Budova byla rozšířena na level " + (budovaKRozsireni.Level + 1)); budovaKRozsireni.ZvysLevelBudovy(); } else { Console.WriteLine("Nejsou dostupné suroviny na rozšíření budovy"); } } else { Console.WriteLine("Budova dosáhla maximální úrovně"); } Console.WriteLine("\n1 -> Zpět"); int volba = Hra.VyberZnabidky(1); budovaKRozsireni.Nahled(); }
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); } } }
public override void RozsirBudovu(Budova budovaKRozsireni) { if (budovaKRozsireni != null) { if ((budovaKRozsireni.Level != budovaKRozsireni.MaxLevel) && (budovaKRozsireni.JeOdemknutaVProvincii())) { if (budovaKRozsireni.JsouSurovinyNaRozsireni()) { budovaKRozsireni.ZvysLevelBudovy(); } else { if (Hra.AktualniProvincie.Budovy[3].Level == 0) //tržiště { if (Hra.AktualniProvincie.Budovy[3].JsouSurovinyNaRozsireni()) { RozsirBudovu(Hra.AktualniProvincie.Budovy[3]); //Tržiště } } else { if (budovaKRozsireni.CenaZlato > Hra.AktualniProvincie.Zlato) //Koupě zlata { int kolikChybiZlata = budovaKRozsireni.CenaZlato - Hra.AktualniProvincie.Zlato; int kolikMoznoProdat = 0; if (Hra.AktualniProvincie.Drevo / ((Trziste)Hra.AktualniProvincie.Budovy[3]).PomerDreva >= kolikChybiZlata) { kolikMoznoProdat = kolikChybiZlata * ((Trziste)Hra.AktualniProvincie.Budovy[3]).PomerDreva; } else { kolikMoznoProdat = Hra.AktualniProvincie.Drevo; } ((Trziste)Hra.AktualniProvincie.Budovy[3]).Prodej("drevo", kolikMoznoProdat); } if (budovaKRozsireni.CenaDrevo > Hra.AktualniProvincie.Drevo) //Koupě dřeva { int kolikChybiDreva = budovaKRozsireni.CenaDrevo - Hra.AktualniProvincie.Drevo; int kolikMoznoKoupit = 0; //potřebaZlata = cenaDrevo / pomerDřeva if (Hra.AktualniProvincie.Zlato > budovaKRozsireni.CenaDrevo / ((Trziste)Hra.AktualniProvincie.Budovy[3]).PomerDreva) { kolikMoznoKoupit = kolikChybiDreva; } else { kolikMoznoKoupit = Hra.AktualniProvincie.Zlato * ((Trziste)Hra.AktualniProvincie.Budovy[3]).PomerDreva; } ((Trziste)Hra.AktualniProvincie.Budovy[3]).Kup("drevo", kolikMoznoKoupit); } if (budovaKRozsireni.JsouSurovinyNaRozsireni()) { RozsirBudovu(budovaKRozsireni); } } } } } }
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); }