/// <summary> /// Vycentruje poh�ad kamery na zadan� s�radnice. /// Ak je to mo�n�, tak objekt umiestni do stredu obrazovky /// </summary> /// <param name="paPoloha">Poloha na ktor� sa m� vycentrova�</param> public void VycentrujPohlad(Poloha paPoloha) { int odsadenieStlpec = paPoloha.Stlpec + PozadieMenu.cPosunZBoku - cPocetOkienStplce / 2; int odsadenieRiadok = paPoloha.Riadok + PozadieMenu.cPosunZVrchu - cPocetOkienRiadky / 2; if (odsadenieStlpec < 0) { odsadenieStlpec = 0; } else if (odsadenieStlpec > HernaPlocha.PocetStlpcov-cPocetOkienStplce + PozadieMenu.cPosunZBoku) { odsadenieStlpec = HernaPlocha.PocetStlpcov - cPocetOkienStplce + PozadieMenu.cPosunZBoku; } if (odsadenieRiadok < 0) { odsadenieRiadok = 0; } else if (odsadenieRiadok > HernaPlocha.PocetRiadkov - cPocetOkienRiadky + PozadieMenu.cPosunZVrchu) { odsadenieRiadok = HernaPlocha.PocetRiadkov - cPocetOkienRiadky + PozadieMenu.cPosunZVrchu; } aPoloha.Stlpec = odsadenieStlpec; aPoloha.Riadok = odsadenieRiadok; }
/// <summary> /// Generovanie hernej plochy. Keοe povnina na hernej ploche mα reprezentova ostrov, /// tak sa vyuνva okrem inιho aj rovnica elipsy /// </summary> private void GenerujPlochu() { Poloha pol = null; int stredovyRiadok = PocetRiadkov / 2; int stredovyStlpec = PocetStlpcov / 2; int polomerRiadkov = stredovyRiadok - 3; int polomerStlpcov = stredovyStlpec - 3; for (int riadok = 0; riadok < PocetRiadkov; riadok++) { for (int stlpec = 0; stlpec < PocetStlpcov; stlpec++) { pol = new Poloha(riadok, stlpec); if (Math.Pow((double)(riadok - stredovyRiadok) / (double)polomerRiadkov, 2) + Math.Pow((double)(stlpec - stredovyStlpec) / (double)polomerStlpcov, 2) <= 1) { aMatica[riadok, stlpec] = new Policko(pol, true); } else { aMatica[riadok, stlpec] = new Policko(pol, false); } } } }
/// <summary> /// Kon�truktor pe dok, ktor� stavia hr�� /// </summary> /// <param name="paPoloha"></param> /// <param name="paSmerDoku"></param> public Dok(Poloha paPoloha, SmerDoku paSmerDoku) { ZburatelneAutomaticky = false; NakladyNaZburanie = 300; Cena = 700; Poloha = paPoloha; switch (paSmerDoku) { case SmerDoku.dole: NastavObrazok(Resources.dokDole, "dokDole"); break; case SmerDoku.hore: NastavObrazok(Resources.dokHore, "dokHore"); break; case SmerDoku.vlavo: NastavObrazok(Resources.dokVlavo, "dokVlavo"); break; case SmerDoku.vpravo: NastavObrazok(Resources.dokVpravo, "dokVpravo"); break; } DokonciVytvaranie(); }
/// <summary> /// Vykonanie pohybu /// </summary> public override void VykonajPohyb() { if (aAktualnyFrame == FramePohyb) { if (Poloha.Stlpec > aPolohaDo.Stlpec) { NastavObrazok(Resources.lietadloVlavo, "lietadloVlavo"); Poloha = new Poloha(Poloha.Riadok, Poloha.Stlpec-1); } else if (Poloha.Stlpec < aPolohaDo.Stlpec) { Poloha = new Poloha(Poloha.Riadok, Poloha.Stlpec + 1); NastavObrazok(Resources.lietadloVpravo, "lietadloVpravo"); } else if (Poloha.Riadok > aPolohaDo.Riadok) { NastavObrazok(Resources.lietadloHore, "lietadloHore"); Poloha = new Poloha(Poloha.Riadok-1, Poloha.Stlpec); } else if (Poloha.Riadok < aPolohaDo.Riadok) { NastavObrazok(Resources.lietadloDole, "lietadloDole"); Poloha = new Poloha(Poloha.Riadok + 1, Poloha.Stlpec); } else { JeVCieli = true; } aAktualnyFrame = 0; } aAktualnyFrame++; }
/// <summary> /// Vyhľadaá trasu na grafe /// </summary> /// <param name="paZ">vychodrí bod</param> /// <param name="paDo">koncový bod</param> /// <param name="paDruhVozidla">alé je to vozidlo</param> /// <returns></returns> public static List <Hrana> NajdiTrasu(Poloha paZ, Poloha paDo, DruhVozidla paDruhVozidla) { aHernaPlocha = Hra.DajInstanciu().DajHernuPlochu(); aTrasa = new List <Hrana>(); aPolohaZ = paZ; aZacVrch = NajdiZaciatocnyVrchol(); aKonVrch = NajdiCielovyVrchol(paDo); if (aZacVrch == null || aKonVrch == null) { return(null); } if (aZacVrch == aKonVrch) { return(aTrasa); } aZacVrch.NajkratciaVzdialenost = 0; aAktVrch = aZacVrch; aAktVrch.Docastnost = false; PrejdiVystupnuHviezdu(); Backtracking(); aHernaPlocha.PovodnyStavVrcholov(); if (!aTrasa.Any()) { return(null); } return(aTrasa); }
/// <summary> /// Inicializácia potrebných vecí /// </summary> /// <param name="paPoloha"></param> public Boja(Poloha paPoloha){ Poloha = paPoloha; NastavObrazok(Resources.boja, "boja"); ZburatelneAutomaticky = false; NakladyNaZburanie = 50; Cena = 100; MozePriat = DruhVozidla.vodne; }
/// <summary> /// Kon�etruktor s parametrami /// </summary> /// <param name="paPoloha"></param> /// <param name="paTypPreprJ"></param> /// <param name="paKapacita"></param> /// <param name="paRychlost"></param> /// <param name="paCena"></param> /// <param name="paNazov"></param> protected PrototypDp(Poloha paPoloha, TypPrepravJednotky paTypPreprJ, int paKapacita, int paRychlost, int paCena, String paNazov) { Cena = paCena; Kapacita = paKapacita; Rychlost = paRychlost; Poloha = paPoloha; Nazov = paNazov; TypNakladu = paTypPreprJ; JeVCieli = false; Strateny = false; }
/// <summary> /// Kop�rovac� kon�truktor /// </summary> /// <param name="paPredloha">Predloha</param> protected PrototypDp(PrototypDp paPredloha) { Cena = paPredloha.Cena; Kapacita = paPredloha.Kapacita; Rychlost = paPredloha.Rychlost; Poloha = paPredloha.Poloha; Nazov = paPredloha.Nazov; TypNakladu = paPredloha.TypNakladu; JeVCieli = false; Strateny = false; }
/// <summary> /// Kon�truktor inicializuje v�etko potrebn� /// </summary> /// <param name="paPoloha"></param> public Letisko(Poloha paPoloha) { Poloha = paPoloha; base.ZburatelneAutomaticky = false; base.NastavObrazok(Resources.letisko, "letisko"); Cena = 10000; NakladyNaZburanie = 2000; aMozneStroje = new List<PrototypDp>(); Predlohy(); }
/// <summary> /// �al�ia z pohybov�ch funkci� /// </summary> /// <param name="paPoloha">poloha kam</param> /// <returns>�i sa podarilo</returns> private bool Pohyb(Poloha paPoloha) { if (!Hra.DajInstanciu().DajHernuPlochu().DajMaticu()[paPoloha.Riadok, paPoloha.Stlpec].Pevnina) { Poloha = paPoloha; return true; } else if (Hra.DajInstanciu().DajHernuPlochu().DajMaticu()[paPoloha.Riadok, paPoloha.Stlpec].Zastavane is Dok) { Poloha = paPoloha; return true; } return false; }
/// <summary> /// Vyhľadanie trasy pokocou dijkstru /// </summary> /// <param name="paPolohaDo"></param> /// <returns></returns> public override bool NajdiTrasu(Poloha paPolohaDo) { JeVCieli = false; aHranaNaTrase = 0; aPoziciaNaHrane = 0; aTrasa = DijkstrovAlg.NajdiTrasu(Poloha, paPolohaDo, Druh); if (aTrasa == null) { Strateny = true; Sprava.Info("Vlak sa stratil"); Kamera.DajInstanciu().VycentrujPohlad(Poloha); return(false); } return(true); }
/// <summary> /// Inicializ�cia mesta, v�ber n�zvu a n�hodne zvolenie po�iato�nej popul�cia pod�a trojuholn�kov�ho rozdelenia /// </summary> /// <param name="paPoloha">poloha</param> /// <param name="paPoradoveCislo">poradsov� ��slo</param> public Mesto(Poloha paPoloha, int paPoradoveCislo): base(DruhVyroby.Mesto, paPoloha) { aDen = 0; aPoradoveCislo = paPoradoveCislo; int poradie = 0; foreach( NazvyMiest nazov in Enum.GetValues(typeof(NazvyMiest))) { if(aPoradoveCislo == poradie) { Nazov = nazov.ToString(); break; } poradie++; } Populacia = Nahoda.TriaInt(100, 300, 400); this.ZmenPrirastok(); }
public ZeleznicnaStanica(Poloha paPoloha, SmerZast paSmerZast) { Poloha = paPoloha; SmerZastavky = paSmerZast; aMozneStroje = new List<PrototypDp>(); if (SmerZastavky == SmerZast.horizontalny) { NastavObrazok(Resources.zelStanicaVodor, "zelStanicaVodor"); } else { NastavObrazok(Resources.zelStanicaZv, "zelStanicaZv"); } ZburatelneAutomaticky = false; NakladyNaZburanie = 200; Cena = 650; Predlohy(); }
/// <summary> /// Vytvorenie polниka, poliиko sa pri vytvбranн rozhoduje, иi bude maЭ na sebe prнrodnэ prvok, alebo nie /// </summary> /// <param name="paPoloha">poloha polниka</param> /// <param name="paPevnina"> иi je pevnina</param> public Policko(Poloha paPoloha, bool paPevnina) { aPoloha = paPoloha; aZastavane = null; aPevnina = paPevnina; aDopravneProst = new List<DopravnyProstriedok>(); if (aPevnina == true) { NastavObrazok(Resources.grass, "grass"); if (Nahoda.NahodneCislo0az1() < 0.2) { aZastavane = new Priroda(aPoloha); } } else { NastavObrazok(Resources.water, "water"); } OdsadenieZLava = aPoloha.Stlpec * Policko.cVelkostPolicka; OdsadenieZHora = aPoloha.Riadok * Policko.cVelkostPolicka; }
public Zastavka(Poloha paPoloha, SmerZast paSmerZast) { Poloha = paPoloha; SmerZast = paSmerZast; aMozneStroje = new List<PrototypDp>(); if (SmerZast == SmerZast.horizontalny) { NastavObrazok(Resources.cestaZastavkaVodor, "cestaZastavkaVodor"); } else { NastavObrazok(Resources.cestaZastavkaZvy, "cestaZastavkaZvy"); } ZburatelneAutomaticky = false; NakladyNaZburanie = 200; Cena = 500; Predlohy(); }
public Zeleznica(SmerInf paSmer, Poloha paPoloha){ base.ZburatelneAutomaticky = false; Poloha = paPoloha; aOrientacia = paSmer; switch (aOrientacia) { case SmerInf.horizontalny: NastavObrazok(Resources.zelVodorovne, "zelVodorovne"); Cena = 300; break; case SmerInf.vertikalny: NastavObrazok(Resources.zelZvisle, "zelZvisle"); Cena = 300; break; case SmerInf.zatackaDoleVlavo: NastavObrazok(Resources.zelOdbVlavoDole, "zelOdbVlavoDole"); Cena = 320; break; case SmerInf.zatackaDoleVpravo: NastavObrazok(Resources.zelOdbVpravoDole, "zelOdbVpravoDole"); Cena = 320; break; case SmerInf.zatackaHoreVlavo: NastavObrazok(Resources.zelOdbVlavoHore, "zelOdbVlavoHore"); Cena = 320; break; case SmerInf.zatackaHoreVpravo: NastavObrazok(Resources.zelOdbVpravoHore, "zelOdbVlavoHore"); Cena = 320; break; } NakladyNaZburanie = 20; Povolene = DruhVozidla.kolajove; }
public Priroda(Poloha paPoloha) { Poloha = paPoloha; aJeStrom = true; if (Nahoda.NahodneCislo0az1() < 0.25) { aJeStrom = false; } if (aJeStrom == true) { NastavObrazok(Resources.tree, "tree"); NakladyNaZburanie = cNakladyStrom; } else { NastavObrazok(Resources.stone, "stone"); NakladyNaZburanie = cNakladySkala; } base.ZburatelneAutomaticky = true; }
/// <summary> /// Kon�truktor pre dok, ktor� m��e by� s��as�ou ropnej plo�iny /// </summary> /// <param name="paPoloha"></param> public Dok(Poloha paPoloha) { Poloha = paPoloha; DokonciVytvaranie(); }
public override bool NajdiTrasu(Poloha paPolohaDo) { JeVCieli = false; aPolohaDo = paPolohaDo; return true; }
public Vlak(Poloha paPoloha, TypPrepravJednotky paTypPreprJ, int paKapacita, int paRychlost, int paCena, string paNazov) : base(paPoloha, paTypPreprJ, paKapacita, paRychlost, paCena, paNazov) { }
public Lietadlo(Poloha paPoloha, TypPrepravJednotky paTypPreprJ, int paKapacita, int paRychlost, int paCena, String paNazov) : base(paPoloha, paTypPreprJ, paKapacita, paRychlost, paCena, paNazov) { DokonciVytvaranie(); }
/// <summary> /// Vyh¾adanie trasy /// </summary> /// <param name="paPolohaDo"></param> /// <returns></returns> public override bool NajdiTrasu(Poloha paPolohaDo) { JeVCieli = false; aPolohaDo = new Poloha(paPolohaDo.Riadok+1, paPolohaDo.Stlpec+1); return true; }
/// <summary> /// Singleton - pri vytovaren� je kamera na 0,0 poz�ci� /// </summary> private Kamera() { aPoloha = new Poloha(0, 0); }
/// <summary> /// Vyh�adanie trasy - ka�d� potomok si to rie�i samostatne /// </summary> /// <param name="paPolohaDo"></param> /// <returns></returns> public abstract bool NajdiTrasu(Poloha paPolohaDo);
/// <summary> /// Vyhľadanie konečného vrcholu v zozname vrcholov /// </summary> /// <param name="paPoloha">poloha</param> /// <returns>konečný vrchol</returns> private static Vrchol NajdiCielovyVrchol(Poloha paPoloha) { return(aHernaPlocha.ZoznamVrcholov.FirstOrDefault(item => item.Policko.Poloha.Riadok == paPoloha.Riadok && item.Policko.Poloha.Stlpec == paPoloha.Stlpec)); }
/// <summary> /// Cesta + priradenie spr�vnych obr�zkov a s�m, /// pod�a jednotiliv�ch druhov /// </summary> /// <param name="paSmer"></param> /// <param name="paPoloha"></param> public Cesta(SmerCesty paSmer, Poloha paPoloha){ base.ZburatelneAutomaticky = false; aOrientacia = paSmer; Poloha = paPoloha; switch (aOrientacia) { case SmerCesty.krizovatka : NastavObrazok(Resources.cestaKri�ovatka, "cestaKri�ovatka"); Cena = 300; break; case SmerCesty.odbVodorovneDole: NastavObrazok(Resources.cestaOdbVodorovneDole, "cestaOdbVodorovneDole"); Cena = 250; break; case SmerCesty.odbVodorovneHore: NastavObrazok(Resources.cestaOdbVodorovneHore, "cestaOdbVodorovneHore"); Cena = 250; break; case SmerCesty.odbZvysleVlavo: NastavObrazok(Resources.cestaOdbZvysleVlavo, "cestaOdbZvysleVlavo"); Cena = 250; break; case SmerCesty.odbZvysleVpravo: NastavObrazok(Resources.cestaOdbZvysleVpravo, "cestaOdbZvysleVpravo"); Cena = 250; break; case SmerCesty.vodorovne: NastavObrazok(Resources.cestaVodorovne, "cestaVodorovne"); Cena = 200; break; case SmerCesty.zakDoleVlavo: NastavObrazok(Resources.cestaZakDoleVlavo, "cestaZakDoleVlavo"); Cena = 220; break; case SmerCesty.zakDoleVpravo: NastavObrazok(Resources.cestaZakDoleVpravo, "cestaZakDoleVpravo"); Cena = 220; break; case SmerCesty.zakHoreVpravo: NastavObrazok(Resources.cestaZakHoleVpravo, "cestaZakHoleVpravo"); Cena = 220; break; case SmerCesty.zakHoreVlavo: NastavObrazok(Resources.cestaZakHoreVlavo, "cestaZakHoreVlavo"); Cena = 220; break; case SmerCesty.zvisle: NastavObrazok(Resources.cestaZvisle, "cestaZvisle"); Cena = 200; break; } NakladyNaZburanie = 100; Povolene = DruhVozidla.cestne; }
/// <summary> /// Inicializ�cia v�roby. Pre ka�d� druh, je vykonan� nie�o in� /// </summary> /// <param name="paDruh"></param> /// <param name="paPoloha"></param> public Vyroba(DruhVyroby paDruh, Poloha paPoloha) { aDok = null; aPrilahlaStanica = null; Poloha = paPoloha; OdsadenieZLava = Poloha.Stlpec * Policko.cVelkostPolicka; OdsadenieZHora = Poloha.Riadok * Policko.cVelkostPolicka; aPrijma = new List<TypPrepravJednotky>(); aProdukuje = new Dictionary<TypPrepravJednotky, int>(); aDruhVyroby = paDruh; switch (paDruh) { case DruhVyroby.Elektraren: NastavObrazok(Resources.el, "el"); aPrijma.Add(TypPrepravJednotky.uhlie); break; case DruhVyroby.Farma: NastavObrazok(Resources.farm, "farm"); aProdukuje.Add(TypPrepravJednotky.dobytok, cStrProd); aProdukuje.Add(TypPrepravJednotky.obilie, cStrProd); break; case DruhVyroby.Les: NastavObrazok(Resources.forest, "forest"); aProdukuje.Add(TypPrepravJednotky.drevo, cStrProd); break; case DruhVyroby.Oceliaren: NastavObrazok(Resources.oceliaren, "oceliaren"); aPrijma.Add(TypPrepravJednotky.zeleznaRuda); aProdukuje.Add(TypPrepravJednotky.ocel, 0); break; case DruhVyroby.Pila: NastavObrazok(Resources.sawmill, "sawmill"); aPrijma.Add(TypPrepravJednotky.drevo); aProdukuje.Add(TypPrepravJednotky.tovar, 0); break; case DruhVyroby.RopnaRafineria: NastavObrazok(Resources.rafineria, "rafineria"); aPrijma.Add(TypPrepravJednotky.ropa); aProdukuje.Add(TypPrepravJednotky.tovar, 0); break; case DruhVyroby.Tovaren: NastavObrazok(Resources.farctory, "farctory"); aPrijma.Add(TypPrepravJednotky.ocel); aPrijma.Add(TypPrepravJednotky.dobytok); aPrijma.Add(TypPrepravJednotky.obilie); aProdukuje.Add(TypPrepravJednotky.tovar, 0); break; case DruhVyroby.UholnaBana: NastavObrazok(Resources.mineCoalM, "mineCoalM"); aProdukuje.Add(TypPrepravJednotky.uhlie, cStrProd); break; case DruhVyroby.ZelezorudnaBana: NastavObrazok(Resources.mineRudaM, "mineRudaM"); aProdukuje.Add(TypPrepravJednotky.zeleznaRuda, cStrProd); break; case DruhVyroby.RopnaPlosina: NastavObrazok(Resources.oilPlat, "oilPlat"); aProdukuje.Add(TypPrepravJednotky.ropa, cStrProd); aDok = new Dok(Poloha); Zoskupenie = new ZoskupenieStanic(); Zoskupenie.PridajStanicu(aDok); Zoskupenie.PridajVyrobu(this); aDok.Zoskupenie = Zoskupenie; break; case DruhVyroby.Mesto: NastavObrazok(Resources.city, "city"); aPrijma.Add(TypPrepravJednotky.tovar); aPrijma.Add(TypPrepravJednotky.cestujuci); aPrijma.Add(TypPrepravJednotky.posta); aProdukuje.Add(TypPrepravJednotky.cestujuci, 0); aProdukuje.Add(TypPrepravJednotky.posta, 0); break; } this.ZmenProdukciu(); }