Пример #1
0
        public static void PrintArmy(NamedArmy army)
        {
            Console.WriteLine("-Army name is " + army.Item1);
            Console.WriteLine("-Army content is:");
            int counter = 0;

            foreach (Unit t in army.Item2)
            {
                if (counter % 7 == 0)
                {
                    Console.WriteLine();
                    Console.Write("--");
                }

                Console.Write(t.GetType().Name + " ");
                counter++;
            }
            Console.WriteLine();
        }
Пример #2
0
        static void Main(string[] args)
        {
            SetOutputSettings("battle.log");
            List <NamedArmy> armies = new List <NamedArmy>();

            for (int i = 0; i < ARMY_COUNT; i++)
            {
                armies.Add(new NamedArmy("Army " + i, new Army()));

                for (int j = 0; j < ARMY_SIZE; j++)
                {
                    armies[i].Item2.Add(UnitFactory.instance().createWeightedRandomUnit());
                }
            }

#if (DEBUG)
            Console.WriteLine(armies.Count + " armies has been generated.");
            foreach (var army in armies)
            {
                PrintArmy(army);
            }
#endif

#if (DEBUG)
            Console.WriteLine("#########################################################################");
            Console.WriteLine("############################BATTLE#STARTED###############################");
            Console.WriteLine("#########################################################################");
#endif

            int inter_counter = 0;
            do
            {
                for (int i = 0; i < armies.Count; i++)
                {
                    NamedArmy a = armies[i];
                    NamedArmy b = armies[i + 1 >= armies.Count ? 0 : i + 1];

#if (DEBUG)
                    Console.WriteLine(a.Item1 + " is attacking " + b.Item1);
#endif
                    AttackArmy(a.Item2, b.Item2);

                    if (Utils.isArmyAlive(b.Item2))
                    {
#if (DEBUG)
                        Console.WriteLine(b.Item1 + " is alive and want payback");
#endif
                        AttackArmy(b.Item2, a.Item2);
                    }
                    else
                    {
#if (DEBUG)
                        Console.WriteLine(b.Item1 + " is dead now and removed from pool");
#endif
                        armies.Remove(b);
                    }

                    if (armies.Count == 0)
                    {
                        break;
                    }
                }

                inter_counter++;
            } while (armies.Count != 1 && inter_counter < MAX_ITERATIONS);

#if (DEBUG)
            if (inter_counter < MAX_ITERATIONS)
            {
                Console.WriteLine(armies[0].Item1 + " has won!");
            }
            else
            {
                Console.WriteLine("Battle has been aborted due to iteration limit alert");
            }
#endif

            ReleaseOutputSettings();
        }