コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: MapImpl.cs プロジェクト: Tyzeppelin/petitmondetemp
        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;
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: MapImpl.cs プロジェクト: Tyzeppelin/petitmondetemp
        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);
            }
        }