示例#1
0
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)
示例#2
0
 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()
示例#3
0
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)
示例#4
0
 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)
示例#5
0
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)
示例#6
0
 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)
示例#7
0
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