Quick summary: Console application (no gui!) written in C programming language one server, one client application.
So files: server.c and client.c are expected in separate source and output files.
Classic ludo game with 2 human players on the same computer, each player runs a client of the game and there is a server (running on localhost) that handles the communication and gameplay rules.
Game rules: The players have 2-2 distinguishable dolls. The players roll the dice in turns. If the player steps on a field that's already taken by a doll, then the doll already there returns to field #1 (knock out - doesn't matter whose doll it is) and the former doll takes it's place. After field #49 knocking out the dolls is not possible. The goal of the game is to pass through field #49 with both of the dolls - the player who accomplishes this first is the winner.
How the program should work:
- Server application starts and waits for the TWO clients to join.
- When the 1st client starts the application they should receive a mesage that we're waiting for the 2nd player.
- When the 2nd client joins, the game automatically starts.
- The dice is represented by the server, it generates random numbers from 1-6 and it sends the values for the appropriate client
- After the client receives their number, the client sends to the server which doll with they want to move (that's why the dolls need to be distinguishable).
- The server's job is to update the game board, detect and handle specific scenarios (moving with a doll, knocking out a doll, winning, losing). The game board is stored on the server.
What is expected regarding the gameplay mechanics.
The program should acknowledge knock out scenarios, winners and losers. Clients can give up and stop the current match by sending a message (I give up) and inform the other client about this - this way the game ends, but the applications doesn't close just yet.
If the game ends either because someone wins, or someone gave up the server should allow the players to:
- play another match (by sending a message: restart)
- or stop the game (by sending a message: stop)
If "restart" is chosen a new match starts again.
If "stop" is chosen all 3 applications (server, client, client) closes.
Edit: the source code should be well commented, explaining what are you doing.
Expected to be done in 48 hours (that's the maximum).