This game is our first year's project at Ecole Centrale de Lille (IG2I). We decided to port Avalam's board game on computer. We added some IA and are trying to get it as optimized as possible. It's still under development.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
What things you need to install the software and how to install them
SDL2 -> no tutorial for now
A step by step series of examples that tell you have to get a development env running
First compile for your environment
g++ src/main.cpp src/classes/*/*.cpp -o avalam.exe
Give it rights
chmod +x avalam.exe
And execute
./avalam.exe
Here is an output-overview of what it currently does.
Running build/release-0.1.2.exe...
=========================
======== BOARD ========
=========================
= ==0== ==1== ==2== ==3== ==4== ==5== ==6== ==7== ==8== =
= 0: (0:1) (0:1) =
= 1: (1:1) (1:1) (1:1) (1:1) =
= 2: (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) =
= 3: (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) =
= 4: (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) =
= 5: (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) =
= 6: (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) =
= 7: (1:1) (1:1) (1:1) (1:1) =
= 8: (0:1) (0:1) =
==== 0 : 24 | 1 : 24 ====
Bot John initialised ! (team : 0)
David has joined the game ! (team : 1)
=========================
======== PLATEAU ========
=========================
= ==0== ==1== ==2== ==3== ==4== ==5== ==6== ==7== ==8== =
= 0: (0:1) (0:1) =
= 1: (1:1) (1:1) (1:1) (1:1) =
= 2: (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) =
= 3: (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) =
= 4: (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) =
= 5: (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) (1:1) =
= 6: (0:1) (0:1) (0:1) (0:1) (0:1) (0:1) =
= 7: (1:1) (1:1) (1:1) (1:1) =
= 8: (0:1) (0:1) =
==== 0 : 24 | 1 : 24 ====
Please feel free to share what you experienced with the game. We're also very happy to hear your improvement ideas.
We use our own algorithm about versioning (simple increment).
See also the list of contributors who participated in this project.
This project is not under any license yet.
Ce repo correspond au projet MPI (projet C de 1ère année à IG2I (Ecole Centrale de Lille)).
Le principe du projet est de coder une version jeu vidéo du jeu de stratégie "Avalam".
Les règles et principes du jeu sont exprimés dans cette vidéo par le créateur du jeu.
Les règles du jeu restent les même. Néanmoins nous avons implémenté 3 différents modes de jeu :
- Humain vs Humain : 2 joueurs humains s'affrontent au tour par tour, en déplaçant les pions à l'aide de la souris
- Humain vs IA 1 joueur humain contre une intelligence artificielle s'affrontent. L'intelligence artificielle joue de manière automatisée le meilleur mouvement qu'elle peut prédire.
- IA vs IA 2 IA s'affrontent. L'utilisateur voit de déroulement de la partie et peut l'arrêter, l'accélérer, la ralentir, pour pouvoir observer la manière de jouer de l'IA.
Langages : - C - C++
Librairies : - SDL2
Compilation : - Unix (gcc/g++)
Le projet est divisé en plusieurs répertoires :
-
build
Tous nos builds sont sauvegardés dans ce dossier comme tel :
Le versioning est géré par l'utilitaire compile
que nous avons créé.
-
config
cat-variables pour le fichiercompile
et peut-être pour d'autres choses plus tard -
junk
Quelques scripts qui nous on servit et qu'on ne supprime pas pour le moment. Ils ne font pas partie du code source -
logs
Logs de compilation fournis parcompile
et surement d'autres par la suite. -
src
Répertoire des sources. Il est organisé comme tel :-
main.cpp
Fichier principal -
classes
Contient toutes les classes que nous avons codées pour le projet. Chaque classe est représentée par un dossier à son nom contenant au moinsclassName.class.cpp
=> contient les implémentations de fonctions de la classeclassName.class.cpp
=> contient le prototype de la classeclassName.test.cpp
=> tests unitaires pour la classe
-
-
compile
Shell-script utilisé pour la compilation, les logs, le versioning, etc. -
Compilation UNIX :
g++ src/classes/*/*.class.cpp src/main.cpp -lSDL2
-
Compilation UNIX avec duck :
duck compile dev sdl
-
Compilation windows :
g++ -w -I.\include -Lsrc\lib src/classes/Display/Display.class.cpp src/classes/Emplacement/Emplacement.class.cpp src/classes/GraphicComponent/GraphicComponent.class.cpp src/classes/Mouvement/Mouvement.class.cpp src/classes/MovePlan/MovePlan.class.cpp src/classes/Player/Player.class.cpp src/classes/Window/Window.class.cpp src/main.cpp -lSDL2 -lSDL2main -lSDL2.dll -lmingw32 -std=c++11 -static-libgcc -static-libstdc++