Пример #1
0
        /// <summary>
        /// A csatában szereplő támadó és védő egységekből vonja ki katonakat
        /// Amíg a támadó erő nagyobb mint a védekezők leggyengébb védője, vagy elfogy a védő
        /// </summary>
        /// <param name="tamadas"></param>
        /// <param name="vedekezes"></param>
        private static void Gyilkol(KatonaiEgyseg tamadas, KatonaiEgyseg vedekezes)
        {
            int ero = tamadas.Erő;
            int min = vedekezes.Katonak.Min(t => t.VedoErtek);

            while (ero >= min && min > 0)
            {
                /// eltávolít védő katonákat támadás erejének függvényében
                /// (nem mindig addig fut, amig az ero 0, mert lehet hogy az sose jon ki mert a jatekosok erejei random szamok)
                for (int j = 0; j < vedekezes.Katonak.Count && ero > 0; j++)
                {
                    if (vedekezes.Katonak[j].VedoErtek <= ero)
                    {
                        ero -= vedekezes.Katonak[j].VedoErtek;
                        vedekezes.Katonak.Remove(vedekezes.Katonak[j]);
                        j--;
                    }
                    /// Mivel rendezve van
                    /// Ezért ha az aktuális indexű katona vedoerteke, nagyobb mint az ero
                    /// Akkor nem lesz kesobb se kisebb
                    else
                    {
                        return;
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Visszaad egy katonai egységet az itthon levo lakosokból
        /// </summary>
        /// <returns>A katonai egység az összes itthon található katonát belefűzi egy listába, amiből a katonaiegység van</returns>
        public KatonaiEgyseg Vedekezik()
        {
            Logger.Log("Játékos védekezésre kényszerítve");
            List <Lakos>  itthon        = this.foEpulet.KiveszTipus(this.foEpulet.ItthonLevok());
            KatonaiEgyseg katonaiEgyseg = new KatonaiEgyseg(false, itthon, Id);

            return(katonaiEgyseg);
        }
Пример #3
0
 /// <summary>
 /// Paraméterként kapott Katonaiegység minden lakoságnak ItthonVan-ját true-ra állítja
 /// </summary>
 /// <param name="katonaiEgyseg"></param>
 public void KatonakHazaternek(KatonaiEgyseg katonaiEgyseg)
 {
     Logger.Log("Katonák hazatérnek");
     this.foEpulet.BeteszTipus(katonaiEgyseg.Katonak);
     foreach (Lakos item in katonaiEgyseg.Katonak)
     {
         item.ItthonVan = true;
     }
 }
Пример #4
0
 /// <summary>
 /// Konstruktor
 /// Iicializálja a támadást
 /// </summary>
 /// <param name="katonasag">Támadó Katonai egysége</param>
 /// <param name="tamadott_jatekos_id">Támadott játékos ID-je</param>
 public static void TamadasInditas(KatonaiEgyseg katonasag, int tamadott_jatekos_id)
 {
     Logger.Log("Támadás menetideje : " + MenetidoSzamitas(katonasag));
     foreach (Lakos item in katonasag.Katonak)
     {
         item.ItthonVan = false;
     }
     TevekenysegController.AddTevekenyseg(
         MenetidoSzamitas(katonasag),
         () => Csata.Csatazas(katonasag, Jatek.GetJatekosById(tamadott_jatekos_id).Vedekezik()));
 }
Пример #5
0
        /// <summary>
        /// Katonaiegyésg katonái között menetidők maximumát keresi > az a menetidő
        /// v = s/t > t = s/v
        /// </summary>
        private static int MenetidoSzamitas(KatonaiEgyseg katonaiEgyseg)
        {
            Random rnd      = new Random();
            int    tavolsag = rnd.Next(1, 10);
            int    menetido = 0;

            foreach (Lakos item in katonaiEgyseg.Katonak)
            {
                int tmp_menet_ido = (tavolsag / item.MenetSebesseg) + 1;
                if (tmp_menet_ido > menetido)
                {
                    menetido = tmp_menet_ido;
                }
            }
            return(menetido);
        }
Пример #6
0
        /// <summary>
        /// Csata lemeneteléért felel:
        /// Ha a védő erő kisebb mint a támadó, akkor támadó nyert
        /// Ellenkező esetben védő nyert
        /// </summary>
        public static void Csatazas(KatonaiEgyseg tamadas, KatonaiEgyseg vedekezes)
        {
            Logger.Log("Csata elkezdődött");
            /// ne kelljen mindig lekérni a Jatek-tól az aktuálisan kívánt játkost
            Jatekos vedekezo = Jatek.GetJatekosById(vedekezes.Jatekos_Id);

            if (tamadas.Erő > vedekezes.Erő)
            {
                vedekezo.Veszit();
                Logger.Log("Támadó játékos ID: " + tamadas.Jatekos_Id + "nyert");
            }
            else
            {
                Logger.Log("Támadó játékos ID: " + tamadas.Jatekos_Id + "vesztett");
                /// Rendezi a katonákat erő szerint
                /// Hogy Gyilkolásban a minimumkeresés-nél ne kelljen mindig végigfutni a listán
                vedekezes.Katonak.Sort((x, y) => y.VedoErtek.CompareTo(x.VedoErtek));
                Gyilkol(tamadas, vedekezes);
                // visszatérés
                vedekezo.KatonakHazaternek(vedekezes);
            }
        }