Esempio n. 1
0
    def _do_stats(self):
        df_data = None
        if pms.GAME == pms.STANDARD:
            df_data = pd.DataFrame(
                [p.currentperiod.todict(p.joueur) for p in self._playersA])
        elif pms.GAME == pms.STRATEGY_METHOD:
            df_data = pd.DataFrame(
                [p.currentperiod.todict(p.joueur) for p in self._tous])

        df_data = df_data.groupby(df_data.joueur).mean()["DIC_decision"]
        self._fig, graph = plt.subplots(figsize=(6, 6))
        df_data.plot(kind="bar", ax=graph)
        graph.set_xticklabels([str(i)[-3:-1] for i in df_data.index])
        graph.set_ylim(0, pms.DOTATION)
        graph.set_xlabel(trans_DIC(u"Players"))
        graph.set_ylabel(trans_DIC(u"Amount sent"))
        graph.set_title(trans_DIC(u"Average amount sent by A players"))

        self._le2mserv.gestionnaire_graphique.infoserv(
            trans_DIC(u"Av. amount sent by players A\n{}").format(
                df_data.to_string()))
Esempio n. 2
0
    def _demarrer(self):
        """
        Lancement de la partie. Définit tout le déroulement
        :return:
        """
        confirmation = self._le2mserv.gestionnaire_graphique.\
            question(u"Démarrer Dictator?")
        if not confirmation:
            return

        # INIT PART ============================================================
        yield (self._le2mserv.gestionnaire_experience.init_part(
            "Dictator", "PartieDIC", "RemoteDIC", pms))

        # groups
        if pms.TAILLE_GROUPES > 0:
            try:
                self._le2mserv.gestionnaire_groupes.former_groupes(
                    self._le2mserv.gestionnaire_joueurs.get_players(),
                    pms.TAILLE_GROUPES, forcer_nouveaux=True)
            except ValueError as e:
                self._le2mserv.gestionnaire_graphique.display_error(
                    e.message)
                return

        # roles
        for g, m in self._le2mserv.gestionnaire_groupes. \
                get_groupes("Dictator").iteritems():
            m[0].role = pms.PLAYER_A
            m[1].role = pms.PLAYER_B

        self._tous = self._le2mserv.gestionnaire_joueurs.get_players(
            'Dictator')
        self._playersA = [p for p in self._tous if p.role == pms.PLAYER_A]
        self._le2mserv.gestionnaire_graphique.infoserv(trans_DIC("Players A"))
        self._le2mserv.gestionnaire_graphique.infoserv(
            map(str, [p.joueur for p in self._playersA]))

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

        # display role ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        if pms.GAME == pms.STANDARD:
            yield (self._le2mserv.gestionnaire_experience.run_step(
                u"Role", self._tous, "display_role"))
    
        # START OF REPETITIONS =================================================
        for period in xrange(1 if pms.NOMBRE_PERIODES else 0,
                        pms.NOMBRE_PERIODES + 1):

            if self._le2mserv.gestionnaire_experience.stop_repetitions:
                break

            # initiate the period ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            self._le2mserv.gestionnaire_graphique.infoserv(
                [None, le2mtrans(u"Period {}").format(period)])
            self._le2mserv.gestionnaire_graphique.infoclt(
                [None, le2mtrans(u"Period {}").format(period)],
                fg="white", bg="gray")
            yield (self._le2mserv.gestionnaire_experience.run_func(
                self._tous, "newperiod", period))
            
            # decision ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            if pms.GAME == pms.STANDARD:
                yield(self._le2mserv.gestionnaire_experience.run_step(
                    le2mtrans(u"Decision"), self._playersA, "display_decision"))
            elif pms.GAME == pms.STRATEGY_METHOD:
                yield(self._le2mserv.gestionnaire_experience.run_step(
                    le2mtrans(u"Decision"), self._tous, "display_decision"))

            # display role ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            if pms.GAME == pms.STRATEGY_METHOD:
                yield (self._le2mserv.gestionnaire_experience.run_step(
                    u"Role", self._tous, "display_role"))

            # store A's decisions in B's data set
            for m in self._le2mserv.gestionnaire_groupes. \
            get_groupes("Dictator").viewvalues():
                m[1].currentperiod.DIC_recu = m[0].currentperiod.DIC_decision

            # compute period payoffs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            self._le2mserv.gestionnaire_experience.compute_periodpayoffs(
                "Dictator")

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

        # END OF PART ==========================================================
        self._do_stats()
        yield (self._le2mserv.gestionnaire_experience.finalize_part("Dictator"))