Exemplo n.º 1
0
def definirMystere(jeucarte):
    """
    retourne un mystère constitué de cartes du jeu
    ces cartes sont enlevées du jeu
    jeuCarte : un jeu de carte considéré comme mélangé
    """
    reste_mystere = [carte.PROFESSEUR, carte.MATIERE, carte.SALLE]
    i = 0
    ok_matiere = False
    ok_professeur = False
    ok_salle = False
    while (not ok_matiere or not ok_professeur
           or not ok_salle) and i < len(jeucarte):
        if not ok_professeur and carte.getCategorie(
                jeucarte[i]) == reste_mystere[0]:
            mystere_professeur = carte.getNum(jeucarte[i])
            ok_professeur = True
            cartes = list(jeucarte[i])
            cartes[4] = False
            jeucarte[i] = tuple(cartes)

            i -= 1
        elif not ok_matiere and carte.getCategorie(
                jeucarte[i]) == reste_mystere[1]:
            mystere_matiere = carte.getNum(jeucarte[i])
            ok_matiere = True
            cartes = list(jeucarte[i])
            cartes[4] = False
            jeucarte[i] = tuple(cartes)
            i -= 1
        elif not ok_salle and carte.getCategorie(
                jeucarte[i]) == reste_mystere[2]:
            mystere_salle = carte.getNum(jeucarte[i])
            if mystere_salle != 10:
                ok_salle = True
                cartes = list(jeucarte[i])
                cartes[4] = False
                jeucarte[i] = tuple(cartes)
                i -= 1
        i += 1
    try:
        return mystere.Mystere(mystere_professeur, mystere_matiere,
                               mystere_salle)
    except:
        print("Jeu de carte non complet")
Exemplo n.º 2
0
def initFicheIndices(ficheIndices, numJoueur, jeuCartes):
    """
    initialise une fiche indice appartenant au joueur numJoueur qui possède les carte contenu dans la liste
    paramètres : ficheIndices la fiche indice du joueur
                 numJoueur un entier strictement positif indiquant le numéro de joueur à qui appartient la fiche
                 jeuCartes les cartes en possession du joueur
    cette fonction ne retourne pas de résultat mais modifie la fiche du joueur de telle sorte qu'elle indique que le joueur
    numJoueur possède chacune des cartes de la liste (et que donc les autres joueurs ne les possèdent pas)
    """
    for cartes_total in getJeuCartes(ficheIndices):
        connaissance(ficheIndices, numJoueur, carte.getNum(cartes_total),
                     carte.getCategorie(cartes_total), '-')
    for cartes in jeuCartes:
        for numjoueur in ficheIndices[cartes].keys():
            connaissance(ficheIndices, numjoueur, carte.getNum(cartes),
                         carte.getCategorie(cartes), '-')
            if numjoueur == numJoueur:
                connaissance(ficheIndices, numjoueur, carte.getNum(cartes),
                             carte.getCategorie(cartes), '+')
Exemplo n.º 3
0
def possedeParNum(joueur, cat, num):
    """
    indique si un joueur possède une carte identifiée par sa catégorie et son numéro
    paramètres: joueur le joueur considéré
                cat le numéro de la catégorie
                num le numéro de la carte
    résultat: None si le joueur ne possède pas la carte ou la carte concernée s'il la possède
    """
    for cartes in getCartes(joueur):
        if carte.getNum(cartes) == num and carte.getCategorie(cartes) == cat:
            return cartes
Exemplo n.º 4
0
def initialiseFiche(joueur, listeJoueurs, jeuCartes):
    """
    initialise la fiche d'un joueur en fonction des cartes qu'il possède
    paramètres: joueur le joueur considéré
                listeJoueurs la liste des joueurs
                jeuCartes le jeu de cartes qui sont distribuées
    cette fonction ne retourne rien mais modifie le joueur (sa fiche)
    """
    fiche_indice = ficheIndices.FicheIndices(listeJoueurs, jeuCartes)
    for cartes in getCartes(joueur):
        for joueur_info in listeJoueurs:
            if getNum(joueur_info) != getNum(joueur):
                ficheIndices.connaissance(fiche_indice, getNum(joueur_info),
                                          carte.getNum(cartes),
                                          carte.getCategorie(cartes), '-')
            else:
                ficheIndices.connaissance(fiche_indice, getNum(joueur_info),
                                          carte.getNum(cartes),
                                          carte.getCategorie(cartes), '+')
    joueur[5] = fiche_indice
Exemplo n.º 5
0
def getListeNumCarteCategorie(jeucarte, cat):
    """
    retourne la liste des numéros de carte du jeu qui sont dans
    catégorie passée en paramètre
    jeuCarte : un jeu de carte
    cat      : le numéro de la catégorie (PROFESSEUR, MATIERE, SALLE)
    """
    liste_num_carte_cat = []
    for cartes in jeucarte:
        if carte.getCategorie(cartes) == cat:
            liste_num_carte_cat.append(carte.getNum(cartes))
    return liste_num_carte_cat
Exemplo n.º 6
0
def getNomCarteParNum(jeucarte, cat, numCarte):
    """
    recherche le nom d'une carte dans le jeu à partir des numéros de
    catégorie et de carte
    jeuCarte : un jeu de carte
    cat      : le numéro de la catégorie (PROFESSEUR, MATIERE, SALLE)
    numCarte : le numéro de la carte 
    """
    for cartes in jeucarte:
        if carte.getNum(cartes) == numCarte and carte.getCategorie(
                cartes) == cat:
            return carte.getNom(cartes)
Exemplo n.º 7
0
def stringCat(jeucarte, categorie):
    """
    retourne une chaine de caractères donnant les numéros et noms des cartes
    d'une catégorie par exemple pour les professeurs on souhaite obtenir une chaine
    qui s'affiche comme ci-dessous:
    1. Edgar Codd
    2. John von Neuman
    3. Allan Turing
    4. JCR Licklider
    5. Ada Lovelace
    6. Grace Hopper
    paramètres:
    jeuCarte : un jeu de carte
    categorie : le numéro de la catégorie
    """
    chaine_cat = ''
    for cartes in jeucarte:
        if carte.getCategorie(cartes) == categorie:
            chaine_cat += " " + str(
                carte.getNum(cartes)) + ". " + carte.getNom(cartes) + "\n"
    return chaine_cat
Exemplo n.º 8
0
def interrogerJoueurs(clu, hypothese):
    joueurCourant = cluedo.getJoueurCourant(clu)
    ficheJoueurCourant = joueur.getFiche(joueurCourant)
    indiceJoueurCourant = cluedo.getIndiceJoueurCourant(clu)
    nbJoueurs = cluedo.getNbJoueurs(clu)
    listeJoueurs = cluedo.getListeJoueurs(clu)
    information = ""
    for i in range(1, nbJoueurs):
        indiceInterroge = (indiceJoueurCourant + i) % nbJoueurs
        joueurInterroge = listeJoueurs[indiceInterroge]
        numJoueurInterroge = joueur.getNum(joueurInterroge)
        information += "\nle joueur " + str(
            numJoueurInterroge) + " est interrogé"
        if joueur.estHumain(joueurInterroge) and joueurInterroge==cluedo.getJoueurPrincipal(clu) and\
           joueur.reponseHypothese(joueurInterroge,hypothese)!=None:
            cluedo.afficherCluedo(clu, information)
            rep = demanderJoueurHumain(clu, information, joueurInterroge,
                                       hypothese)
        else:
            rep = cluedo.demanderJoueurOrdinateur(clu, joueurInterroge,
                                                  hypothese)
        if rep != None:
            ficheIndices.connaissance(ficheJoueurCourant,numJoueurInterroge,carte.getNum(rep),carte.getCategorie(rep),\
                                      ficheIndices.POSSEDE)
            if joueurCourant == cluedo.getJoueurPrincipal(clu):
                information += "\nLe joueur " + str(
                    numJoueurInterroge) + " vous a montré " + carte.getNom(rep)
            else:
                information += "\nLe joueur " + str(
                    numJoueurInterroge) + " a montré une carte"
            break
        else:
            information += "\nLe joueur " + str(
                numJoueurInterroge) + " ne possède aucune carte"
            for cat, num in hypothese.items():
                for j in range(nbJoueurs):
                    ficheIndices.connaissance(joueur.getFiche(listeJoueurs[j]),numJoueurInterroge,\
                                              num,cat,ficheIndices.NEPOSSEDEPAS)
    return information