000
20.08.2006, 15:02 Uhr
Lensflare
|
hallo.
ich bekomme einen runtime error und versuche ihn schon seit 3 tagen zu beseitigen.
einige versuche deuten darauf hin, dass es vielleicht etwas mit enum zu tun hat.
ich benutze eine lib namens "allegro". die lib hat ein globales enum, wo die tasten der tastatur aufgelistet sind
C++: |
enum { __allegro_KEY_A = 1, __allegro_KEY_B = 2, __allegro_KEY_C = 3, //... };
#define KEY_A __allegro_KEY_A #define KEY_B __allegro_KEY_B #define KEY_C __allegro_KEY_C //...
|
dann gibt es ein array namens key[], mit den man pröfen kann ob eine taste gerade gedrückt ist.
C++: |
if(key[KEY_A]) { //Taste A ist gerade gedrückt }
|
in meinem projekt habe ich eine klasse für einen spieler angelegt, die die werte der tasten speichern soll.
also so:
C++: |
#define USE 0 #define LEFT 1 #define SELECT 2 #define RIGHT 3
class CPlayer { public: //... void SetKeyUse(int k) { m_iKey[USE] = k; }; void SetKeyLeft(int k) { m_iKey[LEFT] = k; }; void SetKeySelect(int k) { m_iKey[SELECT] = k; }; void SetKeyRight(int k) { m_iKey[RIGHT] = k; }; //...
private: int m_iKey[4]; //...
|
dann "setze" ich die tasten für jeden spieler:
C++: |
spieler1->SetKeyLeft(KEY_A); spieler1->SetKeyRight(KEY_D); spieler1->SetKeySelect(KEY_S); spieler1->SetKeyUse(KEY_W);
|
und überprüfe in der klasse des spielers, ob diese gedrückt wurden:
C++: |
if(key[ m_iKey[USE] ]) { //Taste für die Aktion "USE" wurde gedrückt. }
|
//das ist eine vereinfachte darstellung, da ich auch noch überprüfe ob die taste im letzten zyklus auch gedrückt war, um die "USE-Aktion" bei gedrückter taste nicht mehrmals auszuführen. aber das ist für das problem nicht relevant, denke ich.
Meine frage ist nun, ob es ok ist, dass ich den wert, den KEY_A usw. hat, also einen enum wert, in ein int umwandle, ihn speichere und dann bei der überprüfung, ob die taste gedrückt ist, wieder in ein enum wert umwandle?
würde es einen unterschied machen, wenn ich die werte statt in int lieber in unsignded int speichern würde?
(beim probieren habe ich keinen unterschied gemerkt) -- Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten. (Emerson Pugh Trost) |