I'll state upfront that this is almost exactly the same question as: PyGame: Economic way of handling game loops
I want to make a turn-based dungeon crawl with pygame and pygcurse. I've made a basic template that works if I just let the main while loop go at a certain fps. This seems ridiculous to me to actually implement it this way.
It would be far less complicated to just have the while loop iterate upon a keypress, because literally nothing is happening between inputs. Why make the main loop iterate a million times if someone wants to think about their next move for 15 minutes?
I've tried all sorts of variants on pygcurse.waitforkeypress() and pygame.event.wait(). I can get the loop to wait for a keypress, but the keypress doesn't seem to enter the queue, so the character doesn't move anymore (I know it is looping exactly once on each keypress despite the lack of movement because I put a counter in for debugging purposes).
Is there an obvious intrinsic way to do this or is this just a horribly outdated way to think about game design?