Go to file
2024-09-18 16:48:02 +02:00
game_optimized.py rapport debut 2024-09-18 16:48:02 +02:00
game.py rapport debut 2024-09-18 16:48:02 +02:00
RapportNim.odt rapport debut 2024-09-18 16:48:02 +02:00
README.md rapport debut 2024-09-18 16:48:02 +02:00

BUT3 Jeu

Groupe : Dylan LANDRIN, Killian SCHIED

Séance du 12/09/24

Au cours de cette séance, nous avons implémenté 3 algorithmes en python:

exploreMax

Le but d'explore max est de déterminer si le joueur 1 peux faire un coup qui mettrais en echec joueur 2.

exploreMin

Le but de Min est l'inverse, il voit s'il peut mettre joueur 1 en échec

miniMax

miniMax appelle les explorations

Séance du 17/09/24

Au cours de cette séance, nous avons apportés des modifications dans les fonctions utilisées dans l'algorithme miniMax() ainsi qu'un affichage de l'objet Game.

exploreMax() et exploreMin()

Des optimisations ont été apportés dans ces fonctions afin de stopper la recherche lorsque une solution a été trouvée.

Exemple :

Avant

Test avec 5 allumettes :

$ python3 game.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 5
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 17
exploreMin calls = 19
First player winning ? = False

Test avec 11 allumettes :

$ python3 game.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 11
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 261
exploreMin calls = 261
First player winning ? = True

Test avec 14 allumettes :

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 14
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 916
exploreMin calls = 913
First player winning ? = True

Test avec 17 allumettes :

$ python3 game.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 17
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 6401
exploreMin calls = 6403
First player winning ? = False

Test avec 42 allumettes :

$ python3 game.py

Test avec 100 allumettes :

$ python3 game.py

Après

Test avec 5 allumettes :

$ python3 game_optimized.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 5
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 3
exploreMin calls = 3
First player winning ? = False

Test avec 11 allumettes :

$ python3 game.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 11
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 6
exploreMin calls = 6
First player winning ? = True

Test avec 14 allumettes :

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 14
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 8
exploreMin calls = 7
First player winning ? = True

Test avec 17 allumettes :

$ python3 game.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 17
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 9
exploreMin calls = 9
First player winning ? = False

Test avec 42 allumettes :

$ python3 game.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 42
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 22
exploreMin calls = 21
First player winning ? = True

Test avec 100 allumettes :

$ python3 game.py

-----------------------
Game and algorithm data
-----------------------
== Game data ==
Remaining matches : 100
Game state : 0
Actual player : 1
== Algorithm data ==
exploreMax calls = 51
exploreMin calls = 50
First player winning ? = True