Powinieneś zrobić sobie 4 boole dla każdej ze stron w którą idziesz i kiedy gracz naciśnie dany przycisk, to ustawiasz dany bool na true, a kiedy puści to zmieniasz na false. Potem tylko zrób metodę, która sprawdza czy dany bool jest ustawiony (czyli ma wartość true) i jeżeli tak, to wtedy nim rusz. Na kursach o robieniu gier tak jest i problem jest dlatego, że program niejednolicie sprawdza te eventy i do tego zanim dostaniesz event o puszczonym klawiszu to możesz dostać jeszcze np. event dotyczący poruszenia myszką i wtedy też powinno przestać "chodzić". ;) Zrób jak mówię i będzie działać. :)
bool forward = false;
bool right = false;
bool left = false;
while( oknoAplikacji.isOpen() )
{
Event zdarzenie;
while( oknoAplikacji.pollEvent( zdarzenie ) )
{
switch(zdarzenie.type) {
case sf::Event::KeyPressed:
if(zdarzenie.key.code == sf::Keyboard::A) left = true;
if(zdarzenie.key.code == sf::Keyboard::W) forward = true;
zdarzenie.key.code == sf::Keyboard::D) right = true;
break;
case sf::Event::KeyUp:
if(zdarzenie.key.code == sf::Keyboard::A) left = false;
if(zdarzenie.key.code == sf::Keyboard::W) forward = false;
zdarzenie.key.code == sf::Keyboard::D) right = false;
break;
case sf::Event::Closed:
oknoAplikacji.close();
break;
}
}
if(forward) obrazek.move(0,-10);
if(left) obrazek.move(-10,0);
if(right) obrazek.move(10,0);
}