Example #1
0
    async def get_hit(self, bullet_type=None):
        if not self.root:
            return

        self.hp -= 1
        if self.hp < 0:
            # Score gain flies off.
            scale = math.sqrt(self.score_gain) / 25.0
            base.add_score(self.score_gain)
            text = OnscreenText(str(self.score_gain),
                                font=base.gui.font,
                                parent=base.render,
                                scale=scale,
                                fg=(1, 1, 1, 1))
            text.set_light_off(True)
            text.set_z(10)
            text.set_pos(self.root.get_pos())
            text.set_depth_test(False)
            dir = base.player.root.get_x() - self.root.get_x()
            if dir == 0:
                dir = choice((-1, 1))
            if dir < 5:
                dir *= 5 / abs(dir)
            text.posInterval(
                1.0,
                self.root.get_pos() +
                (-dir, base.player.speed.y * 0.6, 0)).start()
            text.scaleInterval(1.0, scale * 2).start()
            text.set_transparency(1)
            Sequence(Wait(0.25),
                     text.colorScaleInterval(0.75, (1, 0, 0, 0))).start()
            self.die()
        else:
            self.root.set_color_scale((1, 0, 0, 1))
            await WaitInterval(0.1)
            if self.root:
                self.root.clear_color_scale()
Example #2
0
class InterfaceConnexion():
    def __init__(self):
        #utilitaires
        self.analyse = AnalyseDTOJoueur()
        self.labels = []
        self.drs = []
        self.sequences = []
        self.tankModels = []

        # champs de textes
        #le frame du haut
        self.ajouterTopFrame()

        # Background image
        # on a commenté le background, pcq ca cachait les scènes pour les deux chars
        # self.background = OnscreenImage(parent = render2d , image = '../asset/Menu/menuLogin.png', )

        #On dit à la caméra que le dernier modèle doit s'afficher toujours en arrière
        self.baseSort = base.cam.node().getDisplayRegion(0).getSort()
        base.cam.node().getDisplayRegion(0).setSort(20)

        self.controlTextScale = 0.10
        self.controlBorderWidth = (0.005, 0.005)

        #Initialisation de l'effet de transition
        curtain = loader.loadTexture("../asset/Menu/loading.jpg")

        self.transition = Transitions(loader)
        self.transition.setFadeColor(0, 0, 0)
        self.transition.setFadeModel(curtain)

        self.sound = loader.loadSfx("../asset/Menu/demarrage.mp3")

        self.testerConnexion()

    def connexion(self, joueur):
        ordre = joueur + 1

        # vérifier si le joueur n'est pas déjà connecté
        if (joueur == 0 and DTO.joueur1 != None) or (joueur == 1
                                                     and DTO.joueur2 != None):
            self.labelMessage.setText(
                "ATTENTION! Joueur %d est DÉJÀ connecté!" % (ordre))
            return

        if joueur == 0:
            user = self.entryUser1.get()
            pw = self.entryMDP1.get()
        else:
            user = self.entryUser2.get()
            pw = self.entryMDP2.get()

        # vérifier que le joueur ne se connecte pas deux fois
        if (DTO.joueur1 != None
                and DTO.joueur1.nom == user) or (DTO.joueur2 != None
                                                 and DTO.joueur2.nom == user):
            self.labelMessage.setText(
                "ATTENTION! L'usager %s est DÉJÀ connecté!" % (user))
            return

        # faire une connexion à la bd
        self.dao = DAO_Oracle()
        connecte = self.dao.validerUsager(user, pw, joueur)

        # ajuster le message de l'état de connexion des joueurs
        if connecte:
            self.labelMessage.setText("Joueur %d est connecté!" % (ordre))
            if joueur == 0:
                self.ajouterChar(joueur, DTO.joueur1.couleur)
            elif joueur == 1:
                self.ajouterChar(joueur, DTO.joueur2.couleur)
            self.afficherMessagesSanitizer(joueur)

            if DTO.joueur1 != None and DTO.joueur2 != None:
                self.labelMessage.setText("Les deux joueurs sont connectés!")
                self.ajouterMiddleFrame()
                self.ajouterBottomFrame()
                if len(DTO.joueurs) == 0:
                    DTO.joueurs.append(DTO.joueur1)
                    DTO.joueurs.append(DTO.joueur2)
            indexJoueur = joueur
        else:
            self.labelMessage.setText("Erreur de login pour Joueur %d " %
                                      (ordre))

    def ajouterTopFrame(self):
        #le frame du top
        self.frameTop = DirectFrame(text="")
        self.frameTop.reparentTo(base.a2dTopLeft)

        #les 4 labels de joueurs et mot de passe
        labelJoueur1 = OnscreenText(text='Joueur 1',
                                    pos=(0.25, -0.10),
                                    scale=0.07,
                                    bg=(255, 255, 255, 1),
                                    frame=(0, 0, 0, 1))
        labelMotDePasse1 = OnscreenText(text='Mot de passe 1',
                                        pos=(0.25, -0.30),
                                        scale=0.07,
                                        bg=(255, 255, 255, 1),
                                        frame=(0, 0, 0, 1))
        labelJoueur2 = OnscreenText(text='Joueur 2',
                                    pos=(2.00, -0.10),
                                    scale=0.07,
                                    bg=(255, 255, 255, 1),
                                    frame=(0, 0, 0, 1))
        labelMotDePasse2 = OnscreenText(text='Mot de passe 2',
                                        pos=(2.00, -0.30),
                                        scale=0.07,
                                        bg=(255, 255, 255, 1),
                                        frame=(0, 0, 0, 1))

        labelJoueur1.reparentTo(self.frameTop)
        labelMotDePasse1.reparentTo(self.frameTop)
        labelJoueur2.reparentTo(self.frameTop)
        labelMotDePasse2.reparentTo(self.frameTop)

        #les quatre boîtes de saisie de texte
        #pour le joueur 1
        self.entryUser1 = DirectEntry(text="",
                                      scale=.07,
                                      pos=(0.65, 0.0, -0.10),
                                      numLines=1,
                                      focus=1)
        self.entryUser1.reparentTo(self.frameTop)

        self.entryMDP1 = DirectEntry(text="",
                                     scale=.07,
                                     pos=(0.65, 0.0, -0.3),
                                     command=lambda x=1: self.connexion(0),
                                     numLines=1,
                                     focus=1,
                                     obscured=True)
        self.entryMDP1.reparentTo(self.frameTop)

        #pour le joueur 2
        self.entryUser2 = DirectEntry(text="",
                                      scale=.07,
                                      pos=(2.4, 0.0, -0.10),
                                      numLines=1,
                                      focus=1)
        self.entryUser2.reparentTo(self.frameTop)

        self.entryMDP2 = DirectEntry(text="",
                                     scale=.07,
                                     pos=(2.4, 0.0, -0.3),
                                     command=lambda x=1: self.connexion(1),
                                     numLines=1,
                                     focus=1,
                                     obscured=True)
        self.entryMDP2.reparentTo(self.frameTop)

        self.frameConnecte = DirectFrame(text="")
        self.frameConnecte.reparentTo(self.frameTop)

        #label pour le message
        height = 0.10
        self.frameMessage = DirectFrame(text="",
                                        frameColor=(255, 255, 255, 0.23),
                                        frameSize=(-1.2, 1.2, -height, height))
        self.frameMessage.setPos(0, 0, 0.55)
        self.labelMessage = OnscreenText(text='Aucun message',
                                         pos=(0, 0),
                                         scale=0.07,
                                         align=TextNode.ACenter,
                                         mayChange=True)
        self.labelMessage.reparentTo(self.frameMessage)

    def ajouterChar(self, ordre, couleur):
        # https://www.panda3d.org/manual/index.php/File:DisplayRegion_1.jpg
        if ordre == 0:
            dr2 = base.win.makeDisplayRegion(0, 0.30, 0, 0.5)
        elif ordre == 1:
            dr2 = base.win.makeDisplayRegion(0.70, 1, 0, 0.5)

        dr2.setClearColor(VBase4(0.41, 0.41, 0.41, 0))
        dr2.setClearColorActive(True)
        dr2.setClearDepthActive(True)

        render2 = NodePath('render')
        cam2 = render2.attachNewNode(Camera('cam2'))
        dr2.setCamera(cam2)

        cam2.setPos(-22.5, -387.3, 58.1999)

        env = loader.loadModel("box.egg")
        env.setTransparency(TransparencyAttrib.MAlpha)
        env.setDepthTest(False)
        env.setDepthWrite(False)
        env.reparentTo(render2)

        # ajouter le tank
        size = 50
        tank = Actor("../asset/Tank/tank")
        tank.setScale(size, size, size)
        tank.setColorScale(couleur[0], couleur[1], couleur[2], 1)
        if ordre == 0:
            tank.setHpr(270.0, 0.0, 0.0)
        elif ordre == 1:
            tank.setHpr(90.0, 0.0, 0.0)
        tank.reparentTo(env)

        #faire avancer le tank
        if ordre == 0:
            intervalAvancer = tank.posInterval(2,
                                               Point3(-10, 4, 8),
                                               startPos=Point3(-200, 4, 8))
        elif ordre == 1:
            intervalAvancer = tank.posInterval(2,
                                               Point3(-10, 4, 8),
                                               startPos=Point3(180, 4, 8))

        # faire tourner le tank (interval)
        duree = 3.0
        if ordre == 0:
            intervalTourner = tank.hprInterval(duree, Vec3(-90, 0, 0))
        else:
            intervalTourner = tank.hprInterval(duree, Vec3(450, 0, 0))

        sequenceAvancer = Sequence(intervalAvancer)
        sequenceTourner = Sequence(intervalTourner)

        sequence = Sequence(sequenceAvancer, Func(sequenceTourner.loop))
        sequence.start()

        self.drs.append(dr2)
        self.sequences.append(sequenceTourner)
        self.tankModels.append([ordre, tank])

    def ajouterMiddleFrame(self):
        height = 0.15
        self.frameMiddle = DirectFrame(frameColor=(255, 255, 255, 0.23),
                                       frameSize=(-1.2, 1.2, -height, height))
        self.frameMiddle.setPos(0, 0, 0.25)

        #calculer les noms des deux joueurs

        joueur1 = self.analyse.calculerNom(DTO.joueur1)
        joueur2 = self.analyse.calculerNom(DTO.joueur2)

        dist = 0.075
        labelVS1 = OnscreenText(text=joueur1,
                                pos=(0, 0.05),
                                scale=0.07,
                                align=TextNode.ACenter,
                                mayChange=True)
        labelVS1.reparentTo(self.frameMiddle)
        labelVS = OnscreenText(text='VS',
                               pos=(0, 0.05 - dist),
                               scale=0.07,
                               align=TextNode.ACenter,
                               mayChange=True)
        labelVS.reparentTo(self.frameMiddle)
        labelVS2 = OnscreenText(text=joueur2,
                                pos=(0, 0.05 - dist * 2),
                                scale=0.07,
                                align=TextNode.ACenter,
                                mayChange=True)
        labelVS2.reparentTo(self.frameMiddle)

    def combattre(self):

        # freezer le bouton Combattre
        scaleBouton = self.b.getScale().getX()
        coordonnees = []
        tankH1 = self.tankModels[0][1].getH()
        tankH2 = self.tankModels[1][1].getH()
        coordonnees.append(tankH1)
        coordonnees.append(tankH2)

        for sequence in self.sequences:
            sequence.finish()

        cpt = 0
        sequenceTourner = None

        dureeTourner = 3.0
        for listTank in self.tankModels:

            ordre = listTank[0]
            tank = listTank[1]

            tank.setH(coordonnees[cpt])

            if ordre == 0:
                intervalTourner = tank.hprInterval(dureeTourner,
                                                   Vec3(-90, 0, 0))
            elif ordre == 1:
                intervalTourner = tank.hprInterval(dureeTourner,
                                                   Vec3(450, 0, 0))

            sequenceTourner = Sequence(intervalTourner)
            sequenceTourner.start()
            cpt = cpt + 1

        self.b.setScale(scaleBouton)

        sequence = Sequence(Func(lambda: sequenceTourner.start()),
                            Wait(dureeTourner),
                            Func(lambda: self.ajouterTextVS()), Wait(5.5),
                            Func(lambda: self.chargerJeu()))
        sequence.start()

    def analyserPositionChars(self):
        arrete = False
        arrete = self.tankModels[0][1].getH(
        ) == -90 and self.tankModels[1][1].getH() == 450
        return arrete

    def ajouterTextVS(self):
        message = DTO.joueur1.nom + " VS " + DTO.joueur2.nom
        self.labelVS = OnscreenText(text=message,
                                    shadow=(0, 0, 0, 1),
                                    pos=(0, 0),
                                    frame=(0, 0, 0, 1),
                                    scale=0.14,
                                    align=TextNode.ACenter,
                                    mayChange=False,
                                    bg=(0, 255, 0, 0.5),
                                    fg=(255, 255, 255, 1))

        #faire l'animation du texte
        scaleDebut = 1.0
        scaleFin = 2.0
        duree = 2.0

        # #les deux intervals opposés (grandir vs rapetir)
        intervalRapetir = self.labelVS.scaleInterval(
            duree, Vec3(scaleDebut, scaleDebut, scaleDebut))
        intervalGrossir = self.labelVS.scaleInterval(
            duree, Vec3(scaleFin, scaleFin, scaleFin))

        # # # la loop qui dure toujours
        sequence = Sequence(intervalGrossir, intervalRapetir)
        sequence.loop()

    def afficherMessagesSanitizer(self, joueur):
        if joueur == 0:
            messagesErreurs = DTO.messagesErreurs1
        elif joueur == 1:
            messagesErreurs = DTO.messagesErreurs2
        for i in range(len(messagesErreurs)):
            height = 0.15
            width = 0.4
            textSize = 0.05

            if joueur == 0:
                positionArrivee = Point3(-1.1, 0, -0.1)
                positionDepart = Point3(-2.5, 0, -0.1)
            elif joueur == 1:
                positionArrivee = Point3(1.1, 0, -0.1)
                positionDepart = Point3(2.5, 0, -0.1)

            message = messagesErreurs[i].retournerMessage()
            message = textwrap.fill(message, 33)
            self.frameErreur = DirectFrame(text=message,
                                           pos=positionDepart,
                                           frameColor=(255, 255, 255, 0.5),
                                           frameSize=(-width, width, -height,
                                                      height))
            self.frameErreur["text_scale"] = (textSize, textSize)
            self.frameErreur["text_fg"] = (255, 0, 0, 1)
            self.frameErreur["text_pos"] = (0, 0.1)

            scaleFin = 0
            intervalEntrer = self.frameErreur.posInterval(
                2, positionArrivee, startPos=positionDepart)
            intervalRapetisser = self.frameErreur.scaleInterval(
                1, Vec3(1, 1, scaleFin))

            tempsAttente = i * 8
            sequence = Sequence(Wait(tempsAttente), intervalEntrer, Wait(5),
                                intervalRapetisser)
            sequence.start()

    def ajouterBottomFrame(self):
        #variables de positionnement
        height = 0.15
        width = 0.6
        dist = 0.1
        debut = 0.025

        #frame combattre
        self.frameBottom = DirectFrame(text="",
                                       frameColor=(255, 255, 255, 0.23),
                                       frameSize=(-width, width, -height,
                                                  height))
        self.frameBottom.setPos(0, 0, -0.10)
        labelCombattre = OnscreenText(text='Combattrons dans',
                                      pos=(0, debut),
                                      scale=0.07,
                                      align=TextNode.ACenter,
                                      mayChange=True)
        labelCombattre.reparentTo(self.frameBottom)
        nomNiveau = DTO.nomMap
        if nomNiveau == None:
            nomNiveau = ""
        labelNiveau = OnscreenText(text=nomNiveau,
                                   pos=(0, debut - dist),
                                   scale=0.07,
                                   align=TextNode.ACenter,
                                   mayChange=True)
        # labelNiveau = OnscreenText(text = DTO.mapSelectionne.titre, pos = (0, debut-dist), scale = 0.07 , align=TextNode.ACenter, mayChange = True)
        labelNiveau.reparentTo(self.frameBottom)

        height = 0.10
        width = 0.6
        dist = 0.1
        debut = -0.025
        #frame joueur favorisé
        #déterminer le joueur favorisé
        if DTO.joueurs[0].level > DTO.joueurs[1].level:
            joueurFavorise = DTO.joueurs[0].nom
            DTO.joueurs[0].favori
        elif DTO.joueurs[1].level > DTO.joueurs[0].level:
            joueurFavorise = DTO.joueurs[1].nom
            DTO.joueurs[1].favori = True
        else:
            joueurFavorise = None

        if joueurFavorise == None:
            joueurFavorise = "Aucun joueur favorisé!"
        else:
            # joueurFavorise = self.analyse.calculerNom(DTO.joueurs[0])
            joueurFavorise += " est favorisé!"

        self.frameFavori = DirectFrame(text="",
                                       frameColor=(24, 24, 0, 1),
                                       frameSize=(-width, width, -height,
                                                  height))
        self.frameFavori.setPos(0, 0, -0.40)
        labelFavori = OnscreenText(text=joueurFavorise,
                                   pos=(0, debut),
                                   scale=0.06,
                                   align=TextNode.ACenter,
                                   mayChange=True)
        labelFavori.reparentTo(self.frameFavori)

        # bouton combattre
        self.b = DirectButton(text=("COMBATTRE!"),
                              scale=.07,
                              frameSize=(-6, 6, -3, 3),
                              pos=(0, 0, -0.65),
                              command=self.combattre)
        self.b.reparentTo(self.frameBottom)

        # interval de "battements de coeur" pour le bouton Combattre
        # les paramètres de la séquence
        scaleDebut = 0.03
        scaleFin = 0.05
        self.b.setScale(scaleDebut, scaleDebut, scaleDebut)
        duree = 0.75

        #les deux intervals opposés (grandir vs rapetir)
        intervalGrossir = self.b.scaleInterval(
            duree, Vec3(scaleDebut, scaleDebut, scaleDebut))
        intervalRapetir = self.b.scaleInterval(
            duree, Vec3(scaleFin, scaleFin, scaleFin))

        # la loop qui dure toujours
        sequence = Sequence(intervalRapetir, intervalGrossir)
        sequence.loop()
        self.sequences.append(sequence)

    def chargerJeu(self):
        #loader les données dans le DTO avec la bonne map
        self.dao = DAO_Oracle()
        self.dao.fillGame(DTO.idMap)

        #On démarre!
        Sequence(
            Func(lambda: self.transition.irisOut(0.2)),
            SoundInterval(self.sound),
            Func(self.cacher),
            Func(lambda: messenger.send("DemarrerPartie")),
            Wait(
                0.2
            ),  #Bug étrange quand on met pas ça. L'effet de transition doit lagger
            Func(lambda: self.transition.irisIn(0.2))).start()

    def cacher(self):
        #Est esssentiellement un code de "loading"
        #On remet la caméra comme avant
        base.cam.node().getDisplayRegion(0).setSort(self.baseSort)
        # #On cache les menus
        # self.background.hide()
        self.frameTop.hide()
        self.frameBottom.hide()
        self.frameMiddle.hide()
        self.frameMessage.hide()
        self.frameFavori.hide()
        self.labelVS.hide()
        for dr in self.drs:
            base.win.removeDisplayRegion(dr)

    def testerConnexion(self):
        dao = DAO_Oracle()
        connecte = dao.connectDB()
        if not connecte:
            self.labelMessage.setText(
                "Aucune connexion avec la base de données...")
Example #3
0
    def enterSingleplayer(self):
        helper.hide_cursor()

        self.musicGame.play()

        self.world = World()

        self.player = Player()
        self.player.setPos(self.world.getStartPos(1))
        self.player.setTeam("Yellow")
        self.player.setColor(LPoint3f(1, 1, 0))

        #self.player.setSpectator(self.world.getSpectatorNode())

        # create non player characters
        self.npcs = []
        for i in range(self.numNPCs):
            self.npcs.append(NPC())
            self.npcs[i].setPos(self.world.getStartPos(i+2))
            self.npcs[i].setBunker(self.world.getBunker())
            if i < self.numNPCs/2:
                self.npcs[i].setTeam("Yellow")
                self.npcs[i].setColor(LPoint3f(1, 1, 0))
            else:
                self.npcs[i].setTeam("Blue")
                self.npcs[i].setColor(LPoint3f(0, 0, 1))

        for i in range(self.numNPCs):
            el = []
            if self.npcs[i].playerTeam != self.player.playerTeam:
                el.append(self.player)
            for j in range(self.numNPCs):
                if self.npcs[i].playerTeam != self.npcs[j].playerTeam:
                    el.append(self.npcs[j])
            self.npcs[i].setEnemies(el)


        number = OnscreenText(
            text = "",
            scale = 0.75,
            pos = (0, -0.1875),
            fg = (1,1,1,1),
            align = TextNode.ACenter)

        def startSingleplayer():
            number.destroy()
            self.world.run()
            self.player.run()
            for npc in self.npcs:
                npc.run()
            taskMgr.add(self.checkGameOver, "checkGameOver")

        def setNumber(num):
            number["text"] = str(num)
            number["scale"] = 0.75
        inter = number.scaleInterval(1.0, 0)
        # setup a sequence that will count down for us
        self.countdownSeq = Sequence(
            Func(setNumber, 3),
            inter,
            Func(setNumber, 2),
            inter,
            Func(setNumber, 1),
            inter,
            Func(setNumber, "GO"),
            inter,
            Func(startSingleplayer))
        self.countdownSeq.start()
Example #4
0
class InterfaceMenuAuthentification(ShowBase):
    def __init__(self, unDTOUsers):

        self.accept("AllerAuthentification", self.ouvrirMenu)

        self.unDTOUsers = unDTOUsers
        self.baseSort = base.cam.node().getDisplayRegion(0).getSort()
        base.cam.node().getDisplayRegion(0).setSort(20)
        #Strings contenant des textes
        self.message1 = "Attente de la connexion du joueur 1."
        self.message2 = "Attente de la connexion du joueur 2."
        self.username1 = ""
        self.username2 = ""
        self.modele1 = None
        self.modele2 = None
        self.arreterDecoration = False

        #Liste contenant les direct widgets pour facilité le hide
        self.listeCheckBox1 = []
        self.listeCheckBoxSec1 = []
        self.listeNomArmes = []
        self.listeNbArmes = []
        self.listeTotalNbArmes1 = [0, 0, 0, 0, 0, 0]
        self.choixPrim1 = [1]
        self.choixSec1 = [0]
        self.isReader1 = False
        self.listeCheckBox2 = []
        self.listeCheckBoxSec2 = []
        self.listeNomArmes2 = []
        self.listeNbArmes2 = []
        self.listeTotalNbArmes2 = [0, 0, 0, 0, 0, 0]
        self.choixPrim2 = [1]
        self.choixSec2 = [0]
        self.isReader2 = False
        self.labelJoueur1 = []
        self.labelJoueur2 = []

        self.unDTOMap = self.setupMap()

    def ouvrirMenu(self):

        btnScale = (0.18, 0.18)
        text_scale = 0.12
        borderW = (0.04, 0.04)
        couleurBack = (1, 1, 1, 1)
        separation = 0.5
        hauteur = -0.6

        #Label pour les login
        self.textJoueur1 = OnscreenText(text="Joueur1",
                                        pos=(-1.3, .7),
                                        scale=0.07,
                                        fg=(0, 0, 0, 1),
                                        align=TextNode.ACenter,
                                        mayChange=1)
        self.textJoueur2 = OnscreenText(text="Joueur2",
                                        pos=(0.8, 0.7),
                                        scale=0.07,
                                        fg=(0, 0, 0, 1),
                                        align=TextNode.ACenter,
                                        mayChange=1)
        self.textMdp1 = OnscreenText(text="Password1",
                                     pos=(-1.3, .5),
                                     scale=0.07,
                                     fg=(0, 0, 0, 1),
                                     align=TextNode.ACenter,
                                     mayChange=1)
        self.textMdp2 = OnscreenText(text="Password2",
                                     pos=(0.8, 0.5),
                                     scale=0.07,
                                     fg=(0, 0, 0, 1),
                                     align=TextNode.ACenter,
                                     mayChange=1)

        #Ajouter les champs
        self.champNom1 = DirectEntry(text="",
                                     scale=.05,
                                     numLines=2,
                                     focus=1,
                                     pos=(-1, 0, 0.75),
                                     initialText="Joueur1")
        self.champMdp1 = DirectEntry(text="",
                                     scale=.05,
                                     numLines=2,
                                     focus=1,
                                     pos=(-1, 0, 0.55),
                                     initialText="AAAaaa111",
                                     obscured=1)
        self.champNom2 = DirectEntry(text="",
                                     scale=.05,
                                     numLines=2,
                                     focus=1,
                                     pos=(1, 0, 0.75),
                                     initialText="Joueur2")
        self.champMdp2 = DirectEntry(text="",
                                     scale=.05,
                                     numLines=2,
                                     focus=1,
                                     pos=(1, 0, 0.55),
                                     initialText="AAAaaa111",
                                     obscured=1)
        self.messageConnexion = DirectEntry(text="",
                                            scale=.05,
                                            numLines=2,
                                            width=50,
                                            focus=1,
                                            pos=(-1.3, 0, 0.89),
                                            initialText=self.message1 + "\n " +
                                            self.message2)

        #Ajouter les boutons
        self.boutonLogin1 = DirectButton(text=("Login J1!", "!", "!",
                                               "disabled"),
                                         text_scale=(0.1, 0.1),
                                         borderWidth=borderW,
                                         text_bg=couleurBack,
                                         frameColor=couleurBack,
                                         relief=2,
                                         command=lambda: self.connexion(1),
                                         pos=(-0.75, 0, 0.3))
        self.boutonLogin2 = DirectButton(text=("Login J2!", "!", "!",
                                               "disabled"),
                                         text_scale=(0.1, 0.1),
                                         borderWidth=borderW,
                                         text_bg=couleurBack,
                                         frameColor=couleurBack,
                                         relief=2,
                                         command=lambda: self.connexion(2),
                                         pos=(1.25, 0, 0.3))

        #Afficher les tanks
        self.afficherTank1(1)
        self.afficherTank2(2)

        #Un cadre pour rendre la page plus presentable
        self.deco = OnscreenText(text="    ",
                                 pos=(0, -0.3, -5),
                                 scale=5,
                                 mayChange=1,
                                 bg=(0.9, 0.9, 1, 1),
                                 frame=(0, 0, 0, 1))

        #Bouton combattre. Sera cacher au debut
        self.boutonStart = DirectButton(text=("Combattre", "!", "!",
                                              "disabled"),
                                        text_scale=btnScale,
                                        borderWidth=borderW,
                                        text_bg=couleurBack,
                                        frameColor=couleurBack,
                                        command=self.appuyerCombattre,
                                        pos=(0, 0, -0.8))
        self.boutonStart.hide()

#Methode pour aller a la prochaine page

    def chargeMenuNiveaux(self):
        self.arreterDecoration = True
        self.hideWidgets2()
        #On démarre!
        listeInfoUsers = [
            self.unDTOUsers, self.unDTOMap, self.username1, self.username2,
            self.chercherLesArmes()
        ]
        Sequence(
            Func(self.cacher),
            Func(lambda: messenger.send("AllerChoixNiveau", listeInfoUsers))
        ).start()

    def connexion(self, noJoueur):

        #Vérification quel bouton a été appuyé
        if noJoueur == 1:
            #Vérifier que le user n'est pas déja connecté
            if self.username2 != self.champNom1.get():
                if (self.unDTOUsers.siUsernameExiste(self.champNom1.get())):
                    print self.champNom1.get()
                    #Hashe le mot de passe
                    salt = self.unDTOUsers.getMdpUser(self.champNom1.get())
                    reponseHashe = bcrypt.hashpw(
                        self.champMdp1.get(),
                        salt)  #Passer le salt du premier mdp
                    #Si le bon mot de passe... continuer
                    if (reponseHashe == salt):
                        self.message1 = "Le joueur 1 (" + self.champNom1.get(
                        ) + ") est connecté!"
                        self.username1 = self.champNom1.get()
                        self.changerCouleurTank1()
                        self.bougerTank1()
                        self.listeArmes1 = self.unDTOUsers.getToutsArmesJoueur(
                            self.unDTOUsers.getIdUser(self.username1))
                        for i in range(len(self.listeArmes1) - 1):
                            self.listeTotalNbArmes1[i] = self.listeArmes1[i][1]

                        self.afficherChoixArmes(1, 0)

                    #Mauvais mot de passe
                    else:
                        self.message1 = "Erreur! Mauvais mot de passe pour le joueur 1..."
                #Username existe pas
                else:
                    self.message1 = "Le username du joueur 1 n'existe pas!"
            #Déjà connecté
            else:
                self.message1 = "Erreur! Le joueur 2 est déjà connecté avec ce nom!"
        #Vérification quel bouton a été appuyé
        else:
            if self.username1 != self.champNom2.get():
                if (self.unDTOUsers.siUsernameExiste(self.champNom2.get())):
                    print self.champNom2.get()

                    salt = self.unDTOUsers.getMdpUser(self.champNom2.get())
                    reponseHashe = bcrypt.hashpw(
                        self.champMdp2.get(),
                        salt)  #Passer le salt du premier mdp

                    if (reponseHashe == salt):
                        self.message2 = "Le joueur 2 (" + self.champNom2.get(
                        ) + ") est connecté!"
                        self.username2 = self.champNom2.get()
                        self.changerCouleurTank2()
                        self.bougerTank2()

                        self.listeArmes2 = self.unDTOUsers.getToutsArmesJoueur(
                            self.unDTOUsers.getIdUser(self.username2))

                        for i in range(len(self.listeArmes2) - 1):
                            self.listeTotalNbArmes2[i] = self.listeArmes2[i][1]

                        self.afficherChoixArmes2(1, 0)

                    else:
                        self.message2 = "Erreur! Mauvais mot de passe pour le joueur 2..."

                else:
                    self.message2 = "Le username du joueur 2 n'existe pas!"
            else:
                self.message2 = "Erreur! Le joueur 1 est déjà connecté avec ce nom!"

        self.messageConnexion.set(self.message1 + "\n " + self.message2)
        if self.username1 != "" and self.username2 != "":
            self.pretACombattre()

    def cacher(self):
        #Est esssentiellement un code de "loading"
        #On remet la caméra comme avant
        base.cam.node().getDisplayRegion(0).setSort(self.baseSort)
        self.boutonStart.hide()

    def setupMap(self):
        leDTOMap = DTOMap()
        leDAOMap = DAOOracleMap()
        leDTOMap = leDAOMap.read()
        return leDTOMap

    def afficherTank1(self, couleur):
        # On charge le modèles
        self.modele1 = loader.loadModel("../asset/Tank/tank")
        #On réduit sa taille un peu...
        self.modele1.setScale(0.450, 0.450, 0.450)
        self.modele1.setPos(-7, 10, 0)

        #Pour l'animation
        self.modele1.reparentTo(render)
        dureeRot = 5

        intervalRotation = self.modele1.hprInterval(dureeRot, (360, 0, 0))
        self.sequ1 = Sequence(intervalRotation)
        self.sequ1.loop()

    def afficherTank2(self, couleur):
        # On charge le modèles
        self.modele2 = loader.loadModel("../asset/Tank/tank")
        #On réduit sa taille un peu...
        self.modele2.setScale(0.450, 0.450, 0.450)
        self.modele2.setPos(6, 10, 0)

        #On multiple la couleur de la texture du tank par ce facteur. Ça permet de modifier la couleur de la texture du tank

        self.modele2.setHpr(0, 0, 0)
        self.modele2.reparentTo(render)

        dureeRot = 5

        intervalRotation = self.modele2.hprInterval(dureeRot, (-360, 0, 0))
        self.sequ2 = Sequence(intervalRotation)
        self.sequ2.loop()

#Faire bouger le tank quand le joueur se connecte

    def bougerTank1(self):
        posInit = (-7, 10, 0)
        self.modele1.setPos(posInit)

        duree = 1
        intervalAvancer = self.modele1.posInterval(duree, (-1, 10, 0))
        avancerTank = Sequence(intervalAvancer)
        avancerTank.start()

    def bougerTank2(self):
        posInit = (7, 10, 0)
        self.modele2.setPos(posInit)

        duree = 1
        intervalAvancer = self.modele2.posInterval(duree, (1, 10, 0))
        avancerTank = Sequence(intervalAvancer)
        avancerTank.start()

    def pretACombattre(self):
        self.boutonStart.show()
        testInterval = self.boutonStart.scaleInterval(2, (1.5, 1.5, 1.5),
                                                      startScale=(0.5, 0.5,
                                                                  0.5))
        testInterval2 = self.boutonStart.scaleInterval(2, (0.5, 0.5, 0.5),
                                                       startScale=(1.5, 1.5,
                                                                   1.5))
        self.seqBut = Sequence(testInterval, testInterval2)
        self.seqBut.loop()

    def appuyerCombattre(self):
        #Cacher les widgets et terminer l'animation qui tourne
        self.hideWidgets()
        self.sequ1.finish()
        self.sequ2.finish()
        self.seqBut.finish()

        dureeRot = 2
        self.modele1.setHpr(0, 0, 0)
        self.modele2.setHpr(-270, 0, 0)

        intervalRotation = self.modele1.hprInterval(dureeRot, (270, 0, 0))
        derniereRotation = Sequence(intervalRotation)
        derniereRotation.start()

        intervalRotation2 = self.modele2.hprInterval(dureeRot, (90, 0, 0))
        derniereRotation2 = Sequence(intervalRotation2)
        derniereRotation2.start()

        #Faire afficher les noms
        self.labelTank1 = OnscreenText(text=self.username1,
                                       pos=(-0.7, -0.6),
                                       scale=0.2,
                                       fg=(0, 0, 0, 1),
                                       align=TextNode.ACenter,
                                       mayChange=1,
                                       bg=(0.7, 0.8, 0, 1),
                                       frame=(0, 0, 0, 1))

        self.labelTank2 = OnscreenText(text=self.username2,
                                       pos=(0.7, -0.6),
                                       scale=0.2,
                                       fg=(0, 0, 0, 1),
                                       align=TextNode.ACenter,
                                       mayChange=1,
                                       bg=(0.7, 0.8, 0, 1),
                                       frame=(0, 0, 0, 1))

        #Faire des animations
        testInterval = self.labelTank1.scaleInterval(2, (1.5, 1.5, 1.5),
                                                     startScale=(0.5, 0.5,
                                                                 0.5))
        testInterval2 = self.labelTank1.scaleInterval(2, (0.5, 0.5, 0.5),
                                                      startScale=(1.5, 1.5,
                                                                  1.5))
        self.seqTank1 = Sequence(testInterval, testInterval2)
        self.seqTank1.loop()

        testInterval = self.labelTank2.scaleInterval(2, (1.5, 1.5, 1.5),
                                                     startScale=(0.5, 0.5,
                                                                 0.5))
        testInterval2 = self.labelTank2.scaleInterval(2, (0.5, 0.5, 0.5),
                                                      startScale=(1.5, 1.5,
                                                                  1.5))
        self.seqTank2 = Sequence(testInterval, testInterval2)
        self.seqTank2.loop()

        self.labelVS1 = OnscreenText(text="V.S",
                                     pos=(0, -0.5),
                                     scale=0.2,
                                     fg=(0, 0, 0, 1),
                                     align=TextNode.ACenter,
                                     mayChange=1,
                                     bg=(1, 0.2, 0.2, 1),
                                     frame=(0, 0, 0, 1))
        self.labelVS2 = OnscreenText(text="V.S",
                                     pos=(0, -0.5),
                                     scale=0.2,
                                     fg=(0, 0, 0, 1),
                                     align=TextNode.ACenter,
                                     mayChange=1,
                                     bg=(0.2, 0.2, 1, 1),
                                     frame=(0, 0, 0, 1))
        labelVSInterval1 = self.labelVS1.hprInterval(2, (0, 0, 0),
                                                     startHpr=(0, 0, 360))
        labelVSInterval1.loop()
        labelVSInterval2 = self.labelVS2.hprInterval(2, (0, 0, 0),
                                                     startHpr=(0, 0, -360))
        labelVSInterval2.loop()

        messenger.send("updateArmurie", self.chercherInfoAUpdate())
        print "apres messenger"
        print self.chercherLesArmes()

        #JAI CHANGER LE TEMPS DE LANIMATION
        t = Timer(1.0, lambda: self.chargeMenuNiveaux())
        t.start()  # after 30 seconds, "hello, world" will be printed
        self.decoration()

#Faire une animation de "neige"

    def decoration(self):

        if not self.arreterDecoration:
            threading.Timer(0.1, lambda: self.decoration()).start()

            labelTest = OnscreenText(text="TANK'EM!!",
                                     pos=(random.randrange(5),
                                          random.randrange(5),
                                          random.randrange(5)),
                                     scale=0.2,
                                     fg=(random.randrange(10),
                                         random.randrange(10),
                                         random.randrange(10), 1),
                                     align=TextNode.ACenter,
                                     mayChange=1,
                                     bg=(0.1, 1, 0.6, 1),
                                     frame=(0, 0, 0, 1))
            labelTest.setHpr(random.randrange(70), random.randrange(70),
                             random.randrange(70))

            testInterval = labelTest.posInterval(3,
                                                 Point3(-8, -2, -2),
                                                 startPos=Point3(
                                                     random.randrange(5),
                                                     random.randrange(5),
                                                     random.randrange(5)))

            mySequence = Sequence(testInterval)
            mySequence.start()

    def hideWidgets(self):
        self.boutonStart.hide()
        self.textJoueur1.hide()
        self.textJoueur2.hide()
        self.textMdp1.hide()
        self.textMdp2.hide()
        self.boutonLogin1.hide()
        self.boutonLogin2.hide()
        self.messageConnexion.set(
            "Préparez vous pour le combat de votre vie....!!!!!!\n ÊTES-VOUS PRÊTS???"
        )
        self.champNom1.hide()
        self.champMdp1.hide()
        self.champNom2.hide()
        self.champMdp2.hide()
        self.labelNom1.hide()
        self.labelNom2.hide()
        for item in self.listeNomArmes:
            item.hide()
        for item in self.listeNbArmes:
            item.hide()
        for item in self.listeNomArmes2:
            item.hide()
        for item in self.listeNbArmes2:
            item.hide()
        for item in self.listeCheckBox1:
            item.hide()
        for item in self.listeCheckBoxSec1:
            item.hide()
        for item in self.listeCheckBox2:
            item.hide()
        for item in self.listeCheckBoxSec2:
            item.hide()
        for item in self.labelJoueur1:
            item.hide()
        for item in self.labelJoueur2:
            item.hide()

        self.labelNom1.hide()
        self.labelNom2.hide()
        self.labelPrim1.hide()
        self.labelPrim2.hide()
        self.labelSec1.hide()
        self.labelSec2.hide()

    def hideWidgets2(self):
        self.modele1.hide()
        self.modele2.hide()
        self.labelVS1.hide()
        self.labelVS2.hide()
        self.labelTank2.hide()
        self.labelTank1.hide()
        self.messageConnexion.hide()
        self.deco.hide()

    def changerCouleurTank1(self):

        #On multiple la couleur de la texture du tank par ce facteur. Ça permet de modifier la couleur de la texture du tank
        RGBJ1 = [
            self.unDTOUsers.getRougeUser(self.username1),
            self.unDTOUsers.getVertUser(self.username1),
            self.unDTOUsers.getBleuUser(self.username1), 1
        ]
        self.modele1.setColorScale(RGBJ1[0], RGBJ1[1], RGBJ1[2], RGBJ1[3])

    def changerCouleurTank2(self):

        RGBJ2 = [
            self.unDTOUsers.getRougeUser(self.username2),
            self.unDTOUsers.getVertUser(self.username2),
            self.unDTOUsers.getBleuUser(self.username2), 1
        ]
        self.modele2.setColorScale(RGBJ2[0], RGBJ2[1], RGBJ2[2], RGBJ2[3])

    def afficherChoixArmes(self, choix1, choix2):
        self.choixPrim1 = [choix1]
        self.choixSec1 = [choix2]

        for item in self.listeNomArmes:
            item.hide()

        for item in self.listeCheckBox1:
            item.hide()
        for item in self.listeCheckBoxSec1:
            item.hide()
        for item in self.listeNbArmes:
            item.hide()

        for item in self.labelJoueur1:
            item.hide()

        self.listeCheckBox1 = []
        self.listeCheckBoxSec1 = []
        self.listeNomArmes = []
        self.labelJoueur1 = []
        #Afficher les labels et les radiobuttons
        self.labelNom1 = OnscreenText(text="Nom:",
                                      pos=(-1.6, 0.1, 0),
                                      scale=0.07,
                                      fg=(0, 0, 0, 1),
                                      align=TextNode.ACenter,
                                      mayChange=1)
        self.labelJoueur1.append(self.labelNom1)
        self.texteNom = OnscreenText(text="AucuneArme",
                                     pos=(-1.5, 0, 0),
                                     scale=0.06,
                                     fg=(0, 0, 0, 1),
                                     align=TextNode.ACenter,
                                     mayChange=1)
        self.listeNomArmes.append(self.texteNom)

        self.sec1 = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(-0.8, 0, 0),
                                      variable=self.choixSec1,
                                      value=[0],
                                      command=self.radioChoixJoueur1)
        self.listeCheckBoxSec1.append(self.sec1)

        self.texteNom = OnscreenText(text="Canon",
                                     pos=(-1.5, -0.1, 0),
                                     scale=0.07,
                                     fg=(0, 0, 0, 1),
                                     align=TextNode.ACenter,
                                     mayChange=1)
        self.prim1 = DirectRadioButton(text="Ok",
                                       scale=.05,
                                       pos=(-1.2, 0, -0.1),
                                       variable=self.choixPrim1,
                                       value=[1],
                                       command=self.radioChoixJoueur1)
        self.listeCheckBox1.append(self.prim1)

        self.listeNomArmes.append(self.texteNom)
        self.sec1 = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(-0.8, 0, -0.1),
                                      variable=self.choixSec1,
                                      value=[1],
                                      command=self.radioChoixJoueur1)
        self.listeCheckBoxSec1.append(self.sec1)

        self.labelPrim1 = OnscreenText(text="Primaire:",
                                       pos=(-1.2, 0.1, 0),
                                       scale=0.05,
                                       fg=(0, 0, 0, 1),
                                       align=TextNode.ACenter,
                                       mayChange=1)
        self.labelSec1 = OnscreenText(text="Secondaire:",
                                      pos=(-0.8, 0.1, 0),
                                      scale=0.05,
                                      fg=(0, 0, 0, 1),
                                      align=TextNode.ACenter,
                                      mayChange=1)
        self.labelJoueur1.append(self.labelPrim1)
        self.labelJoueur1.append(self.labelSec1)

        #Pour chaque arme de la DTO, faire ajouter l'arme dans la liste
        nbDeChoix = len(self.listeArmes1) - 1
        for i in range(nbDeChoix):
            texteNomArme = OnscreenText(text=self.listeArmes1[i][0],
                                        pos=(-1.5, -0.2 - 0.1 * i, 0),
                                        scale=0.07,
                                        fg=(0, 0, 0, 1),
                                        align=TextNode.ACenter,
                                        mayChange=1)
            self.listeNomArmes.append(texteNomArme)

            texteNb = OnscreenText(text=str(self.listeTotalNbArmes1[i]),
                                   pos=(-0.6, -0.2 - 0.1 * i, 0),
                                   scale=0.07,
                                   fg=(0, 0, 0, 1),
                                   align=TextNode.ACenter,
                                   mayChange=1)
            self.listeNbArmes.append(texteNb)
            if self.listeArmes1[i][1] != 0:
                b = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(-1.2, 0, -0.2 - 0.1 * i),
                                      variable=self.choixPrim1,
                                      value=[i + 2],
                                      command=self.radioChoixJoueur1)
                self.listeCheckBox1.append(b)
                c = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(-0.8, 0, -0.2 - 0.1 * i),
                                      variable=self.choixSec1,
                                      value=[i + 2],
                                      command=self.radioChoixJoueur1)
                self.listeCheckBoxSec1.append(c)

        #Code pour seulement pouvoir selection un radiobutton de la liste
        for button in self.listeCheckBox1:
            button.setOthers(self.listeCheckBox1)

        for button in self.listeCheckBoxSec1:
            button.setOthers(self.listeCheckBoxSec1)

        self.isReader1 = True

    # Callback function to set  text
    def radioChoixJoueur1(self, status=None):
        if self.isReader1 == True:

            print "La valeur selectionnée PRIM:" + str(self.choixPrim1)
            print "La valeur selectionnée Secondaire:" + str(self.choixSec1)
            #Si on choisi une arme bonus, soustraire l'inventaire de 1.

            #Refresh les valeurs du nombre d'armes
            for i in range(len(self.listeArmes1) - 1):
                self.listeTotalNbArmes1[i] = self.listeArmes1[i][1]

            #Si on choisi une arme bonus, soustraire l'inventaire de 1.
            if self.choixPrim1 > 1:
                if self.listeTotalNbArmes1[self.choixPrim1[0] - 2] - 1 >= 0:
                    self.listeTotalNbArmes1[self.choixPrim1[0] - 2] -= 1
            #Si on choisi une arme bonus, soustraire l'inventaire de 1.
            if self.choixSec1[0] > 1:

                if self.listeTotalNbArmes1[self.choixSec1[0] - 2] - 1 >= 0:
                    self.listeTotalNbArmes1[self.choixSec1[0] - 2] -= 1
                else:
                    self.choixSec1[0] = 0

            self.isReader1 = False
            self.afficherChoixArmes(self.choixPrim1[0], self.choixSec1[0])

    def afficherChoixArmes2(self, choix1, choix2):
        self.choixPrim2 = [choix1]
        self.choixSec2 = [choix2]

        #Cacher les anciens
        for item in self.listeNomArmes2:
            item.setText("")

        for item in self.listeCheckBox2:
            item.hide()
        for item in self.listeCheckBoxSec2:
            item.hide()
        for item in self.listeNbArmes2:
            item.hide()

        for item in self.labelJoueur2:
            item.hide()

        self.listeCheckBox2 = []
        self.listeCheckBoxSec2 = []
        self.listeNomArmes2 = []
        self.labelJoueur2 = []

        #Afficher les labels et les radiobuttons

        self.labelNom2 = OnscreenText(text="Nom:",
                                      pos=(0.7, 0.1, 0),
                                      scale=0.07,
                                      fg=(0, 0, 0, 1),
                                      align=TextNode.ACenter,
                                      mayChange=1)
        self.texteNom2 = OnscreenText(text="AucuneArme",
                                      pos=(0.7, 0, 0),
                                      scale=0.06,
                                      fg=(0, 0, 0, 1),
                                      align=TextNode.ACenter,
                                      mayChange=1)
        self.listeNomArmes2.append(self.texteNom2)

        self.sec2 = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(1.4, 0, 0),
                                      variable=self.choixSec2,
                                      value=[0],
                                      command=self.radioChoixJoueur2)
        self.listeCheckBoxSec2.append(self.sec2)

        self.texteNom2 = OnscreenText(text="Canon",
                                      pos=(0.7, -0.1, 0),
                                      scale=0.07,
                                      fg=(0, 0, 0, 1),
                                      align=TextNode.ACenter,
                                      mayChange=1)
        self.prim2 = DirectRadioButton(text="Ok",
                                       scale=.05,
                                       pos=(1, 0, -0.1),
                                       variable=self.choixPrim2,
                                       value=[1],
                                       command=self.radioChoixJoueur2)
        self.listeCheckBox2.append(self.prim2)

        self.listeNomArmes2.append(self.texteNom2)
        self.sec2 = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(1.4, 0, -0.1),
                                      variable=self.choixSec2,
                                      value=[1],
                                      command=self.radioChoixJoueur2)
        self.listeCheckBoxSec2.append(self.sec2)

        self.labelPrim2 = OnscreenText(text="Primaire:",
                                       pos=(1, 0.1, 0),
                                       scale=0.05,
                                       fg=(0, 0, 0, 1),
                                       align=TextNode.ACenter,
                                       mayChange=1)
        self.labelSec2 = OnscreenText(text="Secondaire:",
                                      pos=(1.4, 0.1, 0),
                                      scale=0.05,
                                      fg=(0, 0, 0, 1),
                                      align=TextNode.ACenter,
                                      mayChange=1)

        self.labelJoueur2.append(self.labelNom2)
        self.labelJoueur2.append(self.labelPrim2)
        self.labelJoueur2.append(self.labelSec2)

        #Pour chaque arme de la DTO, faire ajouter l'arme dans la liste
        nbDeChoix2 = len(self.listeArmes2) - 1
        for i in range(nbDeChoix2):
            texteNomArme2 = OnscreenText(text=self.listeArmes2[i][0],
                                         pos=(0.7, -0.2 - 0.1 * i, 0),
                                         scale=0.07,
                                         fg=(0, 0, 0, 1),
                                         align=TextNode.ACenter,
                                         mayChange=1)
            self.listeNomArmes2.append(texteNomArme2)

            texteNb2 = OnscreenText(text=str(self.listeTotalNbArmes2[i]),
                                    pos=(1.6, -0.2 - 0.1 * i, 0),
                                    scale=0.07,
                                    fg=(0, 0, 0, 1),
                                    align=TextNode.ACenter,
                                    mayChange=1)
            self.listeNbArmes2.append(texteNb2)
            if self.listeArmes2[i][1] != 0:
                b = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(1, 0, -0.2 - 0.1 * i),
                                      variable=self.choixPrim2,
                                      value=[i + 2],
                                      command=self.radioChoixJoueur2)
                self.listeCheckBox2.append(b)
                c = DirectRadioButton(text="Ok",
                                      scale=.05,
                                      pos=(1.4, 0, -0.2 - 0.1 * i),
                                      variable=self.choixSec2,
                                      value=[i + 2],
                                      command=self.radioChoixJoueur2)
                self.listeCheckBoxSec2.append(c)

        #Code pour seulement pouvoir selection un radiobutton de la liste
        for button in self.listeCheckBox2:
            button.setOthers(self.listeCheckBox2)

        for button in self.listeCheckBoxSec2:
            button.setOthers(self.listeCheckBoxSec2)

        self.isReader2 = True

    # Callback function to set  text
    def radioChoixJoueur2(self, status=None):
        if self.isReader2 == True:

            print "La valeur selectionnée PRIM:" + str(self.choixPrim2)
            print "La valeur selectionnée Secondaire:" + str(self.choixSec2)
            #Si on choisi une arme bonus, soustraire l'inventaire de 1.
            #Refresh les valeurs du nombre d'armes
            for i in range(len(self.listeArmes2) - 1):
                self.listeTotalNbArmes2[i] = self.listeArmes2[i][1]
                #Si on choisi une arme bonus, soustraire l'inventaire de 1.
            if self.choixPrim2 > 1:
                if self.listeTotalNbArmes2[self.choixPrim2[0] - 2] - 1 >= 0:
                    self.listeTotalNbArmes2[self.choixPrim2[0] - 2] -= 1
            #Si on choisi une arme bonus, soustraire l'inventaire de 1.
            if self.choixSec2[0] > 1:

                if self.listeTotalNbArmes2[self.choixSec2[0] - 2] - 1 >= 0:
                    self.listeTotalNbArmes2[self.choixSec2[0] - 2] -= 1
                else:
                    self.choixSec2[0] = 0

            self.isReader2 = False
            self.afficherChoixArmes2(self.choixPrim2[0], self.choixSec2[0])

    def chercherInfoAUpdate(self):
        idUser1 = self.unDTOUsers.getIdUser(self.username1)
        idUser2 = self.unDTOUsers.getIdUser(self.username2)

        listeModifUser = []

        if self.choixPrim1[0] > 1:
            choix = []
            choix.append(idUser1)
            choix.append(
                self.unDTOUsers.getIdArme(
                    self.listeNomArmes[self.choixPrim1[0]].getText()))
            listeModifUser.append(choix)

        if self.choixSec1[0] > 1:
            choix = []
            choix.append(idUser1)
            choix.append(
                self.unDTOUsers.getIdArme(
                    self.listeNomArmes[self.choixSec1[0]].getText()))
            listeModifUser.append(choix)

        if self.choixPrim2[0] > 1:
            choix = []
            choix.append(idUser2)
            choix.append(
                self.unDTOUsers.getIdArme(
                    self.listeNomArmes2[self.choixPrim2[0]].getText()))
            listeModifUser.append(choix)
        if self.choixSec2[0] > 1:
            choix = []
            choix.append(idUser2)
            choix.append(
                self.unDTOUsers.getIdArme(
                    self.listeNomArmes2[self.choixSec2[0]].getText()))
            listeModifUser.append(choix)

        listeInfo = []
        listeInfo.append(listeModifUser)
        return listeInfo

    def chercherLesArmes(self):
        listeArme1 = []
        listeArme2 = []
        listeArme1.append(self.listeNomArmes[self.choixPrim1[0]].getText())
        listeArme1.append(self.listeNomArmes[self.choixSec1[0]].getText())
        listeArme2.append(self.listeNomArmes2[self.choixPrim2[0]].getText())
        listeArme2.append(self.listeNomArmes2[self.choixSec2[0]].getText())
        listeInfo = []
        listeInfo.append(listeArme1)
        listeInfo.append(listeArme2)
        return listeInfo