This is a simple C++ implementation of the game "Tichu". The official game is published by Fata Morgana, you can find the official German rules here and the English ones here. The implementation features a client/server architecture for multiplayer scenarios. It uses Dear ImGui for the GUI, sockpp for the network interface, nlohmann/json for object serialization, and googletest for the unit tests.
This project should compile on Linux, Windows and MacOS. It was mainly tested on Ubuntu 20/22 and Windows 10/11.
- C++20
- OpenGL 3.2+
- CMake 3.15+
In order to build the project, navigate into the project directory and run the following commands:
- In the tichu-project file,
mkdir build
create your build folder - Go into your build folder
cd build
- Use cmake to build the make file
cmake ..
- Build everything you need with
make
- go into your build folder
cd build
- Run server
./Tichu-server
- In new consoles 4 clients
./Tichu-client
Alternatively, in order to start 4 clients simultaneously, there is a script named start_tichu.sh located in the directory scripts.
Before the code documentation can be generated, Doxygen needs to be installed. This can be done by cloning the git repository and following the install instructions.
After Doxygen has been installed, navigate into the directory doxygen_doc. Post the command doxygen Doxyfile
into the terminal (Doxyfile refers to the file name within the directory). The Doxygen documentation will be generated within a folder named html. The file named index.html will land you on the main page.
After starting the client, the first screen is going to be the login screen. Here every player enters:
- the server address
- the server port
- their player name
- their preferred team (Team A , Team B or a random selection)
If one player choses the team selection option random, all players will be distributed randomely.
When all details are entered, the player clicks on the CONNECT-button. If the player belongs to the first 3 players joining, they will be forwarded to the game lobby.
As long as not all players have been connected yet, the waiting players will be placed in the lobby.
As soon as all players have joined, they will be asked to start the game.
The following pictures show a couple of exemplary situations, which one will encouter while playing a round.