Skip to content
/ Fill-Game Public

Two Player (Adversarial) Version of Fillomino | (Depth-First) Proof Number Search, Monte Carlo Tree Search, Minimax, Negamax, Alpha-beta pruning

License

Notifications You must be signed in to change notification settings

pwyq/Fill-Game

Repository files navigation

Fill-Game

build

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

  • Local play
    • Two human players
    • Human vs. AI player
  • Cross-machine play
  • 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

About

Two Player (Adversarial) Version of Fillomino | (Depth-First) Proof Number Search, Monte Carlo Tree Search, Minimax, Negamax, Alpha-beta pruning

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages