def c_donne_precedente(): global index_pack if index_pack < 2: mess = 'Début de paquet' barre_de_message(mess, messager) else: donne_active = widgets_actifs["donne_active"] index_pack -= 1 donne = Donne(identifiant=pack_actif[index_pack]) donne_active.visible = position_active.visibilite() donne_active.reconfigure(donne) barre_de_message(f'Enchérir la donne n°{index_pack}', messager)
def distribue(self, mise_a_jour=True) : ''' distribue(), distribue(True) ou distribue(False) Modifie la donne en la distribuant aléatoirement et l'affiche (sauf si l'option de mise à jour False est indiquée) ''' donne = Donne() self.vul, self.donneur = donne.vul, donne.donneur for position in Position: self.mains[position].main = donne[position] if mise_a_jour: self.affiche()
def c_donne_suivante(): global index_pack if index_pack == len(pack_actif)-1: mess = 'Dernière donne atteinte' barre_de_message(mess, messager) else: donne_active = widgets_actifs["donne_active"] index_pack += 1 donne = Donne(identifiant=pack_actif[index_pack]) donne_active.visible = position_active.visibilite() donne_active.reconfigure(donne) barre_de_message(f'Enchérir la donne n°{index_pack}', messager)
def validate(event=None): global pack_actif, index_pack try: saisie = int(saisir.get()) except ValueError: mess = 'Entrez un entier stictement positif' barre_de_message(mess, messager) return None if saisie in range(1, 1000): mess = 'Cela prend parfois quelques instants' barre_de_message(mess, messager) messager.update() index_pack = 0 if not sequence_active: pack_actif = [Donne() for i in range(saisie)] else: try : pack_actif = [] for i in range(saisie): donne = sequence_active.distribue() donneur = vardonneur.get() if donneur == 4 : donne.donneur = randint(0,3) else : donne.donneur = Position(donneur) vul = varvul.get() if vul == 4 : donne.vul = randint(0,3) else: donne.vul = Vulnerabilite(vul) pack_actif.append(donne.identifiant()) except InvalidSequence : mess = "Séquence invalide " barre_de_message(mess, messager) clear(menu) barre_de_menu(lm_sequence, menu) clear(fenetre) return None mess = 'Donnes distribuées' barre_de_message(mess, messager) if expert : barre_de_menu(lm_donne, menu) clear(fenetre) else : c_sauvegarder_donnes() else: mess = 'Entrez un entier compris entre 1 et 1000' barre_de_message(mess, messager)
def initialise_encheres(): global donne_actuelle clear(fenetre) fenetre_donne = tk.Frame(fenetre, height=100) fenetre_donne.grid(row=1, columnspan=4) visible = position_active.visibilite() if DEBUG: print(visible) if pack_actif: donne_actuelle = Donne(identifiant=pack_actif[0]) else: mess = "Aucune donne n'a été chargée" barre_de_message(mess, messager) donne_active = Donne_active(donne_actuelle, fenetre_donne, visible) donne_active.affiche() widgets_actifs["donne_active"] = donne_active def select_position(): global position_active position_active = Position(varRad.get()) if DEBUG: print(position_active) donne_active.visible = position_active.visibilite() donne_active.affiche() varRad = tk.IntVar(fenetre) varRad.set(position_active+0) boutons_de_position_des_encheres = [] for pos in Position: b = tk.Radiobutton(fenetre, variable=varRad, text=pos.name(), indicatoron=0, value=int(pos), command=select_position, width=10, anchor='n') b.grid(row=0, column=pos+0, sticky='ew') boutons_de_position_des_encheres.append(b) widgets_actifs['BDPDE'] = boutons_de_position_des_encheres if DEBUG: print(widgets_actifs) mess = 'Choisir son orientation' barre_de_message(mess, messager)
def validate(event=None): global pack_actif, index_pack try: saisie = int(saisir.get()) except ValueError: mess = 'Entrez un entier stictement positif' barre_de_message(mess, messager) return None if saisie in range(1, 1000): mess = 'Cela prend parfois quelques instants' barre_de_message(mess, messager) messager.update() compteur = 0 overflow = 0 pack_actif = [] index_pack = 0 while compteur <= saisie and overflow < 100_000: donne = Donne() overflow += 1 if (not sequence_active) or sequence_active.filtre(donne): compteur += 1 pack_actif.append(donne.identifiant()) if compteur == 0: mess = 'Filtres incompatibles' donne = Donne() pack_actif.append(donne.identifiant()) elif compteur > 0: mess = 'Donnes rares. Uniquement ' + str( compteur) + ' donnes distribuées' else: mess = 'Donnes distribuées' barre_de_message(mess, messager) barre_de_menu(lm_donne, menu) clear(fenetre) else: mess = 'Entrez un entier compris entre 1 et 1000' barre_de_message(mess, messager)
from IOlib import readfiltres, readsequences, writesequences, writefiltres from donnelib import Donne_active DONNETYPE = ("Pack de donne", ".pak") DEBUG = False # True permet la réinitialisations des données sur les filtres # en cas de problème ################################################################ # INITIALISATION DES VARIABLES GLOBALES ################################################################ sequence_active = None # La séquence en cours d'utilisation (vide a priori) donne_actuelle = Donne() # La donne en cours d'affichage pack_actif = [donne_actuelle.identifiant()] # Le pack de donne en cours d'utilisation index_pack = 0 # Index référençant la donne du pack en cours d'utilisation liste_des_filtres = readfiltres() # Les filtres sauvegardés dans le fichier filtres.fil liste_des_sequences = readsequences() # Les séquences sauvegardées dans le fichier sequences.fil position_active = Position(1) # La position natuelle est en Sud