예제 #1
0
    def __init__(self, le2mserv):
        self._le2mserv = le2mserv

        # creation of the menu (will be placed in the "part" menu on the
        # server screen
        actions = OrderedDict()
        actions[trans_PGG(u"Configure")] = self._configure
        actions[trans_PGG(u"Display parameters")] = \
            lambda _: self._le2mserv.gestionnaire_graphique. \
            display_information2(
                utiltools.get_module_info(pms), u"Paramètres")
        actions[trans_PGG(u"Start")] = lambda _: self._demarrer()
        actions[trans_PGG(u"Display payoffs")] = \
            lambda _: self._le2mserv.gestionnaire_experience.\
            display_payoffs_onserver("PublicGoodGame")
        actions[trans_PGG(u"Show graph")] = self._show_fig
        self._le2mserv.gestionnaire_graphique.add_topartmenu(
            u"Public Good Game", actions)

        self._fig = None
예제 #2
0
    def __init__(self, le2mserv):
        self._le2mserv = le2mserv

        # creation of the menu (will be placed in the "part" menu on the
        # server screen
        actions = OrderedDict()
        actions[trans_PGG(u"Configure")] = self._configure
        actions[trans_PGG(u"Display parameters")] = \
            lambda _: self._le2mserv.gestionnaire_graphique. \
            display_information2(
                utiltools.get_module_info(pms), u"Paramètres")
        actions[trans_PGG(u"Start")] = lambda _: self._demarrer()
        actions[trans_PGG(u"Display payoffs")] = \
            lambda _: self._le2mserv.gestionnaire_experience.\
            display_payoffs_onserver("PublicGoodGame")
        actions[trans_PGG(u"Show graph")] = self._show_fig
        self._le2mserv.gestionnaire_graphique.add_topartmenu(
            u"Public Good Game", actions)

        self._fig = None
예제 #3
0
    def __init__(self, defered, automatique, parent, periode, historique):
        super(GuiDecision, self).__init__(parent)

        # variables
        self._defered = defered
        self._automatique = automatique
        self._historique = GuiHistorique(self, historique)

        layout = QtGui.QVBoxLayout(self)

        wperiod = WPeriod(period=periode, ecran_historique=self._historique,
                          parent=self)
        layout.addWidget(wperiod)

        wexplanation = WExplication(
            text=textes_PGG.get_text_explanation(),
            parent=self, size=(450, 80))
        layout.addWidget(wexplanation)

        self._wdecision = WSpinbox(
            label=trans_PGG(u"How much token(s) do you want to put in the "
                            u"public account?"),
            minimum=pms.DECISION_MIN, maximum=pms.DECISION_MAX,
            interval=pms.DECISION_STEP, automatique=self._automatique,
            parent=self)
        layout.addWidget(self._wdecision)

        buttons = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok)
        buttons.accepted.connect(self._accept)
        layout.addWidget(buttons)

        self.setWindowTitle(trans_PGG(u"Decision"))
        self.adjustSize()
        self.setFixedSize(self.size())

        if self._automatique:
            self._timer_automatique = QtCore.QTimer()
            self._timer_automatique.timeout.connect(
                buttons.button(QtGui.QDialogButtonBox.Ok).click)
            self._timer_automatique.start(7000)
예제 #4
0
    def __init__(self, defered, automatique, parent, periode, historique):
        super(GuiDecision, self).__init__(parent)

        # variables
        self._defered = defered
        self._automatique = automatique
        self._historique = GuiHistorique(self, historique)

        layout = QtGui.QVBoxLayout(self)

        wperiod = WPeriod(period=periode,
                          ecran_historique=self._historique,
                          parent=self)
        layout.addWidget(wperiod)

        wexplanation = WExplication(text=textes_PGG.get_text_explanation(),
                                    parent=self,
                                    size=(450, 80))
        layout.addWidget(wexplanation)

        self._wdecision = WSpinbox(label=textes_PGG.get_text_label_decision(),
                                   minimum=pms.DECISION_MIN,
                                   maximum=pms.DECISION_MAX,
                                   interval=pms.DECISION_STEP,
                                   automatique=self._automatique,
                                   parent=self)
        layout.addWidget(self._wdecision)

        buttons = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok)
        buttons.accepted.connect(self._accept)
        layout.addWidget(buttons)

        self.setWindowTitle(trans_PGG(u"Decision"))
        self.adjustSize()
        self.setFixedSize(self.size())

        if self._automatique:
            self._timer_automatique = QtCore.QTimer()
            self._timer_automatique.timeout.connect(
                buttons.button(QtGui.QDialogButtonBox.Ok).click)
            self._timer_automatique.start(7000)
예제 #5
0
    def _demarrer(self):
        """
        Start the part
        :return:
        """
        # check conditions =====================================================
        if self._le2mserv.gestionnaire_joueurs.nombre_joueurs % \
                pms.TAILLE_GROUPES != 0 :
            self._le2mserv.gestionnaire_graphique.display_error(
                trans_PGG(u"The number of players is not compatible "
                          u"with the group size"))
            return
        confirmation = self._le2mserv.gestionnaire_graphique.\
            question(u"Démarrer PublicGoodGame?")
        if not confirmation:
            return

        # init part ============================================================
        yield (self._le2mserv.gestionnaire_experience.init_part(
            "PublicGoodGame", "PartiePGG", "RemotePGG", pms))
        self._tous = self._le2mserv.gestionnaire_joueurs.get_players(
            'PublicGoodGame')

        # groups
        self._le2mserv.gestionnaire_groupes.former_groupes(
            self._le2mserv.gestionnaire_joueurs.get_players(),
            pms.TAILLE_GROUPES,
            forcer_nouveaux=True)

        # set parameters on remotes
        yield (self._le2mserv.gestionnaire_experience.run_func(
            self._tous, "configure"))

        # stats
        self._fig = None
        self._data = []

        # start ================================================================
        for period in range(1 if pms.NOMBRE_PERIODES else 0,
                            pms.NOMBRE_PERIODES + 1):

            if self._le2mserv.gestionnaire_experience.stop_repetitions:
                break

            # init period
            self._le2mserv.gestionnaire_graphique.infoserv(
                [None, u"Période {}".format(period)])
            self._le2mserv.gestionnaire_graphique.infoclt(
                [None, u"Période {}".format(period)], fg="white", bg="gray")
            yield (self._le2mserv.gestionnaire_experience.run_func(
                self._tous, "newperiod", period))

            # decision
            yield (self._le2mserv.gestionnaire_experience.run_step(
                u"Décision", self._tous, "display_decision"))

            # compute total amount in the public account by group
            self._le2mserv.gestionnaire_graphique.infoserv(
                trans_PGG(u"Total amount by group"))
            for g, m in self._le2mserv.gestionnaire_groupes.get_groupes(
                    "PublicGoodGame").viewitems():
                total = sum([p.currentperiod.PGG_public for p in m])
                for p in m:
                    p.currentperiod.PGG_publicgroup = total
                self._le2mserv.gestionnaire_graphique.infoserv(
                    u"G{}: {}".format(g.split("_")[2], total))

            # period payoff
            self._le2mserv.gestionnaire_experience.compute_periodpayoffs(
                "PublicGoodGame")

            # stats period
            self._do_stats(period)

            # summary
            yield (self._le2mserv.gestionnaire_experience.run_step(
                u"Summary", self._tous, "display_summary"))

        # end of part ==========================================================
        # stats
        self._le2mserv.gestionnaire_graphique.infoserv(
            [None, u"Av. for the whole game"])
        datapandall = pd.DataFrame(self._data)
        datapandall = datapandall.groupby(datapandall.PGG_group)
        self._le2mserv.gestionnaire_graphique.infoserv(
            datapandall.mean()["PGG_public"].to_string())
        yield (self._le2mserv.gestionnaire_experience.finalize_part(
            "PublicGoodGame"))
예제 #6
0
    def _demarrer(self):
        """
        Start the part
        :return:
        """
        # check conditions =====================================================
        if self._le2mserv.gestionnaire_joueurs.nombre_joueurs % \
                pms.TAILLE_GROUPES != 0 :
            self._le2mserv.gestionnaire_graphique.display_error(
                trans_PGG(u"The number of players is not compatible "
                          u"with the group size"))
            return
        confirmation = self._le2mserv.gestionnaire_graphique.\
            question(u"Démarrer PublicGoodGame?")
        if not confirmation:
            return

        # init part ============================================================
        yield (self._le2mserv.gestionnaire_experience.init_part(
            "PublicGoodGame", "PartiePGG", "RemotePGG", pms))
        self._tous = self._le2mserv.gestionnaire_joueurs.get_players(
            'PublicGoodGame')

        # groups
        self._le2mserv.gestionnaire_groupes.former_groupes(
            self._le2mserv.gestionnaire_joueurs.get_players(),
            pms.TAILLE_GROUPES, forcer_nouveaux=True)

        # set parameters on remotes
        yield (self._le2mserv.gestionnaire_experience.run_func(
            self._tous, "configure"))

        # stats
        self._fig = None
        self._data = []

        # start ================================================================
        for period in range(1 if pms.NOMBRE_PERIODES else 0,
                        pms.NOMBRE_PERIODES + 1):

            if self._le2mserv.gestionnaire_experience.stop_repetitions:
                break

            # init period
            self._le2mserv.gestionnaire_graphique.infoserv(
                [None, u"Période {}".format(period)])
            self._le2mserv.gestionnaire_graphique.infoclt(
                [None, u"Période {}".format(period)], fg="white", bg="gray")
            yield (self._le2mserv.gestionnaire_experience.run_func(
                self._tous, "newperiod", period))
            
            # decision
            yield(self._le2mserv.gestionnaire_experience.run_step(
                u"Décision", self._tous, "display_decision"))

            # compute total amount in the public account by group
            self._le2mserv.gestionnaire_graphique.infoserv(
                trans_PGG(u"Total amount by group"))
            for g, m in self._le2mserv.gestionnaire_groupes.get_groupes(
                    "PublicGoodGame").viewitems():
                total = sum([p.currentperiod.PGG_public for p in m])
                for p in m:
                    p.currentperiod.PGG_publicgroup = total
                self._le2mserv.gestionnaire_graphique.infoserv(
                    u"G{}: {}".format(g.split("_")[2], total))
            
            # period payoff
            self._le2mserv.gestionnaire_experience.compute_periodpayoffs(
                "PublicGoodGame")
        
            # stats period
            self._do_stats(period)

            # summary
            yield(self._le2mserv.gestionnaire_experience.run_step(
                u"Summary", self._tous, "display_summary"))

        # end of part ==========================================================
        # stats
        self._le2mserv.gestionnaire_graphique.infoserv(
            [None, u"Av. for the whole game"])
        datapandall = pd.DataFrame(self._data)
        datapandall = datapandall.groupby(datapandall.PGG_group)
        self._le2mserv.gestionnaire_graphique.infoserv(
            datapandall.mean()["PGG_public"].to_string())
        yield (self._le2mserv.gestionnaire_experience.finalize_part(
            "PublicGoodGame"))
예제 #7
0
 def _configure(self):
     self._le2mserv.gestionnaire_graphique.display_information(
         trans_PGG(u"There is no nothing to configure"))
     return