public virtual void LoadContent(ContentManager content) { texture[AnimationType.WALKING] = content.Load <Texture2D>(textureName[AnimationType.WALKING]); missileTroll = content.Load <Texture2D>("axe"); missileElven = content.Load <Texture2D>("arrow"); ui.LoadContent(content); GeneticUtil.Encode(this); }
public void Update() { int alives = 0; for (int i = 0; i < enemies.Count; i++) { enemies[i].Update(); if (enemies[i].information.HitPoints > 0) { alives++; } } if (alives == 0) { string s = ""; List <UnitEnemy> waveDead = new List <UnitEnemy>(); for (int i = wavesEnemies * generation; i < (wavesEnemies * generation) + (wavesEnemies); i++) { waveDead.Add(enemies[i]); s += (enemies[i].information.Fitness + ", "); } for (int i = 0; i < waveDead.Count / 2; i++) { UnitEnemy[] indexes = GeneticUtil.RouletteWheelSelection(waveDead); string[] parent01 = GeneticUtil.Encode(indexes[0]); string[] parent02 = GeneticUtil.Encode(indexes[1]); int cut = random.Next(0, parent01.Length); string[] child01 = new string[7]; string[] child02 = new string[7]; if (random.Next(0, 100) > 80) { for (int j = 0; j < parent01.Length; j++) { if (j < cut) { child01[j] = parent01[j]; child02[j] = parent02[j]; } else { child01[j] = parent02[j]; child02[j] = parent01[j]; } } } else { child01 = parent01; child02 = parent02; } InformationUnit info01 = GeneticUtil.Decode(child01); InformationUnit info02 = GeneticUtil.Decode(child02); if (info01.Type == Util.Units.GRUNT) { enemies.Add(new Grunt(info01, managerMouse, managerMap, managerBuildings)); } else { enemies.Add(new TrollAxethrower(info01, managerMouse, managerMap, managerBuildings)); } if (info02.Type == Util.Units.GRUNT) { enemies.Add(new Grunt(info02, managerMouse, managerMap, managerBuildings)); } else { enemies.Add(new TrollAxethrower(info02, managerMouse, managerMap, managerBuildings)); } } Console.WriteLine(s); generation++; LoadContent(); } //for (int i = 0; i < enemies.Count; i++) //{ // if (enemies[i].information.HitPoints > 0) // { // enemies[i].information.HitPoints = 0; // enemies[i].information.Fitness = random.Next(0, 500); // } //} }