Пример #1
0
Файл: Fish.cs Проект: bash/Wator
        private IAction? Reproduce(OrganismKind ownKind, IOrganismEnvironment environment)
        {
            return WithRandomUnoccupiedCell(environment, destination =>
            {
                StepsSinceLastReproduction = 0;

                return new Copy(destination, Clone(), ownKind);
            });
        }
Пример #2
0
Файл: Fish.cs Проект: bash/Wator
        public IAction? Step(OrganismKind ownKind, IOrganismEnvironment environment)
        {
            StepsSinceLastReproduction += 1;

            if (ShouldReproduce())
            {
                return Reproduce(ownKind, environment);
            }

            return Move(environment);
        }
Пример #3
0
        private IAction?Reproduce(OrganismKind ownKind, IOrganismEnvironment environment)
        {
            var unoccupiedNeighbours = environment.GetFreeNeighbours().ToList();

            if (unoccupiedNeighbours.Count == 0)
            {
                return(null);
            }

            var destination = RandomElementPicker.PickRandomElement(unoccupiedNeighbours);
            var clone       = Organism.Clone();

            return(new Copy(destination, clone, ownKind));
        }
Пример #4
0
 public Copy(Position destination, IOrganism organism, OrganismKind organismKind)
 {
     Destination  = destination;
     Organism     = organism;
     OrganismKind = organismKind;
 }
Пример #5
0
 public void AddOrganism(Position position, IOrganism organism, OrganismKind kind)
 {
     throw new System.NotImplementedException();
 }
Пример #6
0
 public GridCell(OrganismKind organismKind, IOrganism organism)
 {
     OrganismKind = organismKind;
     Organism     = organism;
 }
Пример #7
0
 public IAction?Step(OrganismKind ownKind, IOrganismEnvironment environment)
 {
     throw new System.NotImplementedException();
 }