def getIndication(ficheIndices, numJoueur, numCategorie, numCarte): """ retourne l'indication que l'on possède concernant le joueur numJoueur et la carte numCarte,numCategorie paramètres: ficheIndices la fiche considérée numJoueur le numéro du joueur qui a montré ou qui a indiqué ne pas avoir la carte numCarte le numéro de la carte concernée numCategorie le numéro de la catégorie de la carte concernée resultat une des trois indications POSSEDE, NEPOSSEDEPAS ou NESAISPAS """ return ficheIndices[jeucarte.getCarteParNum(getJeuCartes(ficheIndices), numCategorie, numCarte)][numJoueur]
def estDansLeMystere(ficheIndices, numCarte, numCategorie): """ indique si on est sûr que la carte est dans le mystère paramètres: ficheIndices la fiche considérée numCarte le numéro de la carte concernée numCategorie le numéro de la catégorie de la carte concernée résultat un booléen indiquant si on sait définitivement que la carte n'appartient à personne """ est_sur = estConnue(ficheIndices, numCarte, numCategorie) if est_sur: if ficheIndices[jeucarte.getCarteParNum(getJeuCartes(ficheIndices), numCategorie, numCarte)][0] == '-': return True return False
def listeCartesJoueur(ficheIndices, categorie, numJoueur): """ retourne la liste des numéros de cartes d'une catégorie que l'on sait possédées par le joueur numJoueur paramètres: ficheIndices la fiche considérée numCategorie le numéro de la catégorie cherchée numJoueur le joueur dont on recherche les cartes résultat la liste des numéros cartes de la catégorie pour lesquelles on a la certitude que le joueur numJoueur la possède """ jeuCarte = getJeuCartes(ficheIndices) liste_num_cat = jeucarte.getListeNumCarteCategorie(jeuCarte, categorie) certitude = [] for numCarte in liste_num_cat: if ficheIndices[jeucarte.getCarteParNum(jeuCarte, categorie, numCarte)][numJoueur] == '+': certitude.append(numCarte) return certitude
def estConnue(ficheIndices, numCarte, numCategorie): """ indique si pour une carte donnée soit on sait qu'elle appartient à l'un des joueurs soit on sait qu'elle n'appartient à personne paramètres: ficheIndices la fiche considérée numCarte le numéro de la carte concernée numCategorie le numéro de la catégorie de la carte concernée résultat un booléen indiquant si on sait définitivement si la carte appartient à un joueur ou à personne """ nombre_possede_pas = 0 for indic in ficheIndices[jeucarte.getCarteParNum( getJeuCartes(ficheIndices), numCategorie, numCarte)].values(): if indic == '+': return True if indic == '?': return False return True
def connaissance(ficheIndices, numJoueur, numCarte, numCategorie, indication): """ met à jour la fiche indice d'un joueur en fonction des informations qu'il vient de constater c-à-d * soit le joueur numJoueur possède la carte identifiée par numCarte numCategorie * soit le joueur numJoueur ne possède pas la carte identifiée par numCarte numCategorie paramètres: ficheIndices la fiche considérée numJoueur le numéro du joueur qui a montré ou qui a indiqué ne pas avoir la carte numCarte le numéro de la carte concernée numCategorie le numéro de la catégorie de la carte concernée indication soit POSSEDE soit NEPOSSEDEPAS cette fonction ne retourne rien mais elle modifie la fiche concernée en fonction des indications """ carte = jeucarte.getCarteParNum(getJeuCartes(ficheIndices), numCategorie, numCarte) if indication == "+": for num_joueur in getListeNumJoueurs(ficheIndices): ficheIndices[carte][num_joueur] = '-' ficheIndices[carte][numJoueur] = indication
def hypothesesSures(ficheIndices): """ retourne un dictionnaire dont les clés sont les catégories de carte et les valeurs la carte de la catégorie correspondante que l'on sait être dans la solution. Si on n'a aucune certitude pour une catégorie, la clé ne sera pas présente dans le dictionnaire. paramètres: ficheIndices la fiche considérée résultat le dictionnaire décrit ci dessus """ dico_hypothese = {} jeuCarte = getJeuCartes(ficheIndices) for categorie in range(1, 4): liste_num_carte = jeucarte.getListeNumCarteCategorie( jeuCarte, categorie) for num_carte in liste_num_carte: if estDansLeMystere: dico_hypothese[categorie] = jeucarte.getCarteParNum( jeuCarte, categorie, num_carte) return dico_hypothese