@Afafks123132132165

Почему медленно работает игра на c++?

Здравствуйте.

Пишу я игру на c++ sfml. Делаю всё по уроку. Запускаю игру у себя на компьютере она работает медленно или быстро. Игрок то медленный то резко дёргается. Помогите пожалуйста разобраться.

#include <SFML/Graphics.hpp>
 
using namespace sf;
int main()
{
	RenderWindow window(VideoMode(480,320), "Test");
	Texture t;
	t.loadFromFile("Fang.png");
	float currentFrame = 0;
	Sprite s;
	s.setTexture(t);
	s.setTextureRect(IntRect(0,244,40,50));
	s.setPosition(50,100);
	Clock clock;
	
	while(window.isOpen())
	{
		float time = clock.getElapsedTime().asMicroseconds();
		clock.restart();
		time = time/800;
		Event event;
		while(window.pollEvent(event))
		{
			if(event.type == Event::Closed)
			{
				window.close();
			}
		if(Keyboard::isKeyPressed(Keyboard::Left))
		{
			s.move(-0.01*time,0);
			currentFrame +=0.005*time;
			if(currentFrame > 6)
			{
				currentFrame-=6;
			}
			s.setTextureRect(IntRect(40*int(currentFrame)+40,244,-40,50));
		}
		if(Keyboard::isKeyPressed(Keyboard::Right))
		{
			s.move(0.01*time,0);
			currentFrame +=0.005*time;
			if(currentFrame > 6)
			{
				currentFrame-=6;
			}
			s.setTextureRect(IntRect(40*int(currentFrame),244,40,50));
		}
		if(Keyboard::isKeyPressed(Keyboard::Up))
		{
			s.move(0,-0.1*time);
		}
		}
		window.clear();
		window.draw(s);
		window.display();
	}
	return 0;
}
  • Вопрос задан
  • 362 просмотра
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Возможно, между получением времени и сбрасыванием таймера проходит дополнительное время, которое вы не учитываете?

Попробуйте заменить это:
float time = clock.getElapsedTime().asMicroseconds();
clock.restart();

На это:
float time = clock.restart().asMicroseconds();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы