Esempio n. 1
0
            public override string ToString()
            {
                var landString = new StringBuilder();

                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++)
                    {
                        var point = new Point(x, y);
                        if (Trees.Contains(point))
                        {
                            landString.Append('|');
                        }
                        else if (Lumberyard.Contains(point))
                        {
                            landString.Append('#');
                        }
                        else
                        {
                            landString.Append('.');
                        }
                    }

                    landString.AppendLine();
                }

                return(landString.ToString());
            }
Esempio n. 2
0
            public Land Next()
            {
                var newLumberyard = new HashSet <Point>();
                var newTrees      = new HashSet <Point>();

                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++)
                    {
                        var point = new Point(x, y);
                        if (Trees.Contains(point))
                        {
                            ConvertTree(point, newLumberyard, newTrees);
                        }
                        else if (Lumberyard.Contains(point))
                        {
                            ConvertLumberyard(point, newLumberyard, newTrees);
                        }
                        else
                        {
                            ConvertOpen(point, newLumberyard, newTrees);
                        }
                    }
                }

                return(new Land(newLumberyard, newTrees, width, height));
            }
Esempio n. 3
0
            private void ConvertTree(Point point, HashSet <Point> newLumberyard, HashSet <Point> newTrees)
            {
                var adjacent = point.AdjacentInAllDirections()
                               .Where(p => p.X >= 0 && p.X < width && p.Y >= 0 && p.Y < height)
                               .ToList();

                if (adjacent.Count(a => Lumberyard.Contains(a)) >= 3)
                {
                    newLumberyard.Add(point);
                }
                else
                {
                    newTrees.Add(point);
                }
            }