public Base(int i, int j, TypesOfObject obj, Map map) : base(i, j, obj) { TypeOfObject = obj; Color = TypeOfObject == TypesOfObject.BaseBlack ? Colors.Black : Colors.White; Scope = new IItem[7, 7]; Map = map; }
public void UpdateUnits(TypesOfObject unit, Statistics stats) { foreach (var unitToUpdate in MapManager.Map.Army) { if (unitToUpdate.TypeOfObject == unit) { var xNew = unitToUpdate.X; var yNew = unitToUpdate.Y; _rules.GetNewPositionAccordingToDirection(ref yNew, ref xNew, unitToUpdate); if (!_rules.ShouldUnitsBeUpdated(MapManager.Map.GetItem(yNew, xNew))) { continue; } if (MapManager.Map.GetItem(yNew, xNew) is Food) { MapManager.MoveUnit(yNew, xNew, unitToUpdate); MapManager.SpawnUnitNearBase(unitToUpdate.TypeOfObject); stats.IncFood(); } else { MapManager.MoveUnit(yNew, xNew, unitToUpdate); } } } MapManager.UpdateArmies(); }
public void SetItem(int y, int x, TypesOfObject obj) { Array[y, x] = obj; if (obj == TypesOfObject.BaseBlack || obj == TypesOfObject.BaseWhite) // adds base to list if needed { BaseList.Add(new Base(y, x, obj, this)); } }
private void MakeATurn(IAlgorithm armyType, TypesOfObject unit, Statistics stats) { var army = MapManager.Map.Army.FindAll(x => x.TypeOfObject == unit); armyType.MoveAllUnits(army, MapManager.Map.GetLength()); UpdateUnits(unit, stats); UnitsAttackFoes(); stats.SetArmyNumber(army); }
private void GenerateBaseAndUnit(TypesOfObject unit, TypesOfObject Base) { while (true) { var x = Rnd.Next(1, Map.GetLength() - 1); var y = Rnd.Next(1, Map.GetLength() - 1); if ((Map.Array[y, x] != TypesOfObject.FreeSpace && Map.Array[y, x] != TypesOfObject.Brick && Map.Array[y, x] != TypesOfObject.Food) || (Map.Array[y - 1, x] != TypesOfObject.FreeSpace && Map.Array[y - 1, x] != TypesOfObject.Brick && Map.Array[y - 1, x] != TypesOfObject.Food)) { continue; } Map.SetItem(y, x, Base); Map.SetItem(y - 1, x, unit); Map.Army.Add(new Unit(y - 1, x, unit, Map)); break; } }
public void SpawnUnitNearBase(TypesOfObject unit) { var baseTmp = unit == TypesOfObject.UnitWhite ? Map.BaseList.Find(x => x.TypeOfObject == TypesOfObject.BaseWhite) : Map.BaseList.Find(x => x.TypeOfObject == TypesOfObject.BaseBlack); for (var i = baseTmp.Y - 1; i <= baseTmp.Y + 1; i++) { for (var j = baseTmp.X - 1; j <= baseTmp.X + 1; j++) { if (i != baseTmp.Y && j != baseTmp.X && (Map.Array[i, j] == TypesOfObject.Food || Map.Array[i, j] == TypesOfObject.Brick || Map.Array[i, j] == TypesOfObject.FreeSpace)) { Map.SetItem(i, j, unit); Map.AddUnitToArmy(new Unit(i, j, unit, Map)); return; } } } }
public Border(int i, int j, TypesOfObject obj) : base(i, j, obj) { }
public static void AddUnitOnMap(int y, int x, Map map, TypesOfObject obj) { map.SetItem(y, x, obj); map.Army.Add(new Unit(y, x, obj, map)); }
public Brick(int i, int j, TypesOfObject obj) : base(i, j, obj) { Color = Colors.Brown; }
public BaseItem(int i, int j, TypesOfObject obj) { TypeOfObject = obj; J = j; I = i; }
public Food(int i, int j, TypesOfObject obj) : base(i, j, obj) { Color = Colors.Green; }
public UnitBase(int i, int j, TypesOfObject obj) : base(i, j, obj) { Color = obj == TypesOfObject.UnitBlack ? Colors.Black : Colors.White; }
public Unit(int i, int j, TypesOfObject obj, Map map) : base(i, j, obj) { Map = map; ScopeArray = GetAllObjectsInScopeArray(); }
public FreeSpace(int i, int j, TypesOfObject obj) : base(i, j, obj) { Color = Colors.Bisque; }