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
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)
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)
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"))
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"))
def _configure(self): self._le2mserv.gestionnaire_graphique.display_information( trans_PGG(u"There is no nothing to configure")) return