Witam. Chciałbym napisać grę, do której potrzebuję wszystkich klawiszy liter z klawiatury, i nie mogę znaleźć czy jest prostszy sposób niż robienie dla każdej litery
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
itd?
Witam. Chciałbym napisać grę, do której potrzebuję wszystkich klawiszy liter z klawiatury, i nie mogę znaleźć czy jest prostszy sposób niż robienie dla każdej litery
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
itd?
Eventy i KeyPressed a potem sprawdzenie kodu klawisza w evencie?
https://www.sfml-dev.org/tutorials/2.5/window-events.php
Jeżeli potrzebujesz użyć wszystkich klawiszy to w jaki sposób miałoby wyglądać prostsze API by móc sprawdzić każdy klawisz?
Niektóre biblioteki umożliwiają zarejestrowanie callbacka by sprawdzać eventy poza główną pętlą, ale nie jestem pewien czy to jest prostszy sposób, raczej alternatywa dla niektórych zastosowań i nie wiem czy SFML umożliwia coś takiego.
sf::Keyboard::Key
jest enumem, w którym wszystkie litery są obok siebie. Zatem klawisze od A do Z możesz sobie spokojnie przelecieć w pętli.
for(auto k = sf::Keyboard::Key::A; k <= sf::Keyboard::Key::Z; ++k) {
// jakies twoje rzeczy
}
Coś takiego powinno zadziałać.
@Sensacyjny Sebastian: Bardziej chcę coś w stylu, że wciskam np. J i funkcja zwróciłaby by mi wciśniętą literę
To możesz, jak zasugerował @alagner, nasłuchiwać na eventy KeyPressed
. Eventy te zawierają informację, jaki klawisz został wciśnięty (dokumentacja) - możesz sprawdzić, czy code
jest pomiędzy sf::Keyboard::Key:A
a sf::Keyboard::Key::Z
. Wartość numeryczna sf::Keyboard::Key:A
to 0, a litery są po kolei (dokumentacja), więc w tym momencie już w zasadzie jesteś w domu.
Dzięki za pomoc. Udało się zrobić to co chciałem.
for(int i=0; i<letters.size(); i++)
{
if(sf::Keyboard::isKeyPressed&&event.Event::key.code==letters[i]->getLetter())
std::cout<<"ta sama";
}