000
16.05.2008, 17:43 Uhr
FunnyDingo
|
Hallo zusammen,
ich habe die Sache mit den Bitmasks noch immer nocht ganz verstanden, daher muss ich mal nachfragen. Ich habe eine Lib in deren Header folgendes zu finden ist:
C++: |
// button state: struct buttons { // convenience accessors inline bool A () const { return (Bits & _A) != 0; } inline bool B () const { return (Bits & _B) != 0; } inline bool Plus () const { return (Bits & PLUS) != 0; } inline bool Home () const { return (Bits & HOME) != 0; } inline bool Minus () const { return (Bits & MINUS) != 0; } inline bool One () const { return (Bits & ONE) != 0; } inline bool Two () const { return (Bits & TWO) != 0; } inline bool Up () const { return (Bits & UP) != 0; } inline bool Down () const { return (Bits & DOWN) != 0; } inline bool Left () const { return (Bits & LEFT) != 0; } inline bool Right () const { return (Bits & RIGHT) != 0; }
// all 11 buttons stored as bits (set = pressed) WORD Bits;
// button bit masks (little-endian order) enum mask { LEFT = 0x0001, RIGHT = 0x0002, DOWN = 0x0004, UP = 0x0008, PLUS = 0x0010, TWO = 0x0100, ONE = 0x0200, _B = 0x0400, // ie. trigger _A = 0x0800, MINUS = 0x1000, HOME = 0x8000, // ALL = LEFT|RIGHT|DOWN|UP|PLUS|TWO|ONE|_A|_B|MINUS|HOME, }; } Button;
|
Wie kann ich denn am schlausten prüfen, ob mehr als ein Button gedrückt ist (welcher ist erstmal egal).
Ich glaube ich würde ein ganz wildes if machen in etwa so:
C++: |
if (x.Button.Bits != x.Button.LEFT && x.Button.Bits != x.Button.RIGHT...)
|
Wenn nur ein Button gedrückt ist, müsste ja bei irendeine True rauskommen, wenn mehrere gedrückt sind, sind alle false.
Komische Lösung oder?
Gruß, Funny -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Meine Website: http://www.funnydingo.de |