I need a simple client/server game written in VB.net, compatible with Visual Studio 2010. The code in both the client and server applications needs to be heavily commented.
All communication between the client and server must be in real time and must be secure. Clients do not need to connect directly to other clients, but only to the server. TCP is the preferred protocol but I am open to other protocols (but not UDP).
This game will allow 2 players (Player 1 and Player 2) to play against each other (this will be called a "session" - please see the attached network diagram). There can be multiple sessions at the same time, but only 2 players per session. So, this game must be scalable. As described below, whoever clicks a button first in the game will win.
When the client application is launched by each Player, they should see a form with a label that tells them their connection status with the server (not connected, connecting, connected) and a "Click Me" button that is disabled. The label that shows the connection status must always be visible and should accurately reflect the connection status. Only 1 form is needed for this application.
Once each client has connected to the server, both players should see another label which says that the first round will begin in 3 seconds. This label should refresh every second so that the users see a countdown from 3 seconds. When "0" is reached, this label should become invisible, and both players "Click Me" buttons should become enabled.
Whoever clicks the "Click Me" button first will win that round. The server and client applications must communicate in real time (instantly). When any Player clicks the "Click Me" button, both Player's "Click Me" buttons should become instantly disabled. If Player 1 clicks the button first, then a label
on Player 2's form should tell them that Player 1 clicked first, and a label on Player 1's form should tell them that they clicked first. These notification labels should appear for 5 seconds. Of course, if Player 2 clicks the "Click Me" button first, they should win the round and the labels should reflect this.
Another label should tell each player the number of rounds they have won, and this label should be visible at all times.
After the 5 seconds are over, another label should appear to both players, instructing them that the next round will begin in 3 seconds. The label should refresh every second so that the user sees a countdown from 3 seconds. When "0" is reached, this label should become invisible, both players "Click Me" buttons should become enabled, and the process starts again.
After 5 rounds, the communications between the server and clients should be closed, and the connection status label on each client should reflect this. A "Game Over" label should appear on each client.