This repository contains our implementation of the board game "Council of Four" distributed by CranioCreation. This file will help you to understand how we built it.
We'll explain how to run it properly and some particular features.
In order to play, you first need to start the server, to do that run
/server/src/main/java/com/server/controller/MainServer.java
and choose what connection the server has to receive :
- Socket
- RMI
###Start Client
Once the server runs you're be able to play a game. So start the client running
/client/src/main/java/com/client/controller/MainClient.java
First of all you have to choose an interface beetween
- GUI (only socket)
- CLI
Then choose the connection type adapting to the server one
Follow the instructions on screen and join the game!
For mac users: it's recommended to run the guy in windowed mode (ESC)
The main window
We've decided to use three modules in our project:
- Server
- Client
- Communication
All the logic is in server. It has been stratified. We have three levels:
- Lobby, that creates the game (or more) and manages it (them).
- GameHandler, that manages a single game.
- ClientHandler, dedicated to I/O with Client.
Client has no game logic. Communication package is the core of our Communication protocol involved in Server/Client interaction. Hiding game logic to client we ensure a protection layer to the game, making it harder to find exploitable flaws. It also makes it possible to have a lightweight client.
We've made large use of MVC pattern in threads communication.
Maps are defined using XML language. You can choose between 8 maps ( the same of the board game) or import a custom one using its filepath. The admin is the only one who can change the map in a room. When the game starts the parser imports the selected map.
Lobby is the advanced function we implemented in our project. It can manage more than a game as you can see in the image. Every Room is a game in which the Admin can set the game rules. The admin is the one who creates the room; if he leaves, another player will take his place.
Group members (cg42):
- Niccolò Pozzolini
- Saverio Ruggieri
- Francesco Vona