""" Convention : Toute I.A. possède une méthode calculer_coup. Celle-ci prend en argument le plateau de la situation courante et la liste des coups autorisés. Elle retourne un indice. """ from random import randint from Outils.Moteur_de_jeu.Coup import * #Utilisé dans IA_random class Joueur : #Quentin 13/10/2016 def __init__(self, jtype, nom) : #Quentin 14/10/2016 self.type = jtype #"H" ou "O" self.nom = nom self.num = 0 #Par défaut, est modifié au début de la partie def est_humain(joueur) : return joueur.type == "H" class Humain(Joueur) : #Quentin 14/10/2016 def __init__(self,nom) : #Quentin 14/10/2016 Joueur.__init__(self,"H",nom) class IA_random(Joueur) : """ I.A. aléatoire, pour tester. Hérite de la classe Joueur. """ def __init__(self, nom) : #Quentin 13/10/2016 Joueur.__init__(self, "O", nom) def calculer_coup(self, plateau, liste_coups) : #Quentin 13/10/2016 indices_M = [] indices_B = [] for i in range(len(liste_coups)) : if liste_coups[i].type == "M" : indices_M.append(i) else : indices_B.append(i) #On choisit un des deux types de mouvement, on mélange la liste qui lui correspond et on en retourne le premier élément sous forme de coup if randint(0,1) == 1 or indices_B == [] : #Si aucune barrière ne peut être placée, on est obligé de se déplacer i = randint(0, len(indices_M) - 1) return indices_M[i] else : return randint(0, len(indices_B) - 1) return indices_B[i]