Esempio n. 1
0
        private AcreTypes GetNewValue(int x, int y)
        {
            AcreTypes        current        = _area[x, y];
            List <AcreTypes> neighbours     = GetNeighbours(x, y).ToList();
            int numberOfNeighboursWithTrees = neighbours
                                              .Where(n => n == AcreTypes.Trees)
                                              .Count();
            int numberOfNeighboursWithLumberyards = neighbours
                                                    .Where(n => n == AcreTypes.Lumberyard)
                                                    .Count();

            if (current == AcreTypes.OpenGround)
            {
                return(numberOfNeighboursWithTrees >= 3
                    ? AcreTypes.Trees
                    : AcreTypes.OpenGround);
            }
            else if (current == AcreTypes.Trees)
            {
                return(numberOfNeighboursWithLumberyards >= 3
                    ? AcreTypes.Lumberyard
                    : AcreTypes.Trees);
            }
            else if (current == AcreTypes.Lumberyard)
            {
                return((numberOfNeighboursWithLumberyards >= 1 && numberOfNeighboursWithTrees >= 1)
                    ? AcreTypes.Lumberyard
                    : AcreTypes.OpenGround);
            }
            else
            {
                throw new Exception(); // TODO
            }
        }
Esempio n. 2
0
        public Area GetNext()
        {
            var newArea = new AcreTypes[Width, Height];

            for (int y = 0; y < Height; y++)
            {
                for (int x = 0; x < Width; x++)
                {
                    newArea[x, y] = GetNewValue(x, y);
                }
            }

            return(new Area(TimeInSeconds + 1, newArea));
        }
Esempio n. 3
0
 public void SetValue(int x, int y, AcreTypes type)
 {
     _area[x, y] = type;
 }