Beispiel #1
0
        static void Main(string[] args)
        {
            /*
             * Utils.DrawChar('A', 10, 10);
             * Console.ReadKey();
             */

            //Controlar fps
            int      fps               = 0;
            int      desiredFPS        = 30;
            double   inverseDesiredFPS = 1.0 / desiredFPS;
            DateTime currentTime;
            TimeSpan deltaTime;

            int      frameCount  = 0;
            DateTime lastTime    = DateTime.Now;
            double   elapsedTime = 0;

            var game = new Game();

            game.Initialize();

            while (true)
            {
                game.Input();
                game.Update();
                game.Draw();

                //Console.SetCursorPosition(0, 21);
                //Console.WriteLine("");
                //Console.WriteLine($"FPS: {fps}/{inverseDesiredFPS}/{desiredFPS}");

                currentTime = DateTime.Now;
                deltaTime   = currentTime - lastTime;

                elapsedTime += deltaTime.TotalSeconds;

                while (deltaTime.TotalSeconds <= inverseDesiredFPS)
                {
                    deltaTime = DateTime.Now - lastTime;
                }

                if (elapsedTime >= 1)
                {
                    fps        = frameCount;
                    frameCount = 0;
                    elapsedTime--;
                }

                lastTime = currentTime;

                frameCount++;
            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            // initialize the game
            Stopwatch sw = new Stopwatch();
            long      wait;
            long      speed = 250;
            Game      game  = new Game(60, 25);

            game.Spawn(GameObjectType.SnakeHead);
            game.Spawn(GameObjectType.Apple);
            Console.CursorVisible = false;
            //testRender();

            //Console.ReadLine();
            //testGameOver();
            sw.Start();
            while (!game.Finished)
            {
                // wait for t time if facing north or south
                // wait for t/2 time if facing east or west
                if (game.Dir == Direction.east || game.Dir == Direction.west)
                {
                    wait = speed / 2;
                }
                else
                {
                    wait = speed;
                }
                long now = sw.ElapsedMilliseconds;
                // Read input at all times even while waiting
                while (now + wait > sw.ElapsedMilliseconds)
                {
                    game.ReadInput();
                }

                // Update the game
                game.Update();
                // Render the game
                game.Render();
            }
            game.GameOverScreen();
        }
Beispiel #3
0
        public override void Loop(Game game, LoopState state)
        {
            state.Tick();
            accumulatedTime += state.NanoSeconds;
            updateCount = 0;

            while (accumulatedTime >= frameRate && updateCount < maxCount)
            {
                game.Update(state);
                updateCount++;
                accumulatedTime -= frameRate;
            }

            state.Interpolation = accumulatedTime/frameRate;

            game.Render(state);

            //var sleepTime = (frameRate - state.MilliSeconds);

            //if(sleepTime > 0)
            //    Thread.Sleep((int)sleepTime);
        }
Beispiel #4
0
 public override void Loop(Game game, LoopState state)
 {
     state.Tick();
     game.Update(state);
     game.Render(state);
 }