123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- """
- 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]
|