예제 #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
파일: Reproducer.cs 프로젝트: bash/Wator
        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
파일: Simulation.cs 프로젝트: bash/Wator
 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
파일: Shark.cs 프로젝트: bash/Wator
 public IAction?Step(OrganismKind ownKind, IOrganismEnvironment environment)
 {
     throw new System.NotImplementedException();
 }