Esempio n. 1
0
def joueurPrincipal(listeJoueurs):
    """
	retourne le joueur principal c'est à dire le premier joueur humain
	ou si aucun joueur est humain, c'est le premier joueur
	paramètre: listeJoueurs la liste des joueurs participant au jeu
	résultat le joueur principal
	"""
    if listeJoueurs == []:
        return None
    for joueurs in listeJoueurs:
        if joueur.estHumain(joueurs):
            return joueurs
    return listeJoueurs[0]
Esempio n. 2
0
def phaseHypothese(clu, numP):
    joueurCourant = cluedo.getJoueurCourant(clu)
    numJoueurCourant = joueur.getNum(joueurCourant)
    jeu = cluedo.getJeuCartes(clu)
    courantPrincipal = joueurCourant == cluedo.getJoueurPrincipal(clu)
    courantHumain = joueur.estHumain(joueurCourant)
    information = ""
    messageErreur = ""
    if courantPrincipal:
        debutInformation="Vous êtes dans la pièce "+jeucarte.getNomCarteParNum(jeu,carte.SALLE,numP)+'\n'+\
            'Entrez votre hypothèse sous la forme p,m\n'
        information = jeucarte.stringCat(
            jeu, carte.PROFESSEUR) + '\n' + jeucarte.stringCat(
                jeu, carte.MATIERE) + '\n'
    else:
        debutInformation = "Le joueur " + str(
            numJoueurCourant
        ) + " est dans la pièce " + jeucarte.getNomCarteParNum(
            jeu, carte.SALLE, numP) + '\n'

    # Interaction pour faire une hypothèse
    fini = False
    while not fini:
        cluedo.afficherCluedo(clu,
                              debutInformation + messageErreur + information)
        hp = getHypothese(clu, numP, courantPrincipal and courantHumain)
        fini = hp != None
        messageErreur = "ATTENTION! vous n'avez pas formulé votre hypothèse correctement\n"

    if courantPrincipal:
        information = "Vous pensez que\n"
    else:
        information = "Il pense que\n"
    information+=jeucarte.getNomCarteParNum(jeu,1,hp[1]) +" donnera un cours de "+\
        jeucarte.getNomCarteParNum(jeu,2,hp[2])+" dans la pièce "+jeucarte.getNomCarteParNum(jeu,3,hp[3])+"\n"
    cluedo.afficherCluedo(clu, debutInformation + information)
    input()
    # interrogation des joueurs sur cette hypothèse
    information += interrogerJoueurs(clu, hp)
    cluedo.afficherCluedo(clu, debutInformation + information)
    input()
Esempio n. 3
0
def phaseDeplacement(clu):
    joueurCourant = cluedo.getJoueurCourant(clu)
    numJoueur = joueur.getNum(joueurCourant)
    courantPrincipal = joueurCourant == cluedo.getJoueurPrincipal(clu)
    courantHumain = joueur.estHumain(joueurCourant)
    passageSecret = cluedo.passageSecretJoueurCourant(clu)
    if passageSecret != None:
        numP, lig, col = passageSecret
        rep = getReponsePassage(clu, numP, courantHumain and courantPrincipal)
        if rep == "O":
            if courantPrincipal:
                information = "Vous avez choisi de prendre le passage secret vers la salle " + str(
                    numP) + '\n'
            else:
                information = "Le joueur " + str(
                    numJoueur
                ) + " a choisi de prendre le passage secret vers la salle " + str(
                    numP) + '\n'
            cluedo.deplacerJoueurCourant(clu, lig, col)
            cluedo.afficherCluedo(clu, information)
            return numP

    de, distances = cluedo.jouerDe(clu)

    information = ""
    messageErreur = ""

    if courantPrincipal:
        information += "Les dés valent " + str(de) + "\n" + infoDistance(
            distances) + "\nVeuillez choisir votre pièce destination\n"
    # Interaction pour choisir une destination
    fini1 = False
    while not fini1:
        cluedo.afficherCluedo(clu, messageErreur + information)
        lig, col = getDestination(clu, distances, courantHumain
                                  and courantPrincipal)
        fini1 = lig != -1
        messageErreur = "ATTENTION! Cette pièce n'existe pas\n"

    numP = cluedo.deplacerJoueurCourant(clu, lig, col)
    return numP
Esempio n. 4
0
def phaseSolution(clu):
    joueurCourant = cluedo.getJoueurCourant(clu)
    numJoueurCourant = joueur.getNum(joueurCourant)
    jeu = cluedo.getJeuCartes(clu)
    courantPrincipal = joueurCourant == cluedo.getJoueurPrincipal(clu)
    courantHumain = joueur.estHumain(joueurCourant)
    messageErreur = ""
    information = ""
    if courantPrincipal:
        debutInformation="Vous êtes dans la pièce "+jeucarte.getNomCarteParNum(jeu,carte.SALLE,cluedo.getNumPieceHypothese(clu))+\
        '\nVeuillez formuler votre réponse sous la forme numProf,numMat,numSalle\n'
    else:
        debutInformation="Le joueur "+ str(numJoueurCourant)+" est dans la pièce "+\
            jeucarte.getNomCarteParNum(jeu,carte.SALLE,cluedo.getNumPieceHypothese(clu))+'\n'
    # Interaction pour faire donner une solution
    fini = False
    while not fini:
        cluedo.afficherCluedo(clu,
                              debutInformation + messageErreur + information)
        hp = getLaSolution(clu, courantPrincipal and courantHumain)
        fini = hp != None
        messageErreur = "ATTENTION! vous n'avez pas formulé votre solution correctement\n"

    if courantPrincipal:
        information = "Vous pensez que\n"
    else:
        information = "Il pense que\n"
    information+=jeucarte.getNomCarteParNum(jeu,1,hp[0]) +" donnera un cours de "+\
        jeucarte.getNomCarteParNum(jeu,2,hp[1])+" dans la pièce "+jeucarte.getNomCarteParNum(jeu,3,hp[2])+"\n"
    fini = hp == cluedo.getSolution(clu)
    if fini:
        information += " et c'est la bonne réponse !"
        showinfo('CLUEDO', "BRAVO C'EST GAGNE")
    else:
        information += " et ce n'est pas la bonne réponse !!"
        cluedo.elimineJoueurCourant(clu)

    cluedo.afficherCluedo(clu, debutInformation + information)

    return fini
Esempio n. 5
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