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(); }
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(); }