I’m working on a game, written in PHP and that runs in a console. Think back to old MUDs and other text-based games, even some ASCII art!
Anyway, what I’m trying to do is have things happening while also accepting user input.
For instance, let’s say it’s a two player game and Player 1 is waiting for Player 2 to make a move. This is easily done by just listening for a message.
But what if Player 1 wants to change some options? What if they want to view details on aspects of the game state? What about conceding the game? There are many things a Player may want to do while waiting for their opponent to make a move.
Unfortunately the best I have right now is the fact that Ctrl+C completely kills the program. The other player is then left hanging, until the connection is dropped. Oh, and the game is completely lost.
I get user input with fgets(STDIN). But this blocks execution until input has been received (which is usually a good thing).
Is it even possible for a console program like this to handle input and output simultaneously? Or should I just look at some other interface?
Sorry Matthew, I’m going to have to un-accept your answer, because I have found it myself:
Use the following code to receive user input while still doing something else:
This can then be used to interrupt the loop and enter an options menu, or trigger some other event, or could even be used to type out a command if used right.