Siema.
Kod:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <vector>
#include <sstream>
#include <SFML\Window.hpp>
#include <SFML\Graphics.hpp>
using namespace std;
using namespace sf;
int main()
{
RenderWindow oknoAplikacji(VideoMode(800, 600, 32), "Program Testowy");
while (oknoAplikacji.isOpen())
{
Event zdarzenie;
while (oknoAplikacji.pollEvent(zdarzenie))
{
if (zdarzenie.type == Event::KeyPressed && zdarzenie.key.code == Keyboard::F1 || zdarzenie.type == Event::Closed)
{
oknoAplikacji.close(); //np. zamknięcie aplikacji
}
}
Texture grass;
grass.loadFromFile("textures/obj/grass.png");
Sprite grass2;
grass2.setTexture(grass);
grass2.setPosition(300, 300);
if (Keyboard::isKeyPressed(Keyboard::Up)) grass2.move(0, -10);
if (Keyboard::isKeyPressed(Keyboard::Down)) grass2.move(0, 10);
if (Keyboard::isKeyPressed(Keyboard::Left)) grass2.move(-10, 0);
if (Keyboard::isKeyPressed(Keyboard::Right)) grass2.move(10, 0);
oknoAplikacji.clear();
oknoAplikacji.draw(grass2);
oknoAplikacji.display();
}
//Koniec
return 0;
}
Rusza się i wraca do tego samego miejsca jak puszczę strzałkę. Muszę pobierać aktualną pozycje i według niej poruszać?
Rozwiązanie: Włączenie synchronizacji pionowej i limitu fps za pomocą:
oknoAplikacji.setVerticalSyncEnabled(1); // Setting max framerate to 60 (Facultative)
oknoAplikacji.setFramerateLimit(60); // Setting max framerate to 60 (Facultative)