Witam. Mam problem pozornie prosty ale sobie nie radze.
Chcę w allegro zrobić ustawienia sterowania ale bez tysiaca if'òw
If (key [KEY_SPACE])
{
}
Da się to zrobić standardowymi funkcjami allegro?
Witam. Mam problem pozornie prosty ale sobie nie radze.
Chcę w allegro zrobić ustawienia sterowania ale bez tysiaca if'òw
If (key [KEY_SPACE])
{
}
Da się to zrobić standardowymi funkcjami allegro?
ten kod co masz w cialach ifow wydeleguj do osobnych metod typu "OnKeyUpPressed()", zrob slownik: <pozycja w tablicy klawiszy, wskaznik do poprzedniej metody>
, potem w forze sprawdzaj czy klawisz na danej pozycji zostal wcisniety, i jesli tak wywoluj funkcje. Mozna to rozbudowac do rozpatrywania roznych typow zdarzen, oraz mozna zamienic mape na tablice jesli numery klawiszy zaczynaja sie od 0, a nie np. od 0xfffffff, wtedy zamiast robic dodatkowa artymetyke lepiej zrobic slownik.
A po polsku? sorka ale coś nie rozumiem tego
ogólnie tego... nie jestem jakoś super dobry w tych rzeczach... można tak krok po kroku wytłumaczyć?
#include <iostream>
#include <functional>
#include <map>
using namespace std;
void OnLeftKeyDown() {
cout << "Left key is down!\n";
}
void OnRightKeyDown() {
cout << "Right key is down!\n";
}
enum Key {
KEY_LEFT = 0,
KEY_RIGHT
};
std::map<Key, std::function<void()>> KeysMap;
int main() {
KeysMap[KEY_LEFT] = OnLeftKeyDown;
KeysMap[KEY_RIGHT] = OnRightKeyDown;
auto keyHandler = KeysMap.find(KEY_LEFT);
if (KeysMap.end() != keyHandler) {
keyHandler->second();
}
return 0;
}