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 Jednotka(Jednotka jednotka) { Jmeno = jednotka.Jmeno; Utok = jednotka.Utok; Obrana = jednotka.Obrana; PuvodniObrana = jednotka.Obrana; CenaDrevo = jednotka.CenaDrevo; CenaZlato = jednotka.CenaZlato; Pocet = jednotka.Pocet; }
protected virtual List <Jednotka> VyberJednotky(string inforamce) { Console.WriteLine(inforamce); List <Jednotka> pluky = new List <Jednotka>(); List <Jednotka> puvodniPluky = new List <Jednotka>(); /*Ověření zda se v provincii nacházejí jednotky*/ foreach (Jednotka j in Hra.AktualniProvincie.Jednotky) { if (j.Pocet != 0) { pluky.Add(new Jednotka(j)); // viz Reference, v konstrukotru se předává i počet - viz souboje puvodniPluky.Add(j); } } if (pluky.Count != 0) { List <Jednotka> armada = new List <Jednotka>(); for (int i = 0; i < pluky.Count; i++) { Console.WriteLine("\n\nVybrat jednotky:"); Jednotka pluk = pluky[i]; string s = string.Format("{0} [{1}]: ", pluk.Jmeno, pluk.Pocet); int jednoktyDoPryc = Hra.CtiCislo(s, pluk.Pocet); if (jednoktyDoPryc != 0) { pluk.NastavPocet(jednoktyDoPryc); puvodniPluky[i].NastavPocet(puvodniPluky[i].Pocet - jednoktyDoPryc); armada.Add(pluk); } ///Informace Hra.AktualniBudova.ZobrazInformace(); Console.WriteLine(inforamce); if (armada.Count != 0) { Hra.VypisArmadu(armada); } } return(armada); } else { return(null); } }
protected virtual void OdemkniJednotku(Jednotka jednotkaProOdemknuti) { if (!(jednotkaProOdemknuti is Ninja)) { Jednotky.Add(new Jednotka(jednotkaProOdemknuti)); } else { Jednotky.Add(new Ninja(jednotkaProOdemknuti)); } if (Hra.AktualniHrac == Hra.Player) { Console.WriteLine("Byla odemknuta nová jednotka: {0}", jednotkaProOdemknuti.Jmeno); } }
public Staje() { Jmeno = "Stáje"; MaxLevel = 2; Jednotky = new List <Jednotka>(); Jednotky.Add(new Jednotka(Jednotka.jezdec)); JednotkyProReferenci = new Jednotka[2] { Jednotka.jezdec, Jednotka.lucistnikNaKoni }; cenaDrevo = 200; cenaZlato = 120; Informace.Add(string.Format("Level 2: {0}", Jednotka.lucistnikNaKoni.Jmeno)); }
public void ZautocNaNepritele(Jednotka nepritel) { //int bonusZPoctu = Convert.ToInt32(Math.Round((double)Pocet / 7)); /*int nahoda = r.Next(1, 4); * * int poskozeni = (Utok + nahoda); //+ bonus * poskozeni = Convert.ToInt32(Math.Round(((double)poskozeni / 100) * ((double)nepritel.Obrana / 2)));*/ int bonusZUtoku = Convert.ToInt32(Math.Round((double)Pocet / 100)); int bonusZobrany = Convert.ToInt32(Math.Round((double)nepritel.Pocet / 100)); int nahoda; int utok = Utok / 5; int obranaNepritele = Convert.ToInt32(Math.Round((double)nepritel.Obrana / 2)); double poskozeni = 0; if (obranaNepritele + bonusZobrany >= utok + bonusZUtoku) { poskozeni = r.Next(0, 2); } else { nahoda = utok - obranaNepritele; if (nahoda < 0) { nahoda = 1; } poskozeni = r.Next(1, nahoda + 1); } if (poskozeni > nepritel.Pocet) { poskozeni = nepritel.Pocet; } if (poskozeni > 0) { nepritel.PridejPocet(-Convert.ToInt32(poskozeni)); } }
public Dojo() { Jmeno = "Dódžo"; MaxLevel = 5; Jednotky = new List <Jednotka>(); Jednotky.Add(new Jednotka(Jednotka.kopijnik)); JednotkyProReferenci = new Jednotka[3] { Jednotka.kopijnik, Jednotka.lucistnik, Jednotka.ninja }; cenaDrevo = 150; cenaZlato = 90; Informace.Add(string.Format("Level 2: {0}", Jednotka.lucistnik.Jmeno)); Informace.Add(string.Format("Level 3: {0}", Jednotka.ninja.Jmeno)); }
/////////////////////////////////////////////////////////////////////////////////////////////////// /*////////////// KONSTRUKTOR /////////////*/ public Provincie(string jmenoProvincie) { JmenoProvincie = jmenoProvincie; Drevo = 4000; Zlato = 5000; Ryze = 2000; MaxDreva = 50000; MaxZlata = 50000; MaxRyze = 50000; Jednotky = new Jednotka[6]; Jednotky[0] = new Jednotka(Jednotka.kopijnik); Jednotky[1] = new Jednotka(Jednotka.lucistnik); Jednotky[2] = new Jednotka(Jednotka.jezdec); Jednotky[3] = new Jednotka(Jednotka.lucistnikNaKoni); Jednotky[4] = new Jednotka(Jednotka.strelec); Jednotky[5] = new Jednotka(Jednotka.samuraj); Budovy = new List <Budova>(); Budovy.Add(new Hrad()); Budovy.Add(new Pole()); Budovy.Add(new Pila()); Budovy.Add(new Trziste()); Budovy.Add(new Domy()); Budovy.Add(new Dojo()); JednotkyDoUtoku = new List <Jednotka[]>(); ProvincieProUtok = new List <Provincie>(); JednotkyProPodporu = new List <Jednotka[]>(); ProvincieProPodporu = new List <Provincie>(); Ninjove = new Ninja(Jednotka.ninja); NinjoveMimoProvincii = new Ninja(Jednotka.ninja); NepratelskeProvincieProSpehovani = new List <Provincie>(); ProvincieProDovozSurovin = new List <Provincie>(); SurovinyProDovoz = new List <int[]>(); }
public Hrad() { Jmeno = "Hrad"; Level = 1; MaxLevel = 10; Jednotky = new List <Jednotka>(); JednotkyProReferenci = new Jednotka[2] { Jednotka.strelec, Jednotka.samuraj }; cenaDrevo = 280; cenaZlato = 380; try { Informace.Add(string.Format("Level 3: {0}", Hradby.Jmeno)); Informace.Add(string.Format("Level 5: {0}", Staje.Jmeno)); Informace.Add(string.Format("Level 7: {0}", Jednotka.strelec.Jmeno)); Informace.Add(string.Format("Level 8: {0}", Jednotka.samuraj.Jmeno)); } catch { } }
protected override List <Jednotka> VyberJednotky(string informace) { List <Jednotka> pluky = new List <Jednotka>(); List <Jednotka> puvodniPluky = new List <Jednotka>(); /*Ověření zda se v provincii nacházejí jednotky*/ foreach (Jednotka j in Hra.AktualniProvincie.Jednotky) { if (j.Pocet != 0) { pluky.Add(new Jednotka(j)); // viz Reference puvodniPluky.Add(j); } } if (pluky.Count != 0) { List <Jednotka> armada = new List <Jednotka>(); for (int i = 0; i < pluky.Count; i++) { Jednotka pluk = pluky[i]; int jednotkyDoPryc = Convert.ToInt32(Math.Round(((double)pluk.Pocet / 100) * 90)); pluk.NastavPocet(jednotkyDoPryc); puvodniPluky[i].NastavPocet(puvodniPluky[i].Pocet - jednotkyDoPryc); armada.Add(pluk); } return(armada); } else { return(null); } }
private List <Jednotka> VvyhodnotUtok(List <Jednotka> utocnici, List <Jednotka> cilovaArmada) { //Náhodne zamíchá pluky v armmáde soupeře List <Jednotka> nezamichaniSouperi = new List <Jednotka>(); //Reference, refrence a zase ty reference foreach (Jednotka j in cilovaArmada) { nezamichaniSouperi.Add(new Jednotka(j)); } List <Jednotka> listProZamichani = new List <Jednotka>(); foreach (Jednotka j in nezamichaniSouperi) { if (j.Pocet != 0) { listProZamichani.Add(j); } } List <Jednotka> zamichaniSouperi = new List <Jednotka>(); //Zamíchání for (int i = 0; i < listProZamichani.Count; i++) //změnit podmínku - listProZamichani.Count != 0 { int nahodnyIndex = Hra.NahodnyGenerator.Next(0, listProZamichani.Count); zamichaniSouperi.Add(listProZamichani[nahodnyIndex]); listProZamichani.RemoveAt(nahodnyIndex); } //Souboj: List <Jednotka> braniciArmada = new List <Jednotka>(); foreach (Jednotka j in zamichaniSouperi) { braniciArmada.Add(j); } for (int i = 0; i < utocnici.Count; i++) { if (i < braniciArmada.Count - 1) { utocnici[i].ZautocNaNepritele(braniciArmada[i]); } else { braniciArmada = new List <Jednotka>(); foreach (Jednotka j in zamichaniSouperi) { braniciArmada.Add(j); } if (braniciArmada.Count != 0) { int index = Hra.NahodnyGenerator.Next(0, braniciArmada.Count); Jednotka braniciPluk = braniciArmada[index]; utocnici[i].ZautocNaNepritele(braniciPluk); } else { break; } } } return(nezamichaniSouperi); }
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 Ninja(Jednotka ninja) : base(ninja) { Pocet = 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); } } }