ustawienia sterowania

0

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?

2

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.

0

A po polsku? sorka ale coś nie rozumiem tego

0

ogólnie tego... nie jestem jakoś super dobry w tych rzeczach... można tak krok po kroku wytłumaczyć?

1
#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;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1