Skip to content

Python implementation of the Hex game with AI based on MC and MCTS methods. Interactive mode with pygame.

Notifications You must be signed in to change notification settings

amait41/Hex-Game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Hex-Game

Hex est un jeu de société pour deux personnes dans lequel les joueurs essaient de relier les côtés opposés d'une grille hexagonale. Hex est intéressant car malgré des règles extrêmement simples le jeu offre une grande compléxité : cinq milliards de fois plus de positions possibles que les échecs (sur un plateau de 11x11). Cette grande profondeur signifie que le jeu reste difficile à jouer pour les ordinateurs.

Comment jouer ?

Lorsque c'est votre tour, cliquez sur une cellule vide pour la marquer de votre couleur. Essayez de créer un chemin reliant vos deux côtés du plateau.

Il est possible de jouer contre une IA, dont plusieurs implémentations sont disponibles :

  • random
  • mc
  • mc_ucb1
  • uct

Setup

# Get the code
git clone https://github.com/Maxime-LP/Hex-Game/main
cd Hex-Game

# Virtualenv modules installation (Unix based systems)
virtualenv env
source env/bin/activate

# Virtualenv modules installation (Windows based systems)
# virtualenv env
# .\env\Scripts\activate

# Install modules
pip3 install -r requirements.txt

Start a game

$ ./main.py player1_type player2_type board_size

player1_type/player2_type : 'h' for human player and 'random', 'mc', 'mc_ucb1' or 'uct' for AI, correspond to implemented method. board_size : 7 or 11

Test

In file test.py two test functions are implemented.

  • test1 allows to find the best constant for UCT at the set of Hex (Spoiler : 0.4).
  • test2 makes one AI play against the other.
$ ./test.py AI1Name AI2Name 7 testName

About

Python implementation of the Hex game with AI based on MC and MCTS methods. Interactive mode with pygame.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages