Пример #1
0
 protected override void Attack()
 {
     if (GridData.Distance(Pos, target.Pos) <= 1)
     {
         target.LoseHp(Damage, target);
     }
 }
Пример #2
0
    protected override void Think()
    {
        IaManager im = IaManager.Instance;

        int idEnemiesTeam            = (IdTeam + 1) % 2;
        int shortestDistanceToTarget = 1000000;

        destination = im.IaTeam(idEnemiesTeam)[0].Pos;
        target      = im.IaTeam(idEnemiesTeam)[0];
        shortestDistanceToTarget = GridData.Distance(Pos, destination);

        for (int i = 1; i < im.IaTeam(idEnemiesTeam).Count; i++)
        {
            if (im.IaTeam(idEnemiesTeam)[i].IsAlive)
            {
                int distanceTemp = GridData.Distance(Pos, im.IaTeam(idEnemiesTeam)[i].Pos);

                if (distanceTemp <= shortestDistanceToTarget)
                {
                    shortestDistanceToTarget = distanceTemp;
                    destination = im.IaTeam(idEnemiesTeam)[i].Pos;
                    target      = im.IaTeam(idEnemiesTeam)[i];
                }
            }
        }
        destination = Dijkstra(Pos, destination, MovePoints);
    }
Пример #3
0
    protected override void Think()
    {
        IaManager im = IaManager.Instance;

        int idEnemiesTeam            = (IdTeam + 1) % 2;
        int shortestDistanceToTarget = 1000000;

        destination = im.IaTeam(idEnemiesTeam)[0].Pos;
        target      = im.IaTeam(idEnemiesTeam)[0];
        shortestDistanceToTarget = GridData.Distance(Pos, destination);

        for (int i = 1; i < im.IaTeam(idEnemiesTeam).Count; i++)
        {
            if (im.IaTeam(idEnemiesTeam)[i].IsAlive)
            {
                int distanceTemp = GridData.Distance(Pos, im.IaTeam(idEnemiesTeam)[i].Pos);

                if (distanceTemp <= shortestDistanceToTarget)
                {
                    shortestDistanceToTarget = distanceTemp;
                    destination = im.IaTeam(idEnemiesTeam)[i].Pos;
                    target      = im.IaTeam(idEnemiesTeam)[i];
                }
            }
        }
        // pour rester a distance de la target
        if (GridData.Distance(Pos, destination) <= 4)
        {
            List <GridData.PosGrid> pos = new List <GridData.PosGrid>();
            for (int i = Pos.column - 3; i < Pos.column + 3; i++)
            {
                for (int j = Pos.line - 3; j < Pos.line + 3; j++)
                {
                    GridData.PosGrid posGrid;
                    posGrid.column = i;
                    posGrid.line   = j;
                    if (GridData.Distance(destination, posGrid) == 3 && GridManager.Instance.IsValidPos(posGrid.column, posGrid.line))
                    {
                        pos.Add(posGrid);
                    }
                }
            }
            destination = pos[0];
            int distance = GridData.Distance(Pos, destination);
            for (int i = 1; i < pos.Count; i++)
            {
                if (GridData.Distance(Pos, pos[i]) < distance)
                {
                    destination = pos[i];
                    distance    = GridData.Distance(Pos, pos[i]);
                }
            }
        }
        else
        {
            destination = Dijkstra(Pos, destination, MovePoints);
        }
    }