Computer Science Canada SDL KEYUP event |
Author: | Insectoid [ Mon Jun 20, 2011 8:33 pm ] | ||
Post subject: | SDL KEYUP event | ||
I've been messing around in SDL to get familiar with it (and also to get better at C++). Anyway, the issue I'm having is, the SDL_KEYUP event does not seem to work right. Or maybe I don't understand how event queues are handled. Either way, something's up.
The functions setDirectionUp(), setDirectionDown(), and setDirectionStop() all work perfectly (I've tested them rigorously). The SDL_KEYDOWN case works perfectly fine. I press 'up', my character moves up. If I press 'down', the character moves down. Note that these functions just change a direction flag. There is a move() function that actually moves the character. The SDL_KEYUP case calls SetDirectionStop() which sets the direction flag to 0 (ie no movement). This is not happening. When I remove the SDL_KEYDOWN case completely (comment that section out), SDL_KEYUP works sporadically. The event seems to trigger whenever there is a KEYDOWN, OR a KEYUP event. So, KEYUP *sort of* works. I think part of the issue is that maybe checking for SDL_KEYDOWN is bumping SDL_KEYUP off the event queue? I admit, I have very little understanding of how events work, and my implementation may well be the issue. ~Insectoid |
Author: | DemonWasp [ Tue Jun 21, 2011 11:03 am ] | ||
Post subject: | RE:SDL KEYUP event | ||
Look very closely at that condition and tell me what you see. |
Author: | Insectoid [ Tue Jun 21, 2011 11:08 am ] |
Post subject: | RE:SDL KEYUP event |
Ah, haha, my bad. Major logical flaws I usually catch myself, but tiny errors like these slip past me all too often. |
Author: | DemonWasp [ Tue Jun 21, 2011 11:18 am ] |
Post subject: | RE:SDL KEYUP event |
Depending on which compiler you're using, there's usually a setting to turn on errors for things like this. For gcc or g++ it's "-Wall". I strongly recommend using "-Wall -Werror -Wextra", and I like to use "-pedantic" whenever I write C/C++/uC++. These will help you find minor syntax slip-ups before they get compiled and produce odd logic errors. If you're working with templates, it can be helpful to use "-Wfatal-errors", so that the very first problem halts compilation, preventing one error from visually merging with the next. The price you pay for these settings is correcting your programs up-front, at compile time. The price you pay for NOT using them is difficult-to-debug logic errors at run-time. |
Author: | Insectoid [ Tue Jun 21, 2011 12:06 pm ] |
Post subject: | RE:SDL KEYUP event |
Hmm, I'm using Xcode on OS X at the moment, since I've not figured out how to link SDL manually, but I'm sure there's an option somewhere to turn on those flags (Xcode compiles with gcc I believe). |
Author: | DemonWasp [ Tue Jun 21, 2011 12:33 pm ] |
Post subject: | RE:SDL KEYUP event |
http://developer.apple.com/tools/xcode/xcodebuildsettings.html |
Author: | Insectoid [ Tue Jun 21, 2011 12:57 pm ] |
Post subject: | RE:SDL KEYUP event |
Oh, thanks! Spares me some time on Google (and Apple's awful (imo) website). |