예제 #1
0
    /// <summary>
    /// Считает промежуточные данные, необходимые для выполнения дальнейших команд
    /// </summary>
    /// <param name="bug"> Жук, который сейчас ходит  </param>
    public static bool DoCommand(Bug bug)
    {
        Coordinates destination = Coordinates.CoordinateShift[bug.CalculateShift()] + bug.CurrentPosition;

        DestinationCell = Map.GetMapCell(destination.Y, destination.X);
        if (Math.Abs(bug.Health - MaxBugHealth) < 10)
        {
            return(Multiply(bug));
        }
        else
        {
            // Если данному номеру генома присвоена команда, тогда необходимо её выполнить
            if (MasBugCommands.Length > bug.Gene.genome[bug.Gene.CurrentGenePosition])
            {
                return(MasBugCommands[bug.Gene.genome[bug.Gene.CurrentGenePosition]].Invoke(bug));
            }
            else
            {
                // Иначе сделать переход по геному
                bug.Gene.CurrentGenePosition++;
                return(GenomJump(bug));
            }
        }
    }