TCP Games - Guess My Number

Guess My Number is a very simple game.  It's played by only one player.  The server will think of a number between 1 and 100 (included) and then ask the client to guess it.  It will tell the client if their guess was too high or too low.  Once the user guesses correctly the game will then tell the server to disconnect the player.  Keep in mind the Run() method is run in a separate thread.  While the rest of the server is asynchronous and multithreaded, we're going to run stuff synchronously and single threaded here.

 

 

Like said before, it needs to implement the IGame interface.  At the top we store a pointer to the TcpGamesServer that is running this game.  This way we can access the server's methods to transmit Packets.  We simply call our game "Guess My Number," with the Name property.  And the RequiredPlayers only is one.  In our constructor we also initialize a random number generator.

AddPlayer() will only accept one player for the game.  If another one is provided, we ignore them and return false.

DisconnectClient() is a notifying method.  In case we have one and it's our player, then we need to disconnect them (thus also quitting the Game too).

The Run() method will not start the game unless we have a player.  If we do, we send them a message Packet containing the rules.  Then we generate our number.  In the main game loop we send the user a request for input.  Since ReceivePacket() might return a null, we keep checking in a loop until we have one.  Our Game has to check for disconnects since we're now handling the client.  If is there is a graceful one we mark it.  If we get a response to our input request, we then check it.  Based on the input, we see if they were right or wrong and send them a message based upon that.  At the end of the main game loop we check for our disconnects (graceful or not).

Once the client has disconnected or guessed the right number, we exit the Run() function.  And then our game is over.

© 16BPP.net – Made using & love.
Back to Top of Page
This site uses cookies.