Ejemplo n.º 1
0
        public override bool TryMove(Field <IAnimal> field, out Vector nextMove)
        {
            if (!TryDecreaseHealth())
            {
                nextMove = new Vector();
                return(false);
            }

            PerformMating(field);

            var vectorsLionToAntelope = CollectVectorsFromNearbyLions(field);

            if (vectorsLionToAntelope.Count > 0)
            {
                nextMove = _borderChecker.FitVectorIntoBorders(field.Size, Position, CalculateMoveByNearbyLions(vectorsLionToAntelope));
            }
            else
            {
                nextMove = _randomMoveCalculator.GetFreePositionsAndCalculate(Position, field);
            }

            var p = Position + nextMove;

            return(field[p.X, p.Y] == null);
        }
Ejemplo n.º 2
0
        public void AdjustPosition(Field <IAnimal> field, IAnimal animal, Vector nextMove)
        {
            nextMove = _borderChecker.FitVectorIntoBorders(_field.Size, animal.Position, nextMove);
            var nextPosition = animal.Position + nextMove;

            if (field[nextPosition.X, nextPosition.Y] != null)
            {
                return;
            }

            field[animal.Position.X, animal.Position.Y] = null;
            field[nextPosition.X, nextPosition.Y]       = animal;
            animal.Position = nextPosition;
        }