Exemple #1
0
        private static void Main(string[] args)
        {
            var originalForegroundColor = Console.ForegroundColor;

            Console.Title = String.Format("Game of Lifes Engine v{0}", Assembly.GetExecutingAssembly().GetName().Version);

            var world = new World(Console.WindowWidth - 1, Console.WindowHeight);
            var renderer = new World2StringRenderer();

            world.Randomize(0.1);

            var lastFrameTime = DateTime.Now;
            var lastWindowWidth = Console.WindowWidth;
            var lastWindowHeight = Console.WindowHeight;
            while (true) {
                if (lastWindowWidth != Console.WindowWidth || lastWindowHeight != Console.WindowHeight) {
                    world.Resize(Console.WindowWidth - 1, Console.WindowHeight);
                }

                Console.Clear();
                Console.Write(renderer.Render(world, (char) 30, ' '));

                Console.ForegroundColor = Simulator.Simulate(world) ? originalForegroundColor : ConsoleColor.Red;

                var now = DateTime.Now;
                var diff = DateTime.Now - lastFrameTime;
                if (diff.TotalSeconds < FRAME_TIME) {
                    var sleepTime = (int) (FRAME_TIME * 1000 - diff.TotalMilliseconds);
                    Thread.Sleep(sleepTime);
                }
                lastFrameTime = now;
            }
        }