Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
    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()
Ejemplo n.º 8
0
    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()
Ejemplo n.º 9
0
    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()
Ejemplo n.º 10
0
    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()
Ejemplo n.º 11
0
    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()
Ejemplo n.º 12
0
    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()
Ejemplo n.º 13
0
    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()
Ejemplo n.º 14
0
    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()
Ejemplo n.º 15
0
    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()
Ejemplo n.º 16
0
 def info(update, context):
     update.message.reply_text(**InfoMessage())
Ejemplo n.º 17
0
    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']))