guiding principles:
- separates game Logic, Networking, and Visual drawing
- Server is the only authoritative source: simulation of the game is done also in the server and scores are calculated there.
- dry principle (don't repeat yourself), sharing same game logic file between players and server.
to be improved (not enough time) :
- better Synchronization between players and server.
- game Design
- Documenting code