ZAPPY is a network game about managing a world and its inhabitants, where several teams confront each other on a tile map containing resources. The winning team is the first one where at least 6 players reach the maximum elevation. To do so, a team of player AIs is launched on a board representing their planet, communicating –and sabotaging other teams– together to achieve victory.
- ...
- gcc
- python3
- make
- Nix (optional, for reproducible builds via
flake.nix
)
.
├── server/
│ └── ...
├── ai/
│ └── ...
├── gui/
│ └── ...
├── scripts/
│ ├── align_columns.py
│ ├── check_commit_message.py
│ ├── discard_headers.py
│ └── insert_headers.py
├── .clang-format
├── .clang-tidy
├── .gitignore
├── Makefile
├── flake.nix
├── flake.lock
├── assignment.pdf
├── zappy_ref-v3.0.0.tgz
├── .github/
│ └── workflows/
│ └── ci.yml
└── (bonus/)
-
Clone the repository:
git clone <repository-url> cd <repository-directory>
-
Build the project:
make
- Use
make re
to force a rebuild. - Use
make clean
to remove object files. - Use
make fclean
to remove all build artifacts and binaries.
- Use
-
(Optional) Using Nix:
nix develop make
Run the server shell with:
./zappy_server -p port -x width -y height -n name1 name2 ... -c clientsNb -f freq
-p port
: Port number.-x width
: Width of the world.-y height
: Height of the world.-n name1 name2 ...
: Name(s) of the allowed team(s).-c clientsNb
: Number of authorized clients per team.-f freq
: Reciprocal of time unit for execution of actions.
Note
The team name GRAPHIC
is reserved for the GUI to authenticate itself as such to
the server.
Run the server shell with:
./zappy_gui -p port -h machine
-p port
: Port number.-h machine
: Hostname of the server.
Run the server shell with:
./zappy_ai -p port -n name -h machine
-p port
: Port number.-n name
: Name of the team.-h machine
: Name of the machine; localhost by default.
-
Coverage: Run:
make cov
(To be completed: Add test instructions and coverage details.)
Yohann B. | Gabriel H. | Julien B. | Valentin R. | Hugo H. |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
For more details, see assignment.pdf.