Fill-Game
Fill-Game is a two-player (adversarial) version of Fillomino. It is (probably) first proposed by Dr. Martin Müller; if so; this software is the first for Fill-Game.
Functions & Goals
- [x] Local play
- [x] Two human players
- [x] Human vs. AI player
- [x] Cross-machine play
- [x] Cross-platform deployment
Algorithms
- Proof Number Search (PNS)
- Depth-First Proof Number Search (DFPN)
- Minimax (with alpha-beta pruning and transposition table)
- Negamax (with alpha-beta pruning and transposition table)
- Monte Carlo Tree Search (MCTS)
Build
To build with GUI (requires set up Qt5.12.8)
./linux_build.sh --gui
To build without GUI
./linux_build.sh
Run
Start GUI version
./fillgame_gui
Start CLI version
./fillgame_cli <game-board-string> <time-limit>
To run unittests for algorithms
./test_main
To run experiments
./run_experiments.sh
Development
- Ubuntu 22.04 / WSL2
- VS Code / CLion
- C++ 20
- GUI Framework: Qt5
- Unit test: Google Test
- Formatter: clang-format-12
- Profiler: Valgrind, kcachegrind
Guide
- Follows Google C++ Guide
- Profiler:
valgrind --tool=callgrind ./(Your binary)
&& kcachegrind callgrind.out.x