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++; } }
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(); }
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); }
public override void Loop(Game game, LoopState state) { state.Tick(); game.Update(state); game.Render(state); }