def salva_lega(self, event): """ salva_lega(self, event) Salva la lega con il nome inserito associandole le opzioni utente :param event: object wx.EVT_BUTTON """ nome_lega = self.panel.nome.GetValue() if not nome_lega: InfoMessage(self, 'nessun nome inserito').get_choice() else: objlega = self.controller.nuova_lega(nome_lega) InfoMessage(self, 'Nuova Lega %s salvata!' % objlega.nome ).get_choice() budget = int(self.panel.budget.GetValue()) max_mercati = int(self.panel.mercati.GetValue()) max_portieri = int(self.panel.max_portieri.GetValue()) max_difensori = int(self.panel.max_difensori.GetValue()) max_centrocampisti = int(self.panel.max_centrocampisti.GetValue()) max_attaccanti = int(self.panel.max_attaccanti.GetValue()) a_r = int(self.panel.a_r.GetValue()) offset = int(self.panel.offset.GetValue()) self.controller.salva_opzioni_lega(objlega, budget, max_mercati, max_portieri, max_difensori, max_centrocampisti, max_attaccanti, a_r, offset) InfoMessage(self, 'Impostazioni Lega %s salvate!' % objlega.nome ).get_choice() self.clear_fields() self.parent.check_menus()
def salva_lega(self, event): """ salva_lega(self, event) Invoca il metodo del controller per modificare i valori della lega selezionata :param event: object wx.EVT_BUTTON """ nome = self.panel.nome.GetValue() try: bd = int(self.panel.budget.GetValue()) me = int(self.panel.mercati.GetValue()) mp = int(self.panel.max_portieri.GetValue()) md = int(self.panel.max_difensori.GetValue()) mc = int(self.panel.max_centrocampisti.GetValue()) ma = int(self.panel.max_attaccanti.GetValue()) ar = int(self.panel.a_r.GetValue()) offset = int(self.panel.offset.GetValue()) leghe = self.controller.modifica_lega(nome, bd, me, mp, md, mc, ma, ar, offset) self.update_controls(leghe) InfoMessage(self, 'Lega %s e opzioni salvate!' % nome).get_choice() self.clear_fields() except ValueError: InfoMessage(self, 'Inserire valori numerici').get_choice()
def salva_formazione(self, event): """ salva_formazione(self, event) Controlla che la formazione rispetti il modulo selezionato e non ci siano dei duplicati presenti nei giocatori, poi invoca il metodo del controller per il salvataggio della formazione. In caso di errori visualizza un Alert. :param event: object wx.EVT_BUTTON """ modulo = self.panel.cb_moduli.GetStringSelection() cb_giocatori = [ cb for cb in self.panel.GetChildren() if isinstance(cb, wx.ComboBox) and cb.GetId() > -1 ] giocatori = [cb.GetValue() for cb in cb_giocatori] if self.controller.modulo_corretto(giocatori[:11], modulo): if self.controller.duplicati_presenti(giocatori): InfoMessage(self, 'Duplicati presenti!').get_choice() else: squadra = self.panel.cb_squadre.GetStringSelection() giornata = self.panel.cb_giornate.GetStringSelection() msg = self.controller.salva_formazione(squadra, giornata, giocatori) InfoMessage(self, msg).get_choice() self.clean_widgets() else: InfoMessage(self, 'Errore nel Modulo!').get_choice()
def acquista(self, event): """ acquista(self, event) Invoca il metodo rosa_acquista_giocatore del controller per acquistare il giocatore scelto dai disponibili. Se il limite di giocatori in rosa viene superato, si ottiene un Alert. :param event: wx.EVT_BUTTON """ da_acquistare = self.panel.lb_disponibili.GetStringSelection() if da_acquistare: nome, ruolo = da_acquistare.split(' > ') msg = 'Sicuro di voler acuistare %s' % nome if ChoiceMessage(self, msg).is_yes(): squadra = self.panel.cb_squadre.GetStringSelection() if not self.controller.break_limits(squadra): nuova_rosa = self.controller.rosa_acquista_giocatore( nome.strip().lower(), squadra.strip()) self.fill_rosa(nuova_rosa) disp = self.controller.giocatori_disponibili( ruolo.strip().lower()) self.fill_disponibili(disp) self.panel.filtro.SetValue('') else: InfoMessage(self, 'limite rosa superato').get_choice() else: InfoMessage(self, 'nessun giocatore selezionato').get_choice()
def acquista_giocatore(self, event): """ acquista_giocatore(self, event) Invoca il metodo del controller, per l'acquisto del giocatore :param event: object wx.EVT_BUTTON """ nome = self.panel.cb_giocatori.GetStringSelection() prezzo = self.panel.valore_asta.GetValue() acquirente = self.panel.cb_squadre.GetStringSelection() if acquirente and prezzo: msg = self.controller.acquista_giocatore(nome, prezzo, acquirente) InfoMessage(self, msg).get_choice() if prezzo == '0': InfoMessage(self, 'Manca il prezzo asta!').get_choice() if acquirente == '': InfoMessage(self, 'Scegli/Conferma Acquirente!').get_choice()
def modifica_giocatore(self, event): """ modifica_giocatore(self, event) Invoca il metodo del controller per la modifica dei valori del giocatore selezionato. Solleva un'eccezione se nessun giocatore viene selezionato :param event: object wx.EVT_BUTTON """ try: codice = int(self.panel.codice.GetValue()) nome = self.panel.nome.GetValue() squadra_reale = self.panel.squadra_reale.GetValue() valore = int(self.panel.valore.GetValue()) valore_asta = int(self.panel.valore_asta.GetValue()) ruolo = self.panel.ruolo.GetValue() values = (codice, nome, squadra_reale, valore, valore_asta, ruolo) msg = self.controller.salva_valori_giocatore(values) InfoMessage(self, msg).get_choice() self.clear_fields() except ValueError: InfoMessage(self, 'Seleziona un giocatore').get_choice()
def salva_squadra(self, event): """ salva_squadra(self, event) Salva i valori della squadra selezionata :param event: wx.EVT_BUTTON """ try: nome = self.panel.nome.GetValue() allenatore = self.panel.allenatore.GetValue() budget = int(self.panel.budget.GetValue()) mercati = int(self.panel.mercati.GetValue()) legata = self.panel.option.Get3StateValue() except ValueError: InfoMessage(self, 'Seleziona una squadra').get_choice() else: values = (nome, allenatore, budget, mercati, legata) self.controller.update_squadra_values(values) msg = 'Modifica a squadra %s salvata!' % nome InfoMessage(self, msg).get_choice() self.parent.check_menu_squadra()
def on_lega(self, event): """ on_lega(self, event) Seleziona la lega della quale visualizzare le giornate disponibili. :param event: object wx.EVT_COMBOBOX """ lega = self.panel.cb_leghe.GetStringSelection() squadre = self.controller.get_squadre_lega(lega) self.fill_squadre(squadre) giornate = self.controller.get_giornate_calendario(lega) if giornate: self.fill_giornate(giornate) else: InfoMessage(self, 'Devi creare il calendario di lega!').get_choice()
def elimina_lega(self, event): """ elimina_lega(self, event) Elimina la lega selezionata :param event: object wx.EVT_BUTTON """ choice = ChoiceMessage(self, 'Sicuro di voler Eliminare la Lega?') if choice.is_yes(): lega = self.panel.cb_leghe.GetValue() leghe_rimanenti = self.controller.elimina_lega(lega) self.update_choice_leghe(leghe_rimanenti) InfoMessage(self, '%s Eliminata!' % lega).get_choice() self.parent.check_menu_lega() else: choice.Destroy()
def elimina_squadra(self, event): """ elimina_squadra(self, event) Invoca il metodo elimina_squadra del controller, per eliminare la squadra selezionata :param event: wx.EVT_BUTTON """ choice = ChoiceMessage(self, 'Sicuro di voler Eliminare la Squadra?') if choice.is_yes(): squadra = self.panel.cb_squadre.GetValue() sq_rimanenti = self.controller.elimina_squadra(squadra) self.update_choice_squadre(sq_rimanenti) InfoMessage(self, '%s Eliminata!' % squadra).get_choice() self.parent.check_menu_squadra() else: choice.Destroy()
def on_giornata(self, event): """ on_giornata(self, event) Seleziona la giornata della quale visualizzare la formazione, se disponibile, oppure crearla da zero. :param event: object wx.EVT_COMBOBOX """ squadra = self.panel.cb_squadre.GetStringSelection() lega = self.panel.cb_leghe.GetStringSelection() giornata = self.panel.cb_giornate.GetStringSelection() rosa = self.controller.get_rosa_squadra(squadra) form, msg = self.controller.get_formazione(lega, squadra, giornata) if not form: InfoMessage(self, msg).get_choice() self.fill_giocatori(form, rosa) self.panel.cb_moduli.Enable()
def on_giornata(self, event): """ on_giornata(self, event) Seleziona la giornata della quale visualizzare la formazione ed invoca il metodo del controller per ottenere il punteggio complessivo. :param event: object wx.EVT_COMBOBOX """ squadra = self.panel.cb_squadre.GetStringSelection() lega = self.panel.cb_leghe.GetStringSelection() giornata = self.panel.cb_giornate.GetStringSelection() form, res, dv, msg = self.controller.get_punteggio( lega, squadra, giornata) if form: self.fill_giocatori(form, res, dv) else: InfoMessage(self, msg).get_choice() self.clean_widgets()
def calcola(self, event): """ calcola(self, event) Calcola i punteggi della giornata selezionata se tutte le formazioni per quella giornata sono state inserite, o restituisce un Alert. :param event: object wx.EVT_BUTTON """ partite = [(self.panel.calendario.GetItem(itemId=row, col=2).GetText(), self.panel.calendario.GetItem(itemId=row, col=3).GetText()) for row in range(self.panel.calendario.GetItemCount())] giornata = self.panel.cb_giornate.GetStringSelection() lega = self.panel.cb_leghe.GetStringSelection() if self.controller.tutte_formazioni_inserite(lega, giornata): punteggi = self.controller.calcola_punteggi( lega, partite, giornata) self.fill_punteggi(punteggi) else: msg = 'Non tutte le formazioni sono state inserite' InfoMessage(self, msg).get_choice()
def cedi(self, event): """ cedi(self, event) Invoca il metodo cedi_giocatore del controller per eliminare il giocatore dalla rosa :param event: wx.EVT_BUTTON """ da_cedere = self.panel.lb_rosa.GetStringSelection() if da_cedere: nome, ruolo = da_cedere.split(' > ') msg = 'Sicuro di voler eliminare %s' % nome if ChoiceMessage(self, msg).is_yes(): restanti = self.controller.cedi_giocatore(nome.strip().upper()) disp = self.controller.giocatori_disponibili( ruolo=ruolo.strip().lower()) self.panel.filtro.SetValue('') self.fill_rosa(restanti) self.fill_disponibili(disp) else: InfoMessage(self, 'nessun giocatore selezionato').get_choice()
def salva_squadra(self, event): """ salva_squadra(self, event) Invoca il metodo del controlle per salvare una squadra. Se il checkbox 'Associa Leghe' e' attivo, la squadra viene associata alle leghe esistenti :param event: wx.EVT_BUTTON """ nome = self.panel.nome.GetValue() allenatore = self.panel.allenatore.GetValue() mercati = self.panel.mercati.GetValue() budget = self.panel.budget.GetValue() if self.panel.option.Get3StateValue(): leghe = self.controller.get_leghe() else: leghe = [] msg = self.controller.salva_nuova_squadra(nome, allenatore, budget, mercati, leghe) self.clear_controls() InfoMessage(self, msg).get_choice() self.parent.check_menus()
def info(update, context): update.message.reply_text(**InfoMessage())
def _serve(self): """ Serve the request """ while True: request = self.zmq_client.receive() method = request['method'] param = request['param'] if method == 'info': (action_space_type, action_space_shape, observation_space_type, observation_space_shape, observation_space_size) = self.__info() logging.info("Action space type " + action_space_type) logging.info("Action space shape " + str(action_space_shape)) logging.info("Observation space type " + observation_space_type) logging.info("Observation space shape " + str(observation_space_shape)) self.zmq_client.send( InfoMessage(action_space_type, action_space_shape, observation_space_type, observation_space_shape, observation_space_size)) elif method == 'dynamics': state = param["state"] action = param["action"] data = self._env.P[state][action] prob = [] next_state = [] reward = [] done = [] for item in data: prob.append(item[0]) next_state.append(item[1]) reward.append(item[2]) done.append(item[3]) self.zmq_client.send( DynamicsMessage(prob=prob, next_state=next_state, reward=reward, done=done)) elif method == 'make': self.make(param['env_name'], param['num_envs']) self.zmq_client.send(MakeMessage()) elif method == 'reset': observation = self.__reset() logging.info(" Observation " + str(observation)) self.zmq_client.send(ResetMessage(observation)) elif method == 'step': if 'render' in param: result = self.__step(np.array(param['actions']), param['render']) else: result = self.__step(np.array(param['actions'])) self.zmq_client.send( StepMessage(result[0], result[1], result[2], result[3]['reward']))