Exemple #1
0
 def test_AsTravailClandestin(self):
     p = Partie()
     p.initialiser(3, [])
     joueur = p.joueurs[0]
     joueur.ressources = util.rVide()
     for CAS in p.plateau["actionsSpeciales"]:
         for l in CAS.listeActionSpeciale:
             if l.uid == 'b4':
                 carte = l
     #possibilitesVides
     (choixPossibles, sujet, encore, message) = carte.jouer()
     self.assertTrue(len(choixPossibles) == 0)
     #si je me mets 1 pn et 1 bois c'est idem
     joueur.ressources['b'] = 1
     joueur.ressources['n'] = 1
     (choixPossibles, sujet, encore, message) = carte.jouer()
     self.assertTrue(len(choixPossibles) == 0)
     #mais avec 2 argiles c'est ok
     joueur.ressources['a'] = 2
     (choixPossibles, sujet, encore, message) = carte.jouer()
     self.assertTrue(len(choixPossibles) == 1)
     #on la joue
     (choixPossibles, sujet, encore,
      message) = carte.effet(0, p.choixPossibles)
     self.assertFalse(encore)
     self.assertTrue(util.sontEgaux(joueur.ressources, util.rVide()))
Exemple #2
0
    def test_AsAbattre(self):
        #1 ère fois
        p = Partie()
        p.initialiser(3, [])
        joueur = p.joueurs[0]
        joueur2 = p.joueurs[1]
        joueur3 = p.joueurs[2]
        joueur.ressources = util.rVide()
        joueur2.ressources = util.rVide()
        for CAS in p.plateau["actionsSpeciales"]:
            for l in CAS.listeActionSpeciale:
                if l.uid == 'b5':
                    carte = l
        p.sujet = carte
        (choixPossibles, sujet, encore, message) = carte.jouer()
        #pas encore joué
        self.assertTrue(util.sontEgaux(joueur.ressources, {'b': 0}))
        #5 forets au début
        self.assertTrue(len(choixPossibles) == 5)
        caseAbattue = p.choixPossibles[0]
        (choixPossibles, sujet, encore,
         message) = sujet.effet(0, p.choixPossibles)
        self.assertTrue(util.sontEgaux(joueur.ressources, {'b': 2}))

        #pas de Pn pour racheter
        self.assertFalse(joueur.jePeuxFaireActionSpeciale(carte))
        joueur.ressources['n'] = 2
        #toujours pas car je l'ai déja prise
        self.assertFalse(joueur.jePeuxFaireActionSpeciale(carte))
        p.joueurSuivant()
        #joueur2 sans pn
        self.assertFalse(joueur2.jePeuxFaireActionSpeciale(carte))
        joueur2.ressources['n'] = 2
        self.assertTrue(joueur2.jePeuxFaireActionSpeciale(carte))
        #si je me vire toutes mes foret je ne peux plus
        for tuile in joueur2.courDeFerme.tousLes('foret'):
            joueur2.courDeFerme.etat[tuile].type = "vide"
        self.assertFalse(joueur2.jePeuxFaireActionSpeciale(carte))
        #je remets la derniere foret
        joueur2.courDeFerme.etat[tuile].type = "foret"
        #je mets la loge devant moi
        #je me prends un cheval
        joueur2.ressources['h'] = 1
        joueur2.cartesDevantSoi["M6"] = AmenagementMajeur(
            p, 'M6', **deck['majeurs']['M6'])

        self.assertTrue(joueur2.jePeuxFaireActionSpeciale(carte))
        (choixPossibles, sujet, encore,
         message) = sujet.effet(0, p.choixPossibles)
        self.assertTrue(util.sontEgaux(joueur2.ressources, {'b': 4, 'h': 1}))
        p.joueurSuivant()
        joueur3.ressources['n'] = 10
        #impossible de racheter
        self.assertFalse(joueur3.jePeuxFaireActionSpeciale(carte))
        p.finDuTour()
        #maintenant je peux
        self.assertTrue(joueur3.jePeuxFaireActionSpeciale(carte))
Exemple #3
0
    def test_ConstructionOuSpectacle(self):

        #je ne la vois qu'a 5
        for njoueurs in range(1, 5):
            p = Partie()
            p.initialiser(njoueurs, [])
            joueur = p.joueurs[0]
            joueur.ressources = util.rVide()
            carte = p.plateau["cases"][1]
            self.assertFalse(carte.uid == "a34")
        p = Partie()
        p.initialiser(5, [])
        joueur = p.joueurs[0]
        joueur.ressources = util.rVide()
        carte = p.plateau["cases"][1]
        self.assertTrue(carte.uid == "a34")

        joueur.possibilites()
        carteEstDispo = False
        for c in p.choixPossibles:
            if c.uid == carte.uid:
                carteEstDispo = True
        #on peut toujours faire spectacle
        self.assertTrue(carteEstDispo)

        #je ne peux faire que spectacle
        p.sujet = carte
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(len(choixPossibles) == 1)
        self.assertTrue(choixPossibles[0] == "u6")
        joueur.ressources['b'] = 5
        joueur.ressources['r'] = 2
        ferme = joueur.courDeFerme
        ferme.etat["A1"].type = "foret"
        ferme.etat["B2"].type = "tourbe"
        ferme.etat["C2"].type = "foret"
        (choixPossibles, sujet, encore, message) = carte.jouer()
        #on n'a pas de place pour la maison
        self.assertTrue(len(choixPossibles) == 1)
        self.assertTrue(choixPossibles[0] == "u6")
        #par contre si je fais de la place
        ferme.etat["A1"].type = "vide"
        ferme.etat["B2"].type = "vide"
        ferme.etat["C2"].type = "vide"
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(len(choixPossibles) == 4)  #spectacle + 3 possibilites
        sujet = carte
        caseChoisie = choixPossibles[1][1]
        (choixPossibles, sujet, encore,
         message) = sujet.effet(1, choixPossibles)
        self.assertFalse(encore)
        self.assertTrue(choixPossibles == -1)
        self.assertTrue(util.sontEgaux(joueur.ressources, util.rVide()))
        self.assertFalse(carte.libre)
Exemple #4
0
    def test_AsCouperBruler(self):
        #1 ère fois
        p = Partie()
        p.initialiser(3, [])
        joueur = p.joueurs[0]
        joueur2 = p.joueurs[1]
        joueur3 = p.joueurs[2]
        joueur.ressources = util.rVide()
        joueur2.ressources = util.rVide()
        for CAS in p.plateau["actionsSpeciales"]:
            for l in CAS.listeActionSpeciale:
                if l.uid == 'b6':
                    carte = l
        p.sujet = carte
        (choixPossibles, sujet, encore, message) = carte.jouer()
        #pas encore joué
        self.assertTrue(joueur.courDeFerme.compter('champ') == 0)
        #5 forets au début
        self.assertTrue(len(choixPossibles) == 5)

        (choixPossibles, sujet, encore,
         message) = sujet.effet(0, p.choixPossibles)
        self.assertTrue(joueur.courDeFerme.compter('champ') == 1)
        self.assertTrue(joueur.courDeFerme.compter('foret') == 4)
        #pas de Pn pour racheter
        self.assertFalse(joueur.jePeuxFaireActionSpeciale(carte))
        joueur.ressources['n'] = 2
        #toujours pas car je l'ai déja prise
        self.assertFalse(joueur.jePeuxFaireActionSpeciale(carte))
        p.joueurSuivant()
        #joueur2 sans pn
        self.assertFalse(joueur2.jePeuxFaireActionSpeciale(carte))
        joueur2.ressources['n'] = 2
        self.assertTrue(joueur2.jePeuxFaireActionSpeciale(carte))

        #si je me vire toutes mes forets je ne peux plus
        for tuile in joueur2.courDeFerme.tousLes('foret'):
            joueur2.courDeFerme.etat[tuile].type = "vide"
        self.assertFalse(joueur2.jePeuxFaireActionSpeciale(carte))
        #je remets une foret en A5
        joueur2.courDeFerme.etat['A5'].type = "foret"
        #je mets un champs en C5
        joueur2.courDeFerme.etat['C5'].type = "champ"
        (choixPossibles, sujet, encore, message) = carte.jouer()
        #les champs ne se touchent pas
        self.assertFalse(joueur2.jePeuxFaireActionSpeciale(carte))
        joueur2.courDeFerme.etat['B5'].type = "champ"
        #il faut remettre à jour
        (choixPossibles, sujet, encore, message) = carte.jouer()

        self.assertTrue(joueur2.jePeuxFaireActionSpeciale(carte))
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(choixPossibles == ["A5"])
Exemple #5
0
    def jouer(self):
        encore = True  # on va encore pouvoir jouer après
        #on regarde si la carte a une fonction possibilite
        if not type(self._possibilites) == dict:
            choixPossibles = self._possibilites(self.partie, self)
            self.partie.choixPossibles = choixPossibles
            self.sujet = self
            return (choixPossibles, self, encore, "")
        else:
            self.partie.messagesPrincipaux.append("{} {} {}".format(
                self.partie.joueurQuiJoue().nom, self.phraseJouer, self.uid))
            self.partie.joueurQuiJoue().mettreAJourLesRessources(self.cout)
            self._cout = util.rVide()
            if self.sansPion == True:
                if isinstance(self, ActionSpeciale):
                    #ici passe foire du travail

                    self.carteQuiMePorte.changerEtat(self.partie.quiJoue)
                    self.partie.joueurSuivant()
                    self.partie.initChoix()
                    return (-1, self, encore, "")
                else:
                    print('vous pouvez jouer encore')
                    self.partie.initChoix()
                    return (-1, self, encore, "")

            else:
                personnage = self.partie.joueurQuiJoue().personnages.pop()
                self.partie.joueurQuiJoue().personnagesPlaces.append(
                    personnage)
                self.mettrePersonnage(personnage)
                encore = False
            return (-1, self, encore, "")
Exemple #6
0
 def test_BoisFeu(self):
     r1 = util.rVide()
     r1['b'] = 1
     r2 = util.rVide()
     r2['f'] = 1
     r3 = util.rVide()
     r3['b'] = 3
     r3['f'] = 3
     r4 = util.rVide()
     r4['f'] = 6
     result, raison = util.jouable(r1, r1)
     self.assertTrue(result)
     result, raison = util.jouable(r1, r2)
     self.assertTrue(result)
     result, raison = util.jouable(r2, r1)
     self.assertFalse(result)
     result, raison = util.jouable(r3, r4)
     self.assertTrue(result)
     result, raison = util.jouable(r4, r3)
     self.assertFalse(result)
     self.assertTrue(util.jouable({'b': 1, 'f': 1}, {'b': 1})[0])
     self.assertFalse(util.jouable({'b': 1}, {'b': 1, 'f': 1})[0])
Exemple #7
0
    def test_AsFoireDuTravail(self):
        p = Partie()
        p.initialiser(3, [])
        joueur = p.joueurs[0]
        joueur.ressources = util.rVide()
        for CAS in p.plateau["actionsSpeciales"]:
            for l in CAS.listeActionSpeciale:
                if l.uid == 'b3':
                    carte = l
        #possibilitesVides
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(len(choixPossibles) == 0)
        #je me mets un mineur en main et les ressources pour l'acheter
        joueur.cartesEnMain.append(
            AmenagementMineur(p, 'm0', **deck['mineurs']['m0']))
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(len(choixPossibles) == 0)
        joueur.ressources['a'] = 1
        (choixPossibles, sujet, encore, message) = carte.jouer()
        #je peux pas payer le feu
        self.assertTrue(len(choixPossibles) == 0)

        joueur.ressources['f'] = 1
        (choixPossibles, sujet, encore, message) = carte.jouer()
        #maintenant ok
        self.assertTrue(len(choixPossibles) == 1)
        joueur.ressources['f'] = 0
        joueur.ressources['b'] = 1
        #on teste avec 1 bois
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(len(choixPossibles) == 1)

        #on la joue
        (choixPossibles, sujet, encore,
         message) = carte.effet(0, p.choixPossibles)
        self.assertFalse(encore)
        self.assertTrue(util.sontEgaux(joueur.ressources, util.rVide()))
        self.assertTrue(carte.carteQuiMePorte.etat == joueur.id)
Exemple #8
0
def planConstructionDePieceEtOuEtable(partie,planStr,possibilites,carte):
    #par ex C2:p,C3:p,C4:e,A1:e
    joueur=partie.joueurQuiJoue()
    ferme=joueur.courDeFerme                                  
    planCorrect=True
    casesMaison=[]
    casesEtables=[]
    cout=util.rVide()
    typeMaison=ferme.enQuoiEstLaMaison()
    msg=""
    for tup in planStr.split(','):
        try:
            case=tup.split(':')[0]
            type=tup.split(':')[1]
        except:
Exemple #9
0
 def test_RoseauPnOuPierrePn(self):
     p = Partie()
     p.initialiser(3, [])
     joueur = p.joueurs[0]
     joueur.ressources = util.rVide()
     rPnOuPPn = CarteAction(p,
                            "a26",
                            possibilites=fct.possibiliteRoseauPnOuPierrePn,
                            effet=fct.roseauPnOuPierrePn,
                            visible=True)
     p.sujet = rPnOuPPn
     (choixPossibles, sujet, encore, message) = rPnOuPPn.jouer()
     (choixPossibles, sujet, encore,
      message) = sujet.effet(1, p.choixPossibles)
     self.assertTrue(util.sontEgaux(joueur.ressources, {'n': 1, 'r': 1}))
Exemple #10
0
    def test_Labourage(self):
        p = Partie()
        p.initialiser(1, [])
        joueur = p.joueurs[0]
        joueur.ressources = util.rVide()

        carte = p.plateau["cases"][
            10]  #bof mais a priori c'est elle         #1er labour
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(len(choixPossibles) == 5)  # 5 endroits vides au début
        self.assertTrue(joueur.courDeFerme.compter('champ') == 0)
        (choixPossibles, sujet, encore,
         message) = sujet.effet(0, choixPossibles)
        self.assertTrue(joueur.courDeFerme.compter('champ') == 1)
        self.assertFalse(encore)
Exemple #11
0
def planSemailleEtOuCuisson(partie,planStr,possibilites,carte):
    #par ex C2:c,C3:l,c:4
    joueur=partie.joueurQuiJoue()
    ferme=joueur.courDeFerme                                  
    planCorrect=True
    cout=util.rVide()
    validTup=[]
    cerealesACuire=0
    msg=""
    cout={'b':0,'c':0,'l':0} #on ne peut semer que ces 3 trucs
    cuissonPassee=False
    for tup in planStr.split(','):
        try:
            case=tup.split(':')[0]
            type=tup.split(':')[1]
        except:
Exemple #12
0
def constructionOuSpectacle(partie,choix,possibilites,carte):
    joueur=partie.joueurQuiJoue()

    if possibilites[choix]=="Spectacle":
        cout=carte.cout.copy()
        carte._cout=util.rVide() #vidage de la carte???
        TTTT
        partie.messagesPrincipaux.append("{} va sur Spectacle".format(partie.joueurQuiJoue().nom))
    else:
        ferme=joueur.courDeFerme
        cout=joueur.prixDeLaPiece()   
        typeMaison=ferme.enQuoiEstLaMaison(False)
        case=possibilites[choix][1]
        ferme.etat[case].type=typeMaison  
        partie.messagesPrincipaux.append("{} construit 1 pièce en {}".format(partie.joueurQuiJoue().nom,case))

    joueur.mettreAJourLesRessources(cout)    
    personnage=partie.joueurQuiJoue().personnages.pop()
    partie.joueurQuiJoue().personnagesPlaces.append(personnage)                  
    carte.mettrePersonnage(personnage)
    return (-1,carte,False,"")
Exemple #13
0
    def test_Betail(self):
        p = Partie()
        p.initialiser(5, [])
        joueur = p.joueurs[0]
        joueur.ressources = util.rVide()
        betail = CarteAction(p,
                             "a38",
                             visible=True,
                             possibilites=fct.possibiliteBetail,
                             effet=fct.betail)
        p.sujet = betail
        (choixPossibles, sujet, encore, message) = betail.jouer()
        self.assertTrue(len(choixPossibles) == 2)
        p.joueurs[0].ressources['n'] = 1
        (choixPossibles, sujet, encore, message) = betail.jouer()
        self.assertTrue(len(choixPossibles) == 3)
        #test de la carte
        joueur.ressources['n'] = 1
        joueur.ressources['m'] = 0
        joueur.ressources['s'] = 0
        joueur.ressources['b'] = 0

        #test mouton pn
        (choixPossibles, sujet, encore,
         message) = sujet.effet(0, p.choixPossibles)
        self.assertTrue(util.sontEgaux(joueur.ressources, {'n': 2, 'm': 1}))

        #test beuf contre pn
        (choixPossibles, sujet, encore,
         message) = sujet.effet(2, p.choixPossibles)
        self.assertTrue(
            util.sontEgaux(joueur.ressources, {
                'n': 1,
                'm': 1,
                'v': 1
            }))
Exemple #14
0
 def __init__(self, type):
     self.type = type
     self.ressources = util.rVide()
     self.occupants = []
Exemple #15
0
    def test_ConstructionDePieceEtOuEtable(self):
        p = Partie()
        p.initialiser(1, [])
        joueur = p.joueurs[0]
        joueur.ressources = util.rVide()
        carte = p.plateau["cases"][7]

        joueur.possibilites()
        carteEstDispo = False
        for c in p.choixPossibles:
            if c.uid == carte.uid:
                carteEstDispo = True
        self.assertFalse(carteEstDispo)
        #si on se mets 2 bois alors elle doit être dispo
        joueur.ressources['b'] = 2
        joueur.possibilites()
        carteEstDispo = False
        for c in p.choixPossibles:
            if c.uid == carte.uid:
                carteEstDispo = True
        self.assertTrue(carteEstDispo)
        #on va faire joujou avec le plan de construction
        joueur.ressources[
            'b'] = 18  #on veut aller jusqu'a 4 étables et 2 pièces
        joueur.ressources['r'] = 4
        ferme = joueur.courDeFerme
        ferme.etat["A1"].type = "vide"
        ferme.etat["A2"].type = "vide"
        ferme.etat["B2"].type = "tourbe"
        ferme.etat["C2"].type = "vide"
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(p.choixPossibles == choixPossibles == 'inputtext')
        inputTextNonValables = [
            "toto", "A1:f", "B1:E", "B1:P", "B2:P", "C2:P,C3:P,C4:P",
            "C2:P,C4:P", "A1:E,A2:E,C4:E,C2:E,C3:E"
        ]

        for it in inputTextNonValables:
            (choixPossibles, sujet, encore,
             message) = sujet.effet(it, p.choixPossibles)
            self.assertTrue(choixPossibles == 'inputtext')
            self.assertTrue(encore)
            print(message)
        inputTextValablesEtRessources = [
            ("A1:P", {
                'b': 13,
                'r': 2
            }),  #1 pièce
            ("A1:P,C2:P", {
                'b': 8,
                'r': 0
            }),  #2 pièce
            ("A1:P,C2:E", {
                'b': 11,
                'r': 2
            }),  #1 pièce, 1 etable
        ]
        for it, reste in inputTextValablesEtRessources:
            #je me remets les ressources
            joueur.ressources['b'] = 18
            joueur.ressources['r'] = 4
            #et la ferme
            ferme.etat["A1"].type = "vide"
            ferme.etat["A2"].type = "vide"
            ferme.etat["B2"].type = "tourbe"
            ferme.etat["C2"].type = "vide"

            (choixPossibles, sujet, encore,
             message) = sujet.effet(it, p.choixPossibles)
            self.assertTrue(choixPossibles == -1)
            self.assertFalse(encore)
            self.assertTrue(util.sontEgaux(joueur.ressources, reste))
            #on remets le personnage artificiellement
            perso = joueur.personnagesPlaces.pop()
            joueur.personnages.append(perso)
            ferme.mettrePersonnage(perso, perso.localisationInit)
Exemple #16
0
    def test_Majeurs(self):
        #visibilité
        p = Partie()
        p.initialiser(3, [])
        joueur = p.joueurs[0]
        joueur.ressources = util.rVide()

        carte = p.plateau["cases"][17]  #bof mais a priori c'est elle
        (choixPossibles, sujet, encore, message) = carte.jouer()
        #pas de ressources pas de possibilites
        self.assertTrue(len(choixPossibles) == 0)
        #on teste la condition possibilites non vide
        self.assertFalse(joueur.jeRemplisLesConditions(carte.condition))
        #avec 2 argiles je peux faire seulement le foyer à 2
        joueur.ressources['a'] = 2
        self.assertTrue(joueur.jeRemplisLesConditions(carte.condition))
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertTrue(len(choixPossibles) == 1)
        self.assertTrue(choixPossibles[0].uid == "M0")
        sujet = carte
        #je le fais
        (choixPossibles, sujet, encore,
         message) = sujet.effet(0, p.choixPossibles)
        #peux plus rejouer
        self.assertFalse(encore)
        #je n'ai plus de ressource
        self.assertTrue(util.sontEgaux(joueur.ressources, {}))
        #j'ai bien le majeur joué devant moi
        self.assertTrue(joueur.aiJeJoue('M0'))
        #si je pouvais re jouer alors je ne pourrais pas activer le foyer
        joueur.possibilites()
        activable = False
        for pos in p.choixPossibles:
            if (pos.uid) == "M0":
                activable = True
        self.assertFalse(activable)
        #mais avec un mouton si!
        joueur.ressources['m'] = 1
        joueur.possibilites()
        activable = False
        for pos in p.choixPossibles:
            if (pos.uid) == "M0":
                activable = True
                sujet = pos
        self.assertTrue(activable)
        #que puis-je activer
        cuissonPossibles = sujet.possibilites()
        self.assertTrue(cuissonPossibles[0].uid == "um")  #cuire un mouton
        (choixPossibles, sujet, encore,
         message) = sujet.effet(0, cuissonPossibles)
        #on peut encore jouer
        self.assertTrue(encore)
        #on a gagné 2 pn et perdu le mouton
        self.assertTrue(util.sontEgaux(joueur.ressources, {'n': 2}))
        #on passe au joueur suivant
        p.joueurSuivant()
        joueur = p.joueurs[1]
        joueur.possibilites()
        joueur.ressources = util.rVide()
        joueur.ressources['a'] = 2
        (choixPossibles, sujet, encore, message) = carte.jouer()
        self.assertFalse(joueur.jeRemplisLesConditions(carte.condition))
        #par contre si je me mets 1 argile en plus je peux
        joueur.ressources['a'] = 3
        self.assertTrue(joueur.jeRemplisLesConditions(carte.condition))
        #si je me mets une pierre en plus
        joueur.ressources['p'] = 1
        #je peux jouer 4 trucs (foyer à 3, four a tourbe, four en brique, et abatoir à chevaux 1
        joueur.possibilites()  #on réinitialise
        (choixPossibles, sujet, encore, message) = carte.jouer()
        uidPossibles = ["M1", "M2", "M4", "M14"]
        for am in choixPossibles:
            uidPossibles.remove(am.uid)
        self.assertTrue(len(uidPossibles) == 0)
Exemple #17
0
    def test_SemailleCuisson(self):
        #pas de céréale ni cuisson
        p = Partie()
        p.initialiser(1, [])
        joueur = p.joueurs[0]
        joueur.ressources = util.rVide()
        for ind, c in p.plateau["cases"].items():
            if c.uid == "a13":
                #au debut la case est pas dispo
                self.assertFalse(c.visible)
                #mais bon on la rend visible
                c.visible = True
                carte = c
                break
        #la carte à beau être visible, si je peux rien en faire
        #il ne faut pas qu'elle apparaisse
        joueur.possibilites()
        carteEstDispo = False
        for c in p.choixPossibles:
            if c.uid == carte.uid:
                carteEstDispo = True
        self.assertFalse(carteEstDispo)

        #si j'ai un champ
        ferme = joueur.courDeFerme
        ferme.etat["A1"].type = "champ"
        #et un four non plus (la je mets tous les fours artificiellement
        for uid, v in p.plateau["majeurs"].items():
            if 'cuissonPain' in v.option.keys():
                joueur.cartesDevantSoi[uid] = v

        joueur.possibilites()
        carteEstDispo = False
        for c in p.choixPossibles:
            if c.uid == carte.uid:
                carteEstDispo = True
        self.assertFalse(carteEstDispo)

        #mais si je prends des céréales alors là je peux!!
        joueur.ressources['c'] = 2
        joueur.possibilites()
        carteEstDispo = False
        for c in p.choixPossibles:
            if c.uid == carte.uid:
                carteEstDispo = True
        self.assertTrue(carteEstDispo)
        (choixPossibles, sujet, encore, message) = carte.jouer()

        self.assertTrue(p.choixPossibles == choixPossibles == 'inputtext')
        ferme.etat["A1"].type = "champ"
        ferme.etat["A2"].type = "champ"
        ferme.etat["A3"].type = "champ"
        ferme.etat["A3"].ressources['c'] = 1
        ferme.etat["B3"].type = "tourbe"
        inputTextNonValables = [
            "toto", "A1:f", "A1:l", "B3:c", "A1:c,c:2", "A3:c"
        ]

        for it in inputTextNonValables:
            (choixPossibles, sujet, encore,
             message) = sujet.effet(it, p.choixPossibles)
            self.assertTrue(choixPossibles == 'inputtext')
            self.assertTrue(encore)
            print(message)

        joueur.ressources['c'] = 5
        joueur.ressources['l'] = 5

        inputTextValablesEtRessources = [
            ("A1:c", {
                'c': 4,
                'l': 5
            }, {
                'A1': '3c'
            }),
            ("A1:l,c:2", {
                'c': 3,
                'l': 4,
                'n': 9
            }, {
                'A1': '2l'
            }),
            ("A1:c,A2:l,c:4", {
                'c': 0,
                'l': 4,
                'n': 16
            }, {
                'A1': '3c',
                'A2': '2l'
            }),
        ]
        for it, reste, etatChamp in inputTextValablesEtRessources:
            #je me remets les ressources
            joueur.ressources['c'] = 5
            joueur.ressources['l'] = 5
            joueur.ressources['n'] = 0
            #et la ferme
            ferme.etat["A1"].type = "champ"
            ferme.etat["A1"].ressources = util.rVide()
            ferme.etat["A2"].type = "champ"
            ferme.etat["A2"].ressources = util.rVide()
            ferme.etat["A3"].type = "champ"
            ferme.etat["A3"].ressources = util.rVide()
            ferme.etat["B3"].type = "tourbe"
            ferme.etat["B3"].ressources = util.rVide()

            (choixPossibles, sujet, encore,
             message) = sujet.effet(it, p.choixPossibles)
            self.assertTrue(choixPossibles == -1)
            self.assertFalse(encore)
            self.assertTrue(util.sontEgaux(joueur.ressources, reste))
            #on remets le personnage artificiellement
            perso = joueur.personnagesPlaces.pop()
            joueur.personnages.append(perso)
            ferme.mettrePersonnage(perso, perso.localisationInit)
            for k, v in etatChamp.items():
                nb = int(v[0])
                type = v[1]
                self.assertTrue(ferme.etat[k].ressources[type] == nb)

        #cuisson seule
        #semaille et cuisson
        #test plan dispo ressource etc...
        #test sans cuisson
        pass