public List <Position> suggest() { List <Position> agg = new List <Position>(); foreach (Unit u in current.units) { if (map.canMove(u.pos.x + 1, u.pos.y, u.race)) { agg.Add(PositionImpl.getPosition(u.pos.x + 1, u.pos.y)); } else if (map.canMove(u.pos.x - 1, u.pos.y, u.race)) { agg.Add(PositionImpl.getPosition(u.pos.x - 1, u.pos.y)); } else if (map.canMove(u.pos.x, u.pos.y + 1, u.race)) { agg.Add(PositionImpl.getPosition(u.pos.x, u.pos.y + 1)); } else if (map.canMove(u.pos.x, u.pos.y - 1, u.race)) { agg.Add(PositionImpl.getPosition(u.pos.x, u.pos.y - 1)); } } List <Position> res = new List <Position>(); foreach (Position p in agg) { if (!res.Contains(p)) { res.Add(p); } } return(res); }
public MapImpl(int s) { //Utilisation de la dll cpp pour remplir //un tableau d'entier Algo a = new Algo(); size = s; int nbTiles = size * size; int[] tab = a.FillMap(size); //Utilisation de ce tableau pour générer le //tableau de Tiles tiles = new Tile[nbTiles]; TileFactory tf = TileFactoryImpl.getTileFactory(); for (int i = 0; i < nbTiles; i++) { tiles[i] = tf.getTile(tab[i]); } int j, k; units = new Dictionary <Position, List <Unit> >(); for (k = 0; k < size; k++) { for (j = 0; j < size; j++) { units.Add(PositionImpl.getPosition(k, j), new List <Unit>()); } } _instance = this; }
public Unit getUnit(int Col, int Row) { Position pos = PositionImpl.getPosition(Col, Row); int n = units.Count; for (int i = 0; i < n; i++) { if (units[i].pos.x == pos.x && units[i].pos.y == pos.y) { return(units[i]); } } return(null); }
public void placeArmy(Player p, int numPlayer) { Race r = p.race; Random rand = new Random(p.GetHashCode()); int pos = 0, posX = 0, posY = 0, chgmentLigne = 0; if (numPlayer == 1) { posX = rand.Next(0, size); pos = posX + (size * posY); if (p.race.name != "human") { Console.WriteLine("Attention, race non humaine pour le joueur 1"); Console.WriteLine("Position : " + pos); Console.WriteLine("Tile type : " + tiles[pos].getName()); while (tiles[pos].getName() == "water") { Console.WriteLine("Position trouvée est sur l'eau pour joueur 1, on relance la recherche"); posX = rand.Next(0, size); pos = posX + (size * posY); Console.WriteLine("Tile type : " + tiles[pos].getName()); if (chgmentLigne > 20) { posY++; } chgmentLigne++; } } } else { posY = size - 1; posX = rand.Next(0, size); pos = posX + (size * posY); if (p.race.name != "human") { Console.WriteLine("Attention, race non humaine pour le joueur 2"); Console.WriteLine("Position : " + pos); Console.WriteLine("Tile type : " + tiles[pos].getName()); while (tiles[pos].getName() == "water") { Console.WriteLine("Position trouvée est sur l'eau pour joueur 2, on relance la recherche"); posX = rand.Next(0, size); pos = posX + (size * posY); Console.WriteLine("Tile type : " + tiles[pos].getName()); if (chgmentLigne > 20) { posY++; } chgmentLigne--; } } } Position position = PositionImpl.getPosition(posX, posY); foreach (Unit unit in p.units) { unit.pos = position; List <Unit> u = new List <Unit>(); units.TryGetValue(position, out u); u.Add(unit); units.Remove(position); units.Add(position, u); } }