public void Run(World world) { var generationCount = 0; PrintGeneration(world, generationCount); var isStopping = false; while (!isStopping) { world = _worldGenerator.CreateNextGeneration(world); generationCount++; PrintGeneration(world, generationCount); Thread.Sleep(500); _quitManager.CheckUserOption(); isStopping = _quitManager.ShouldStop(); } _presenter.PrintMessage($"{Environment.NewLine}The Game of Life has been stopped.", "Green"); if (_quitManager.ShouldSave()) { _saveStateManager.Save(_initialStateFilePath, world); _presenter.PrintMessage("The current World state has now been saved in the same location as the original file.", "Blue"); } }