V. Global.py▲
Vous pouvez visualiser le contenu du fichier en cliquant sur le lien Global.py.
V-1. Les constantes▲
Toutes mes constantes sont en majuscules. INFINITY représente la valeur maximum pour l'évaluation du score d'une position de jeu lors du déroulement de l'algorithme alpha bêta.
Les constantes commençant par IA définissent les fonctions pour le calcul du score. Ainsi, si vous souhaitez d'autres fonctions de calcul du score, il suffit de définir ici un identifiant puis d'écrire la fonction de calcul du score dans le module Plate.
Actuellement, j'en ai défini six dont cinq basiques et une faisant intervenir le calcul de quelques paramètres intéressants.
INFINITY =
1000
IAALEATORY =
0
## "Coup aléatoire"
IABADSCORE =
1
## "Pions other - Pions self"
IABESTSCORE =
2
## "Pions self - Pions other"
IABESTSCOREMIN =
3
## "min(1, Pions self - Pions other)"
IABESTSCOREMOVE =
4
## "ScoreMove self - ScoreMove other"
IAWINLOSE =
5
## "max(-1, min(1, Pions self - Pions other))"
IACHOICES =
[u"Coup aléatoire"
,
u"Score normal négatif"
,
u"Score normal"
,
u"Gagne ou meilleur perte"
,
u"ScoreMove self - ScoreMove other"
,
u"Gagne ou perd"
]
Nous avons aussi quatre constantes pour le plateau de jeu ou les coups :
- PLATEINIT : plateau de jeu initial ;
- PLATEMOVE : cases du plateau de jeu où il peut y avoir un pion ;
- FREEMOVEINIT : case vide au départ d'une partie ;
- PLATEMOVEINIT : case prise par un pion au départ d'une partie.
V-2. Les variables globales▲
Je définis souvent un dictionnaire global glovar comment variable globale contenant toutes mes variables globales pour éviter d'avoir des conflits dans l'espace des noms quand on redéfinit une variable en ayant oublié de la déclarer global.
Ici, toutes les valeurs concernent les paramètres initiaux de la réflexion des ordinateurs noirs et blancs à savoir :
- la durée des phases du début et fin de partie ;
- la profondeur de réflexion des coups en début, milieu et fin de partie ;
- l'IA sélectionnée pour chacune des phases.
Les deux dernières valeurs freemove représentent pour une partie, les cases libres en cours et platemove, les cases utilisées.
glovar =
{}
glovar['levelbeginblack'
] =
6
glovar['levelbeginwhite'
] =
6
glovar['levelmiddleblack'
] =
4
glovar['levelmiddlewhite'
] =
4
glovar['levelendblack'
] =
8
glovar['levelendwhite'
] =
8
glovar['thinkingblack'
] =
True
glovar['thinkingwhite'
] =
True
glovar['iabeginblack'
] =
IABESTSCOREMOVE
glovar['iabeginwhite'
] =
IABESTSCOREMOVE
glovar['nbmovebeginblack'
] =
6
glovar['nbmovebeginwhite'
] =
6
glovar['iaendblack'
] =
IABESTSCOREMIN
glovar['iaendwhite'
] =
IABESTSCOREMIN
glovar['nbmoveendblack'
] =
8
glovar['nbmoveendwhite'
] =
8
glovar['iamiddleblack'
] =
IABESTSCOREMOVE
glovar['iamiddlewhite'
] =
IABESTSCOREMOVE
glovar['freemove'
] =
range(
11
, 89
)
glovar['platemove'
] =
[]