Esempio n. 1
0
        public bool CalculateNextTurn(int turn)
        {
            var activeNeighbours = Neighbours().Count(neighbour => neighbour != null && neighbour.IsActiveInTurn(turn - 1));

            var isActive = IsActiveInTurn(turn - 1);

            //If a cube is active and exactly 2 or 3 of its neighbors are also active, the cube remains active. Otherwise, the cube becomes inactive.
            //If a cube is inactive but exactly 3 of its neighbors are active, the cube becomes active. Otherwise, the cube remains inactive.
            if (isActive && (activeNeighbours == 2 || activeNeighbours == 3))
            {
                IsActive.Add(turn, true);
                return(true);
            }
            if (!isActive && activeNeighbours == 3)
            {
                IsActive.Add(turn, true);
                return(true);
            }
            IsActive.Add(turn, false);
            return(false);
        }