Accueil > > > SIMULATION DE LOTO
SIMULATION DE LOTO
Information sur la source
Description
C'est un petit programme permetant de simulé un lancer de loto. Pour cela il fait appel un un module nommé "Loto". Tout le reste, c'est de l'interface graphique et de la gestion des profils des joueurs. Le principe du jeu n'est pas très interressant, je vous l'accorde, mais c'est pour montre un peut la gestion des fichier sous Python, et encore montrer quelques Widget présent dans WxPython. Je met, le code ici pour que ce qui ne sont pas inscrit puisse en profité, mais il faut savoir qu'il ne fonctionnera pas : il vous manquera le module et quelques fichiers et images pour le faire fonctionner correctement.
Source
- import wx
- import Loto
- import os
- import time
- import locale
- import wx.html as html
- import wx.lib.hyperlink as hl
-
-
- provider = wx.SimpleHelpProvider()
- wx.HelpProvider_Set(provider)
-
-
- class Aide(wx.Frame):
- def __init__(self, parent, path):
- wx.Frame.__init__(self, parent, -1,"Aide sur le jeu", size=wx.Size(700,610))
- self.SetIcon(wx.Icon("Loto-data\Icone2.ico", wx.BITMAP_TYPE_ICO ))
-
- self.path = path
-
- self.html = html.HtmlWindow(self, -1, style=wx.NO_FULL_REPAINT_ON_RESIZE)
-
- self.printer = html.HtmlEasyPrinting()
-
- self.box = wx.BoxSizer(wx.VERTICAL)
-
- self.box.Add(self.html, 1, wx.GROW)
- self.SetSizer(self.box)
- self.SetAutoLayout(True)
-
- self.Home(None)
-
-
- def Home(self, event):
- self.html.LoadPage(self.path)
-
- class Dialog_Compare(wx.Dialog):
- def __init__(
- self, parent, ID, title,li1,li11,li2,li22,joueur, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
- ):
-
- pre = wx.PreDialog()
- pre.Create(parent, ID, title, pos, size, style)
-
- self.PostCreate(pre)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- ti=wx.StaticText(self, -1, "Analise des résultats")
-
- texte1=""
- i=0
- while i<len(li1):
- if i==len(li1)-1:
- texte1=texte1 + " et le " + str(li1[i])
- else:
- texte1=texte1 + " le " + str(li1[i]) +','
- i=i+1
-
- t0=wx.StaticText(self, -1, "Vous avez joué pour le premier tirage" + texte1)
-
- texte1=""
- i=0
- while i<len(li11):
- if i==len(li11)-1:
- texte1=texte1 + " et le " + str(li11[i])
- else:
- texte1=texte1 + " le " + str(li11[i]) +','
- i=i+1
-
- t1=wx.StaticText(self, -1, "Les numéro gagnant sont" + texte1)
-
- g1=0
- i=0
- while i<len(li1):
- if li1[i] in li11:
- g1=g1+1
- i=i+1
-
- t2=wx.StaticText(self, -1, "Vous avez " + str(g1) + " numéro(s) en commun")
-
- line1 = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)
-
- texte1=""
- i=0
- while i<len(li2):
- if i==len(li2)-1:
- texte1=texte1 + " et le " + str(li2[i])
- else:
- texte1=texte1 + " le " + str(li2[i]) +','
- i=i+1
-
- t3=wx.StaticText(self, -1, "Vous avez joué pour le deuxième tirage" + texte1)
-
- texte1=""
- i=0
- while i<len(li22):
- if i==len(li22)-1:
- texte1=texte1 + " et le " + str(li22[i])
- else:
- texte1=texte1 + " le " + str(li22[i]) +','
- i=i+1
-
- t4=wx.StaticText(self, -1, "Les numéro gagnant sont" + texte1)
-
- g2=0
- i=0
- while i<len(li2):
- if li2[i] in li22:
- g2=g2+1
- i=i+1
-
- t5=wx.StaticText(self, -1, "Vous avez " + str(g2) + " numéro(s) en commun")
-
- nom='Loto-data\info'+joueur
- f=open(nom,'r')
- l1=f.readline()
- l2=f.readline()
- l3=f.readline()
- l4=f.readline()
- f.close()
- l2=int(l2)+1
- l3=int(l3)+g1+g2
-
- nom='Loto-data\info'+joueur
- f=open(nom,'w')
- locale.setlocale(locale.LC_ALL,'')
- temp=time.strftime('Le %A %d %B %Y ; %H h %M min et %S s')
- contenu=str(l1)+str(l2)+'\n'+str(l3)+'\n'+temp
- f.write(contenu)
- f.close()
-
- sizer.Add(ti,0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(t0,0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(t1,0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(t2,0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(line1,0, wx.GROW|wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(t3,0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(t4,0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(t5,0, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- btnsizer = wx.StdDialogButtonSizer()
-
- if wx.Platform != "__WXMSW__":
- btn = wx.ContextHelpButton(self)
- self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- btn = wx.Button(self, wx.ID_OK,u"OK")
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
-
- self.SetSizer(sizer)
- sizer.Fit(self)
-
-
-
- class Dialog_InfoJoueur(wx.Dialog):
- def __init__(
- self, parent, ID, title,joueur, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
- ):
-
- pre = wx.PreDialog()
- pre.Create(parent, ID, title, pos, size, style)
-
- self.PostCreate(pre)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- ti="Imformation sur le joueur : " + joueur +'\n'
- titre=wx.StaticText(self, -1, ti)
-
-
- fichier="Loto-Data\info"+joueur
- f=open(fichier,"r")
-
- l1=f.readline()
- if l1=="0\n" or l1=="0":
- st=" Normal"
- elif l1=="1\n" or l1=="1":
- st=" Privilégié"
- else:
- st=" Défavorisé"
-
- l2=f.readline()
- nbj=" "+str(l2)
-
- l3=f.readline()
- nbg=" "+str(l3)
-
- j=int(l2)
- g=int(l3)
- nbp=str(j*12-g)
-
- l4=f.readline()
- if l4=="0" or l4=="0\n":
- du=" N'a jamais joué"
- else :
- du= " "+str(l4)
-
- f.close()
-
-
- t0=wx.StaticText(self, -1, "Statut du joueur :\n")
- t1=wx.StaticText(self, -1, "Nombre de jeux :\n")
- t2=wx.StaticText(self, -1, "Nombre de numéro trouvé :\n")
- t3=wx.StaticText(self, -1, "Nombre de numéro perdu :\n")
- t4=wx.StaticText(self, -1, "Dernière utilisation :")
-
- t10=wx.StaticText(self, -1, st)
- t11=wx.StaticText(self, -1, nbj)
- t12=wx.StaticText(self, -1, nbg)
- t13=wx.StaticText(self, -1, nbp)
- t14=wx.StaticText(self, -1, du)
-
-
- sizer.Add(titre, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- box0 = wx.BoxSizer(wx.HORIZONTAL)
-
- box1 = wx.BoxSizer(wx.VERTICAL)
- box1.Add(t0, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
- box1.Add(t1, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
- box1.Add(t2, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
- box1.Add(t3, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
- box1.Add(t4, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
-
- box2 = wx.BoxSizer(wx.VERTICAL)
- box2.Add(t10, 1, wx.ALIGN_LEFT|wx.ALL, 1)
- box2.Add(t11, 1, wx.ALIGN_LEFT|wx.ALL, 1)
- box2.Add(t12, 1, wx.ALIGN_LEFT|wx.ALL, 1)
- box2.Add(t13, 1, wx.ALIGN_LEFT|wx.ALL, 1)
- box2.Add(t14, 1, wx.ALIGN_LEFT|wx.ALL, 1)
-
- box0.Add(box1, 1, wx.ALIGN_CENTRE|wx.ALL, 1)
- box0.Add(box2, 1, wx.ALIGN_CENTRE|wx.ALL, 1)
-
- sizer.Add(box0, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
-
-
-
- btnsizer = wx.StdDialogButtonSizer()
-
- if wx.Platform != "__WXMSW__":
- btn = wx.ContextHelpButton(self)
- self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- btn = wx.Button(self, wx.ID_OK,u"OK")
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
-
- self.SetSizer(sizer)
- sizer.Fit(self)
-
-
-
- class Dialog_Tirage(wx.Dialog):
- def __init__(
- self, parent, ID, title,joueur, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
- ):
-
- self.joueur=joueur
- self.parent=parent
-
- self.numero1=[]
- self.numero2=[]
-
- pre = wx.PreDialog()
- pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
- pre.Create(parent, ID, title, pos, size, style)
-
- self.PostCreate(pre)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- liste=[]
- i=1
- while i<50:
- liste.append(str(i))
- i=i+1
-
-
-
- t1=wx.StaticText(self, -1, "Premier Tirage")
- self.cl1 = wx.CheckListBox(self, -1, (80, 50), wx.DefaultSize, liste)
- self.cl1.SetHelpText("Sélectionner dans cette liste, les 6 numéros que vous voullez jouer")
- self.info1=wx.StaticText(self, -1, "Vous avez choisi 0 numéro(s) sur 6 pour le premier tirage")
- self.info1.SetHelpText("Une fois que vous aurez sélectionné les 12 numéros (6 par tirage - Il y a 2 tirages donc 2 × 6 = 12), le bouton ''Valider'' s'active")
-
- t2=wx.StaticText(self, -1, "Deuxième Tirage")
- self.cl2 = wx.CheckListBox(self, -1, (80, 50), wx.DefaultSize, liste)
- self.cl2.SetHelpText("Sélectionner dans cette liste, les 6 numéros que vous voullez jouer")
-
- self.b = wx.Button(self, -1, "Valider")
- self.b.Enable(False)
- self.b.SetHelpText("Jouer au Loto : Regardez le tirage")
- self.b.SetDefault()
- self.info2=wx.StaticText(self, -1, "Vous avez choisi 0 numéro(s) sur 6 pour le second tirage")
- self.info2.SetHelpText("Une fois que vous aurez sélectionné les 12 numéros (6 par tirage - Il y a 2 tirages donc 2×6 = 12), le bouton ''Valider'' s'active")
-
-
- line1 = wx.StaticLine(self, -1, size=(-1,-1), style=wx.LI_VERTICAL)
-
- t3=wx.StaticText(self, -1, "Dans cette simulation, l'ordre n'a pas d'improtance")
- t3.SetHelpText("Normalement il faut les trouver dans le même ordre mais bon, ici ont va faire l'impasse")
-
- box0 = wx.BoxSizer(wx.HORIZONTAL)
- box1 = wx.BoxSizer(wx.VERTICAL)
- box2 = wx.BoxSizer(wx.VERTICAL)
-
- box1.Add(t1, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
- box1.Add(self.cl1, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
-
- box2.Add(t2, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
- box2.Add(self.cl2, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
-
- box0.Add(box1, 1, wx.ALIGN_LEFT|wx.ALL, 1)
- box0.Add(line1, 1, wx.ALIGN_CENTRE|wx.ALL, 1)
- box0.Add(box2, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
-
- box = wx.StaticBox(self, -1, u"Information")
- bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
- bsizer.Add(self.info1, 0, wx.CENTER, 10)
- bsizer.Add(self.info2, 0, wx.CENTER, 10)
-
- sizer.Add(box0, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(t3, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(bsizer, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(self.b, 0, wx.ALIGN_CENTRE, 5)
-
-
- self.Bind(wx.EVT_CHECKLISTBOX, self.choix1, self.cl1)
- self.Bind(wx.EVT_CHECKLISTBOX, self.choix2, self.cl2)
- self.Bind(wx.EVT_BUTTON, self.valide, self.b)
-
-
- btnsizer = wx.StdDialogButtonSizer()
-
- if wx.Platform != "__WXMSW__":
- btn = wx.ContextHelpButton(self)
- self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- btn = wx.Button(self, wx.ID_CANCEL,u"Annuler")
- btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
-
-
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 4)
-
- sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
-
- self.SetSizer(sizer)
- sizer.Fit(self)
-
- def choix1(self, event):
- index = event.GetSelection()
- label = self.cl1.GetString(index)
- if self.cl1.IsChecked(index):
- self.numero1.append(int(label))
- else:
- self.numero1.remove(int(label))
- if len(self.numero1)==6 and len(self.numero2)==6:
- self.b.Enable(True)
- else:
- self.b.Enable(False)
- texte="Vous avez choisi " + str(len(self.numero1)) + " numéro(s) sur 6 pour le premier tirage"
- self.info1.SetLabel(texte)
-
- def choix2(self, event):
- index = event.GetSelection()
- label = self.cl2.GetString(index)
- if self.cl2.IsChecked(index):
- self.numero2.append(int(label))
- else:
- self.numero2.remove(int(label))
- if len(self.numero1)==6 and len(self.numero2)==6:
- self.b.Enable(True)
- else:
- self.b.Enable(False)
- texte="Vous avez choisi " + str(len(self.numero2)) + " numéro(s) sur 6 pour le second tirage"
- self.info2.SetLabel(texte)
-
- def valide(self, evt):
- self.Destroy()
- nom='Loto-data\info'+self.joueur
- f=open(nom,'r')
- lignen1=f.readline()
- f.close()
- lignen1=int(lignen1)
- Frame.tirage(self.parent,lignen1,self.numero1,self.numero2,None)
-
-
-
- class Dialog_About(wx.Dialog):
- def __init__(
- self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
- ):
- pre = wx.PreDialog()
- pre.Create(parent, ID, title, pos, size, style)
-
- self.PostCreate(pre)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- bmp = wx.Bitmap("Loto-data\Aeragroup.bmp", wx.BITMAP_TYPE_BMP)
- image=wx.StaticBitmap(self, -1, bmp, (80, 50), (bmp.GetWidth(), bmp.GetHeight()))
-
-
-
- textaprop=u"""
- À propos de ce programme :
- _____________________________
-
- Créé par Aéra Group pour code-SourceS.
- Version 1.0 ; Licence : Libre. Vous pouvez modifier ce que vous souhaité."""
-
- label = wx.StaticText(self, -1, textaprop)
- hyper = hl.HyperLinkCtrl(self, wx.ID_ANY, "Source déposé sur Python-France",
- URL="http://www.pythonfrance.com/")
- sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(hyper, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- sizer.Add(image, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- btnsizer = wx.StdDialogButtonSizer()
-
- if wx.Platform != "__WXMSW__":
- btn = wx.ContextHelpButton(self)
- self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- btn = wx.Button(self, wx.ID_OK,u"OK")
- btn.SetDefault()
-
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
-
- self.SetSizer(sizer)
- sizer.Fit(self)
-
-
-
- class Dialog_Joueur(wx.Dialog):
- def __init__(
- self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
- ):
- pre = wx.PreDialog()
- pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
- pre.Create(parent, ID, title, pos, size, style)
-
- self.PostCreate(pre)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- text = wx.StaticText(self, -1, "Le choix d'un joueur permet d'enregister les parramètres et les résultats d'un joueur")
- text.SetSize(text.GetBestSize())
- text.SetHelpText("Le joueur doit être déja enregistrer")
-
- f=open("Loto-data\Utilisateur.txt","r")
- l1=f.readline()
- l1=eval(l1)
- f.close()
- self.joueur=l1[0]
-
- self.ch = wx.Choice(self, -1, (400, 50), choices = l1)
- self.ch.SetSelection(0)
- self.ch.SetHelpText("Permet de sélectionner un joueur déja enregistrer")
- b = wx.Button(self, -1, "Sélectionner ce joueur")
- b.SetHelpText("Valide votre choix")
- b.SetDefault()
-
- sizer.Add(text, 0, wx.ALIGN_CENTRE|wx.ALL|wx.TOP, 5)
- sizer.Add(self.ch, 10, wx.ALIGN_CENTRE|wx.ALL|wx.GROW, 10)
- sizer.Add(b, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- self.Bind(wx.EVT_CHOICE, self.choix, self.ch)
- self.Bind(wx.EVT_BUTTON, self.valide, b)
-
-
-
- btnsizer = wx.StdDialogButtonSizer()
-
- if wx.Platform != "__WXMSW__":
- btn = wx.ContextHelpButton(self)
- self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- btn = wx.Button(self, wx.ID_CANCEL,u"Annuler")
- btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
-
-
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
-
- self.SetSizer(sizer)
- sizer.Fit(self)
-
- def choix(self, event):
- self.joueur=event.GetString()
-
- def valide(self, evt):
- Frame.nom_joueur(frame,self.joueur.encode("windows-1252"))
- self.Destroy()
- dia=wx.MessageDialog(self, "Joueur actuel : " + self.joueur.encode("windows-1252"), caption = u"Confirmation", style = wx.OK|wx.ICON_INFORMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
-
-
-
- class Dialog_Nouveau(wx.Dialog):
- def __init__(
- self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
- ):
- pre = wx.PreDialog()
- pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
- pre.Create(parent, ID, title, pos, size, style)
-
- self.PostCreate(pre)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- box = wx.BoxSizer(wx.HORIZONTAL)
-
- label = wx.StaticText(self, -1, "Enter le nom du nouveau joueur")
- label.SetHelpText("Un nouveau joueur permet d'enregistrer son score")
- box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- self.text = wx.TextCtrl(self, -1, "", size=(180,-1))
- self.text.SetHelpText("Taper ici son nom. N'utilisez pas un nom déja utilisé même en jouant avec les majuscules")
- box.Add(self.text, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- b = wx.Button(self, -1, "Ajouter ce joueur")
- b.SetHelpText("Ce bouton permet de créé un nouveau joueur")
- b.SetDefault()
-
- sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
- sizer.Add(b, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- self.Bind(wx.EVT_BUTTON, self.valide, b)
-
-
-
- btnsizer = wx.StdDialogButtonSizer()
-
- if wx.Platform != "__WXMSW__":
- btn = wx.ContextHelpButton(self)
- self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- btn = wx.Button(self, wx.ID_CANCEL,u"Fermer cette fenêtre")
- btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
-
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
-
- self.SetSizer(sizer)
- sizer.Fit(self)
-
- def valide(self,evt):
- if self.text.GetValue()=="":
- dia=wx.MessageDialog(self, "Vous n'avez rien inscrit dans le champs d'enter", caption = u"Pas de nom", style = wx.OK|wx.ICON_ERROR,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- else:
- try:
- f=open("Loto-data\Utilisateur.txt","r")
- except:
- dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque le fichier Utilisateur.txt.", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- self.Destroy()
- else:
- l1=f.readline()
- l1=eval(l1)
- f.close()
- i=0
- l2=[]
- while i<len(l1):
- l2.append(l1[i].lower())
- i=i+1
- if self.text.GetValue().lower() in l2:
- dia=wx.MessageDialog(self, "Ce nom existe déja. Chosiser en un autre", caption = u"Nom déja enregister", style = wx.OK|wx.wx.ICON_EXCLAMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- elif ' \ '.strip() in self.text.GetValue() or ' / '.strip() in self.text.GetValue() or ':' in self.text.GetValue() or '*' in self.text.GetValue() or '?' in self.text.GetValue() or '"' in self.text.GetValue() or '<' in self.text.GetValue() or '>' in self.text.GetValue() or '|' in self.text.GetValue():
- dia=wx.MessageDialog(self, 'Ce nom comporte un carractère interdit.\nVoici la liste des carractères interdit : / \ : * ? " < > |', caption = u"Carractère interdit", style = wx.OK|wx.wx.ICON_EXCLAMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- else:
- l1.append(self.text.GetValue())
- l1=str(l1)
- f=open("Loto-data\Utilisateur.txt","w")
- f.write(l1.encode("windows-1252"))
- f.close()
-
- nom="Loto-data\info"+self.text.GetValue()
- f=open(nom,"w")
- f.write('0\n0\n0\n0')
- f.close()
- dia=wx.MessageDialog(self, "Le joueur " + self.text.GetValue().encode("windows-1252") + " à bien éait ajouter", caption = u"Confirmation", style = wx.OK|wx.ICON_INFORMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- self.text.Clear()
-
-
- class Dialog_Suprime(wx.Dialog):
- def __init__(
- self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE
- ):
- pre = wx.PreDialog()
- pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
- pre.Create(parent, ID, title, pos, size, style)
-
- self.PostCreate(pre)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- text = wx.StaticText(self, -1, "ATTENTION : LA SUPPRESSION EST DÉFINITIVE ET LA RÉCUPÉRATION DES FICHIER SUPPRIMÉ EST IMPOSSIBLE")
- text.SetSize(text.GetBestSize())
- text.SetHelpText("La suppression entraine la destruction des fichiers de sauvegardes")
-
- f=open("Loto-data\Utilisateur.txt","r")
- l1=f.readline()
- l1=eval(l1)
- f.close()
- self.joueur=l1[0]
-
- self.ch = wx.Choice(self, -1, (400, 50), choices = l1)
- self.ch.SetSelection(0)
- self.ch.SetHelpText("Permet de sélectionner le joueur à supprimer")
- b = wx.Button(self, -1, "Supprimer ce joueur")
- b.SetHelpText("Permet de valider votre choix")
-
- sizer.Add(text, 0, wx.ALIGN_CENTRE|wx.ALL|wx.TOP, 5)
- sizer.Add(self.ch, 10, wx.ALIGN_CENTRE|wx.ALL|wx.GROW, 10)
- sizer.Add(b, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
- self.Bind(wx.EVT_CHOICE, self.choix, self.ch)
- self.Bind(wx.EVT_BUTTON, self.valide, b)
-
-
-
- btnsizer = wx.StdDialogButtonSizer()
-
- if wx.Platform != "__WXMSW__":
- btn = wx.ContextHelpButton(self)
- self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- btn = wx.Button(self, wx.ID_CANCEL,u"Annuler")
- btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
- btn.SetDefault()
-
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
-
- sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
-
- self.SetSizer(sizer)
- sizer.Fit(self)
-
- def choix(self, event):
- self.joueur = event.GetString()
-
- def valide(self,evt):
- dia=wx.MessageDialog(self, 'Êtes vous sûr de vouloir supprimer le joueur ' + self.joueur.encode("windows-1252") + ' ?', caption = u"Confirmation", style = wx.YES_NO|wx.NO_DEFAULT|wx.ICON_QUESTION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- if valeur == wx.ID_YES:
- f=open("Loto-data\Utilisateur.txt","r")
- l1=f.readline()
- l1=eval(l1)
- f.close()
-
- l1.remove(self.joueur)
-
- f=open("Loto-data\Utilisateur.txt","w")
- l1=str(l1).encode("windows-1252")
- f.write(l1)
- f.close()
-
- nom="Loto-data\info"+self.joueur
- try:
- os.remove(nom)
- except:
- pass
- dia=wx.MessageDialog(self, "Le joueur " + self.joueur.encode("windows-1252") + ' a bien été supprimer', caption = u"Confirmation de suppression", style = wx.OK|wx.ICON_INFORMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
-
- j=Frame.renvoie_joueur(frame)
- if self.joueur.encode("windows-1252")==j:
- Frame.nom_joueur(frame,'[Pas de joueur sélectionné]')
- self.Destroy()
- else:
- dia=wx.MessageDialog(self, "La procédure de suppression a été annulé", caption = u"Opération annuler", style = wx.OK|wx.ICON_INFORMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
-
-
- class Frame(wx.Frame):
- """Affiche une fenêtre"""
- def __init__(self, parent, title):
- wx.Frame.__init__(self, parent, -1, title, size=(800, 700))
- self.SetIcon(wx.Icon("Loto-data\Icone.ico", wx.BITMAP_TYPE_ICO ))
- self.Bind(wx.EVT_CLOSE, self.quitter)
-
- menuBar = wx.MenuBar()
-
- menu = wx.Menu()
- menu.Append(11, "Nouveau\tCtrl+N", "Ouvrir une nouvelle fenêtre")
- menu.Append(12, "Effectuer un tirage", "Joué au Loto")
- menu.AppendSeparator()
- menu.Append(13, "Quitter\tAlt-F4", "Quitter le programme")
-
- joueur = wx.Menu()
- joueur.Append(21, "Choisir un/Changer de joueur", "Chosir un joueur pour l'enregistrement des paramètres")
- joueur.Append(22, "Ajouter un nouveau joueur", "Ajouter un joueur à la base de donnée")
- joueur.Append(23, "Supprimer un joueur", "Supprimer un joueur à la base de donnée ainsi que ses sauvegardes")
- joueur.AppendSeparator()
- joueur.Append(24, "Voir les statistiques de ce joueur", "Voir ne nombre de jeux, de victoires et de défaites")
-
- aide = wx.Menu()
- aide.Append(31, "Aide\tF1", "Permet d'optenir de l'aide sur le jeu")
- aide.Append(32, "À propos de ...\tF2","Information sur le programme")
-
-
- self.Bind(wx.EVT_MENU, self.nouveau, id=11)
- self.Bind(wx.EVT_MENU, self.pre_tirage, id=12)
- self.Bind(wx.EVT_MENU, self.quitter, id=13)
- self.Bind(wx.EVT_MENU, self.definir_joueur, id=21)
- self.Bind(wx.EVT_MENU, self.nouveau_joueur, id=22)
- self.Bind(wx.EVT_MENU, self.supprimer_joueur, id=23)
- self.Bind(wx.EVT_MENU, self.info_joueur, id=24)
- self.Bind(wx.EVT_MENU, self.aide, id=31)
- self.Bind(wx.EVT_MENU, self.about, id=32)
-
-
- menuBar.Append(menu, "Fichier")
- menuBar.Append(joueur, "Action Joueur")
- menuBar.Append(aide, "Aide")
- self.SetMenuBar(menuBar)
-
- self.CreateStatusBar()
-
-
- self.joueur_actuel='[Pas de joueur sélectionné]'
- self.nb_tirage=0
-
-
- panel = wx.Panel(self)
-
- text = wx.StaticText(panel, -1, "Tirage du Loto")
- text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
- text.SetSize(text.GetBestSize())
- btn = wx.Button(panel, -1, "Quitter")
- funbtn = wx.Button(panel, -1, "Effectuer un tirage")
- self.t = wx.TextCtrl(panel, -1,"",size=(700, 400), style=wx.TE_MULTILINE|wx.TE_READONLY)
-
- self.Bind(wx.EVT_BUTTON, self.quitter, btn)
- self.Bind(wx.EVT_BUTTON, self.pre_tirage, funbtn)
-
- sizer = wx.BoxSizer(wx.VERTICAL)
- sizer.Add(text, 0, wx.ALL|wx.CENTER, 10)
- sizer.Add(btn, 0, wx.ALL|wx.CENTER, 10)
- sizer.Add(funbtn, 0, wx.ALL|wx.CENTER, 10)
- sizer.Add(self.t, 0, wx.ALL|wx.CENTER, 10)
- panel.SetSizer(sizer)
- panel.Layout()
- self.Center()
-
- funbtn.SetDefault()
-
-
-
-
- def quitter(self, evt):
- dlg = wx.MessageDialog(self, 'Êtes vous sûr de voulloir quitter "Le trirage du Loto"' ,'Quitter ce programme', wx.YES_NO|wx.ICON_QUESTION)
- reponse = dlg.ShowModal()
- if reponse==wx.ID_YES:
- self.Destroy()
-
- def pre_tirage(self,evt):
- if self.joueur_actuel== "[Pas de joueur sélectionné]":
- a=self.definir_joueur(None)
- if a!=wx.ID_CANCEL:
- dlg = Dialog_Tirage(self, -1, "Sélection des numéros",self.joueur_actuel, size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
- else:
- dlg = Dialog_Tirage(self, -1, "Sélection des numéros",self.joueur_actuel, size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
-
- def tirage(self,triche,boules_tire1,boules_tire2,evt=None):
- self.nb_tirage=self.nb_tirage+1
- texte="Boujours est bienvenu au tirage du loto !!!\n\n\nEt voici le premier tirage\n"
-
- if triche==2:
- Loto.tirage(boules_tire1)
- boules_tire11=[]
- i=0
- while i<len(boules_tire1):
- boules_tire11.append(boules_tire1[i])
- i=i+1
- del boules_tire1[6:len(boules_tire1)]
- del boules_tire11[0:6]
- elif triche==1:
- Loto.tirage(boules_tire1)
- boules_tire11=boules_tire1
- del boules_tire11[6:len(boules_tire1)]
- else:
- boules_tire11=[]
- Loto.tirage(boules_tire11)
-
- i=0
- texte1=""
- while i<len(boules_tire11):
- if i==len(boules_tire11)-1:
- texte1=texte1 + " et le numéro complémentaire, le " + str(boules_tire11[i])
- else:
- texte1=texte1 + " le " + str(boules_tire11[i]) +','
- i=i+1
- texte=texte+"Les numéro gagnant pour ce premier tirage sont le :" + texte1 + "\n\n"
-
- texte=texte+"Continuons avec le deuxième tirage\n"
-
-
- if triche==2:
- Loto.tirage(boules_tire2)
- boules_tire22=[]
- i=0
- while i<len(boules_tire2):
- boules_tire22.append(boules_tire2[i])
- i=i+1
- del boules_tire2[6:len(boules_tire2)]
- del boules_tire22[0:6]
- elif triche==1:
- Loto.tirage(boules_tire2)
- boules_tire22=boules_tire2
- del boules_tire22[6:len(boules_tire2)]
- else:
- boules_tire22=[]
- Loto.tirage(boules_tire22)
-
- i=0
- texte2=""
- while i<len(boules_tire22):
- if i==len(boules_tire22)-1:
- texte2=texte2 + " et le numéro complémentaire, le " + str(boules_tire22[i])
- else:
- texte2=texte2+ " le " + str(boules_tire22[i]) +','
- i=i+1
- texte=texte+"Les numéro gagnant pour ce deuxième tirage sont le :" + texte2 + "\n\n"
- texte=texte+"_______________________________________________________________________________________________________________\n\n"
-
-
- self.t.SetInsertionPoint(len(self.t.GetValue())+8*self.nb_tirage)
- self.t.WriteText(texte)
-
-
-
- dlg = Dialog_Compare(self, -1, "Résultat et analyse",boules_tire1,boules_tire11,boules_tire2,boules_tire22,self.joueur_actuel, size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
-
-
- def definir_joueur(self, evt):
- try:
- f=open("Loto-data\Utilisateur.txt","r")
- f.close()
- except:
- dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque le fichier Utilisateur.txt", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- return wx.ID_CANCEL
- else:
- f=open("Loto-data\Utilisateur.txt","r")
- l1=f.readline()
- f.close()
- if l1=='[]':
- dia=wx.MessageDialog(self, """Il n'y a aucun joueur enregistré.\nPour enregistrer un joueur allez dans le menu "Action Joueur" et "Ajouter un nouveau joueur" """, caption = u"Pas de joueur", style = wx.OK|wx.ICON_INFORMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- return wx.ID_CANCEL
- else:
- dlg = Dialog_Joueur(self, -1, "Sélectionner un joueur", size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
- return val
-
- def nouveau_joueur(self, evt):
- dlg = Dialog_Nouveau(self, -1, "Ajouter un nouveau joueur", size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
-
- def supprimer_joueur(self, evt):
- try:
- f=open("Loto-data\Utilisateur.txt","r")
- f.close()
- except:
- dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque le fichier Utilisateur.txt", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- else:
- f=open("Loto-data\Utilisateur.txt","r")
- l1=f.readline()
- f.close()
- if l1=='[]':
- dia=wx.MessageDialog(self, """Il n'y a aucun joueur enregistré.\nPour enregistrer un joueur allez dans le menu "Action Joueur" et "Ajouter un nouveau joueur" """, caption = u"Pas de joueur", style = wx.OK|wx.ICON_INFORMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- else:
- dlg = Dialog_Suprime(self, -1, "Supprimer un joueur", size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
-
- def aide (self, evt):
- aide = Aide(self,"Aide.htm")
- aide.Show(True)
-
- def about (self, evt):
- dlg = Dialog_About(self, -1, "À propos de ...", size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
-
- def nom_joueur(self,joueur):
- if joueur == "[Pas de joueur sélectionné]":
- self.SetTitle("Tirage du Loto - [Pas de joueur sélectionné]")
- self.joueur_actuel="[Pas de joueur sélectionné]"
- else :
- self.SetTitle("Tirage du Loto - [Joueur : " + joueur + "]")
- self.joueur_actuel=joueur
-
- def renvoie_joueur(self):
- return self.joueur_actuel
-
- def info_joueur(self,evt):
- if self.joueur_actuel== "[Pas de joueur sélectionné]":
- dia=wx.MessageDialog(self, "Il n'y a pas de joueur sélectionné", caption = u"Information - Pas de joueur sélectionnée", style = wx.OK|wx.ICON_INFORMATION,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- else:
- nom='Loto-data\info'+ self.joueur_actuel
- try :
- f=open(nom,"r")
- except:
- dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque un fichier.", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
- pos = wx.DefaultPosition)
- valeur = dia.ShowModal()
- else:
- f.close()
- dlg = Dialog_InfoJoueur(self, -1, "Information joueur",self.joueur_actuel, size=(350, 200),
- style = wx.DEFAULT_DIALOG_STYLE)
- dlg.CenterOnScreen()
- val = dlg.ShowModal()
-
- def nouveau(self,evt):
- frame = Frame(None, "Tirage du Loto - [Pas de joueur sélectionné]")
- frame.Show(True)
-
- class SplashScreen(wx.SplashScreen):
- def __init__(self):
- bmp = wx.Image("Loto-data\Image.bmp").ConvertToBitmap()
- wx.SplashScreen.__init__(self, bmp,
- wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,
- 2000, None, -1)
- self.Bind(wx.EVT_CLOSE, self.OnClose)
- self.fc = wx.FutureCall(1500, self.ShowMain)
-
-
- def OnClose(self, evt):
- evt.Skip()
- self.Hide()
- if self.fc.IsRunning():
- self.fc.Stop()
- self.ShowMain()
-
- def ShowMain(self):
- global frame
- frame = Frame(None, "Tirage du Loto - [Pas de joueur sélectionné]")
- frame.Show(True)
- return True
-
- class MyApp(wx.App):
- def OnInit(self):
- splash = SplashScreen()
- splash.Show()
- return True
-
- app = MyApp(redirect=True)
- app.MainLoop()
import wx
import Loto
import os
import time
import locale
import wx.html as html
import wx.lib.hyperlink as hl
provider = wx.SimpleHelpProvider()
wx.HelpProvider_Set(provider)
class Aide(wx.Frame):
def __init__(self, parent, path):
wx.Frame.__init__(self, parent, -1,"Aide sur le jeu", size=wx.Size(700,610))
self.SetIcon(wx.Icon("Loto-data\Icone2.ico", wx.BITMAP_TYPE_ICO ))
self.path = path
self.html = html.HtmlWindow(self, -1, style=wx.NO_FULL_REPAINT_ON_RESIZE)
self.printer = html.HtmlEasyPrinting()
self.box = wx.BoxSizer(wx.VERTICAL)
self.box.Add(self.html, 1, wx.GROW)
self.SetSizer(self.box)
self.SetAutoLayout(True)
self.Home(None)
def Home(self, event):
self.html.LoadPage(self.path)
class Dialog_Compare(wx.Dialog):
def __init__(
self, parent, ID, title,li1,li11,li2,li22,joueur, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE
):
pre = wx.PreDialog()
pre.Create(parent, ID, title, pos, size, style)
self.PostCreate(pre)
sizer = wx.BoxSizer(wx.VERTICAL)
ti=wx.StaticText(self, -1, "Analise des résultats")
texte1=""
i=0
while i<len(li1):
if i==len(li1)-1:
texte1=texte1 + " et le " + str(li1[i])
else:
texte1=texte1 + " le " + str(li1[i]) +','
i=i+1
t0=wx.StaticText(self, -1, "Vous avez joué pour le premier tirage" + texte1)
texte1=""
i=0
while i<len(li11):
if i==len(li11)-1:
texte1=texte1 + " et le " + str(li11[i])
else:
texte1=texte1 + " le " + str(li11[i]) +','
i=i+1
t1=wx.StaticText(self, -1, "Les numéro gagnant sont" + texte1)
g1=0
i=0
while i<len(li1):
if li1[i] in li11:
g1=g1+1
i=i+1
t2=wx.StaticText(self, -1, "Vous avez " + str(g1) + " numéro(s) en commun")
line1 = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)
texte1=""
i=0
while i<len(li2):
if i==len(li2)-1:
texte1=texte1 + " et le " + str(li2[i])
else:
texte1=texte1 + " le " + str(li2[i]) +','
i=i+1
t3=wx.StaticText(self, -1, "Vous avez joué pour le deuxième tirage" + texte1)
texte1=""
i=0
while i<len(li22):
if i==len(li22)-1:
texte1=texte1 + " et le " + str(li22[i])
else:
texte1=texte1 + " le " + str(li22[i]) +','
i=i+1
t4=wx.StaticText(self, -1, "Les numéro gagnant sont" + texte1)
g2=0
i=0
while i<len(li2):
if li2[i] in li22:
g2=g2+1
i=i+1
t5=wx.StaticText(self, -1, "Vous avez " + str(g2) + " numéro(s) en commun")
nom='Loto-data\info'+joueur
f=open(nom,'r')
l1=f.readline()
l2=f.readline()
l3=f.readline()
l4=f.readline()
f.close()
l2=int(l2)+1
l3=int(l3)+g1+g2
nom='Loto-data\info'+joueur
f=open(nom,'w')
locale.setlocale(locale.LC_ALL,'')
temp=time.strftime('Le %A %d %B %Y ; %H h %M min et %S s')
contenu=str(l1)+str(l2)+'\n'+str(l3)+'\n'+temp
f.write(contenu)
f.close()
sizer.Add(ti,0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(t0,0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(t1,0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(t2,0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(line1,0, wx.GROW|wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(t3,0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(t4,0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(t5,0, wx.ALIGN_CENTRE|wx.ALL, 5)
btnsizer = wx.StdDialogButtonSizer()
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
btn = wx.Button(self, wx.ID_OK,u"OK")
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
sizer.Fit(self)
class Dialog_InfoJoueur(wx.Dialog):
def __init__(
self, parent, ID, title,joueur, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE
):
pre = wx.PreDialog()
pre.Create(parent, ID, title, pos, size, style)
self.PostCreate(pre)
sizer = wx.BoxSizer(wx.VERTICAL)
ti="Imformation sur le joueur : " + joueur +'\n'
titre=wx.StaticText(self, -1, ti)
fichier="Loto-Data\info"+joueur
f=open(fichier,"r")
l1=f.readline()
if l1=="0\n" or l1=="0":
st=" Normal"
elif l1=="1\n" or l1=="1":
st=" Privilégié"
else:
st=" Défavorisé"
l2=f.readline()
nbj=" "+str(l2)
l3=f.readline()
nbg=" "+str(l3)
j=int(l2)
g=int(l3)
nbp=str(j*12-g)
l4=f.readline()
if l4=="0" or l4=="0\n":
du=" N'a jamais joué"
else :
du= " "+str(l4)
f.close()
t0=wx.StaticText(self, -1, "Statut du joueur :\n")
t1=wx.StaticText(self, -1, "Nombre de jeux :\n")
t2=wx.StaticText(self, -1, "Nombre de numéro trouvé :\n")
t3=wx.StaticText(self, -1, "Nombre de numéro perdu :\n")
t4=wx.StaticText(self, -1, "Dernière utilisation :")
t10=wx.StaticText(self, -1, st)
t11=wx.StaticText(self, -1, nbj)
t12=wx.StaticText(self, -1, nbg)
t13=wx.StaticText(self, -1, nbp)
t14=wx.StaticText(self, -1, du)
sizer.Add(titre, wx.ALIGN_CENTRE|wx.ALL, 5)
box0 = wx.BoxSizer(wx.HORIZONTAL)
box1 = wx.BoxSizer(wx.VERTICAL)
box1.Add(t0, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
box1.Add(t1, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
box1.Add(t2, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
box1.Add(t3, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
box1.Add(t4, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
box2 = wx.BoxSizer(wx.VERTICAL)
box2.Add(t10, 1, wx.ALIGN_LEFT|wx.ALL, 1)
box2.Add(t11, 1, wx.ALIGN_LEFT|wx.ALL, 1)
box2.Add(t12, 1, wx.ALIGN_LEFT|wx.ALL, 1)
box2.Add(t13, 1, wx.ALIGN_LEFT|wx.ALL, 1)
box2.Add(t14, 1, wx.ALIGN_LEFT|wx.ALL, 1)
box0.Add(box1, 1, wx.ALIGN_CENTRE|wx.ALL, 1)
box0.Add(box2, 1, wx.ALIGN_CENTRE|wx.ALL, 1)
sizer.Add(box0, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
btnsizer = wx.StdDialogButtonSizer()
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
btn = wx.Button(self, wx.ID_OK,u"OK")
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
sizer.Fit(self)
class Dialog_Tirage(wx.Dialog):
def __init__(
self, parent, ID, title,joueur, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE
):
self.joueur=joueur
self.parent=parent
self.numero1=[]
self.numero2=[]
pre = wx.PreDialog()
pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
pre.Create(parent, ID, title, pos, size, style)
self.PostCreate(pre)
sizer = wx.BoxSizer(wx.VERTICAL)
liste=[]
i=1
while i<50:
liste.append(str(i))
i=i+1
t1=wx.StaticText(self, -1, "Premier Tirage")
self.cl1 = wx.CheckListBox(self, -1, (80, 50), wx.DefaultSize, liste)
self.cl1.SetHelpText("Sélectionner dans cette liste, les 6 numéros que vous voullez jouer")
self.info1=wx.StaticText(self, -1, "Vous avez choisi 0 numéro(s) sur 6 pour le premier tirage")
self.info1.SetHelpText("Une fois que vous aurez sélectionné les 12 numéros (6 par tirage - Il y a 2 tirages donc 2 × 6 = 12), le bouton ''Valider'' s'active")
t2=wx.StaticText(self, -1, "Deuxième Tirage")
self.cl2 = wx.CheckListBox(self, -1, (80, 50), wx.DefaultSize, liste)
self.cl2.SetHelpText("Sélectionner dans cette liste, les 6 numéros que vous voullez jouer")
self.b = wx.Button(self, -1, "Valider")
self.b.Enable(False)
self.b.SetHelpText("Jouer au Loto : Regardez le tirage")
self.b.SetDefault()
self.info2=wx.StaticText(self, -1, "Vous avez choisi 0 numéro(s) sur 6 pour le second tirage")
self.info2.SetHelpText("Une fois que vous aurez sélectionné les 12 numéros (6 par tirage - Il y a 2 tirages donc 2×6 = 12), le bouton ''Valider'' s'active")
line1 = wx.StaticLine(self, -1, size=(-1,-1), style=wx.LI_VERTICAL)
t3=wx.StaticText(self, -1, "Dans cette simulation, l'ordre n'a pas d'improtance")
t3.SetHelpText("Normalement il faut les trouver dans le même ordre mais bon, ici ont va faire l'impasse")
box0 = wx.BoxSizer(wx.HORIZONTAL)
box1 = wx.BoxSizer(wx.VERTICAL)
box2 = wx.BoxSizer(wx.VERTICAL)
box1.Add(t1, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
box1.Add(self.cl1, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
box2.Add(t2, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
box2.Add(self.cl2, 0, wx.ALIGN_CENTRE|wx.ALL, 1)
box0.Add(box1, 1, wx.ALIGN_LEFT|wx.ALL, 1)
box0.Add(line1, 1, wx.ALIGN_CENTRE|wx.ALL, 1)
box0.Add(box2, 1, wx.ALIGN_RIGHT|wx.ALL, 1)
box = wx.StaticBox(self, -1, u"Information")
bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
bsizer.Add(self.info1, 0, wx.CENTER, 10)
bsizer.Add(self.info2, 0, wx.CENTER, 10)
sizer.Add(box0, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(t3, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(bsizer, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(self.b, 0, wx.ALIGN_CENTRE, 5)
self.Bind(wx.EVT_CHECKLISTBOX, self.choix1, self.cl1)
self.Bind(wx.EVT_CHECKLISTBOX, self.choix2, self.cl2)
self.Bind(wx.EVT_BUTTON, self.valide, self.b)
btnsizer = wx.StdDialogButtonSizer()
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
btn = wx.Button(self, wx.ID_CANCEL,u"Annuler")
btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 4)
sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
sizer.Fit(self)
def choix1(self, event):
index = event.GetSelection()
label = self.cl1.GetString(index)
if self.cl1.IsChecked(index):
self.numero1.append(int(label))
else:
self.numero1.remove(int(label))
if len(self.numero1)==6 and len(self.numero2)==6:
self.b.Enable(True)
else:
self.b.Enable(False)
texte="Vous avez choisi " + str(len(self.numero1)) + " numéro(s) sur 6 pour le premier tirage"
self.info1.SetLabel(texte)
def choix2(self, event):
index = event.GetSelection()
label = self.cl2.GetString(index)
if self.cl2.IsChecked(index):
self.numero2.append(int(label))
else:
self.numero2.remove(int(label))
if len(self.numero1)==6 and len(self.numero2)==6:
self.b.Enable(True)
else:
self.b.Enable(False)
texte="Vous avez choisi " + str(len(self.numero2)) + " numéro(s) sur 6 pour le second tirage"
self.info2.SetLabel(texte)
def valide(self, evt):
self.Destroy()
nom='Loto-data\info'+self.joueur
f=open(nom,'r')
lignen1=f.readline()
f.close()
lignen1=int(lignen1)
Frame.tirage(self.parent,lignen1,self.numero1,self.numero2,None)
class Dialog_About(wx.Dialog):
def __init__(
self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE
):
pre = wx.PreDialog()
pre.Create(parent, ID, title, pos, size, style)
self.PostCreate(pre)
sizer = wx.BoxSizer(wx.VERTICAL)
bmp = wx.Bitmap("Loto-data\Aeragroup.bmp", wx.BITMAP_TYPE_BMP)
image=wx.StaticBitmap(self, -1, bmp, (80, 50), (bmp.GetWidth(), bmp.GetHeight()))
textaprop=u"""
À propos de ce programme :
_____________________________
Créé par Aéra Group pour code-SourceS.
Version 1.0 ; Licence : Libre. Vous pouvez modifier ce que vous souhaité."""
label = wx.StaticText(self, -1, textaprop)
hyper = hl.HyperLinkCtrl(self, wx.ID_ANY, "Source déposé sur Python-France",
URL="http://www.pythonfrance.com/")
sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(hyper, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(image, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
btnsizer = wx.StdDialogButtonSizer()
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
btn = wx.Button(self, wx.ID_OK,u"OK")
btn.SetDefault()
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
sizer.Fit(self)
class Dialog_Joueur(wx.Dialog):
def __init__(
self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE
):
pre = wx.PreDialog()
pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
pre.Create(parent, ID, title, pos, size, style)
self.PostCreate(pre)
sizer = wx.BoxSizer(wx.VERTICAL)
text = wx.StaticText(self, -1, "Le choix d'un joueur permet d'enregister les parramètres et les résultats d'un joueur")
text.SetSize(text.GetBestSize())
text.SetHelpText("Le joueur doit être déja enregistrer")
f=open("Loto-data\Utilisateur.txt","r")
l1=f.readline()
l1=eval(l1)
f.close()
self.joueur=l1[0]
self.ch = wx.Choice(self, -1, (400, 50), choices = l1)
self.ch.SetSelection(0)
self.ch.SetHelpText("Permet de sélectionner un joueur déja enregistrer")
b = wx.Button(self, -1, "Sélectionner ce joueur")
b.SetHelpText("Valide votre choix")
b.SetDefault()
sizer.Add(text, 0, wx.ALIGN_CENTRE|wx.ALL|wx.TOP, 5)
sizer.Add(self.ch, 10, wx.ALIGN_CENTRE|wx.ALL|wx.GROW, 10)
sizer.Add(b, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
self.Bind(wx.EVT_CHOICE, self.choix, self.ch)
self.Bind(wx.EVT_BUTTON, self.valide, b)
btnsizer = wx.StdDialogButtonSizer()
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
btn = wx.Button(self, wx.ID_CANCEL,u"Annuler")
btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
sizer.Fit(self)
def choix(self, event):
self.joueur=event.GetString()
def valide(self, evt):
Frame.nom_joueur(frame,self.joueur.encode("windows-1252"))
self.Destroy()
dia=wx.MessageDialog(self, "Joueur actuel : " + self.joueur.encode("windows-1252"), caption = u"Confirmation", style = wx.OK|wx.ICON_INFORMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
class Dialog_Nouveau(wx.Dialog):
def __init__(
self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE
):
pre = wx.PreDialog()
pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
pre.Create(parent, ID, title, pos, size, style)
self.PostCreate(pre)
sizer = wx.BoxSizer(wx.VERTICAL)
box = wx.BoxSizer(wx.HORIZONTAL)
label = wx.StaticText(self, -1, "Enter le nom du nouveau joueur")
label.SetHelpText("Un nouveau joueur permet d'enregistrer son score")
box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
self.text = wx.TextCtrl(self, -1, "", size=(180,-1))
self.text.SetHelpText("Taper ici son nom. N'utilisez pas un nom déja utilisé même en jouant avec les majuscules")
box.Add(self.text, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
b = wx.Button(self, -1, "Ajouter ce joueur")
b.SetHelpText("Ce bouton permet de créé un nouveau joueur")
b.SetDefault()
sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
sizer.Add(b, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
self.Bind(wx.EVT_BUTTON, self.valide, b)
btnsizer = wx.StdDialogButtonSizer()
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
btn = wx.Button(self, wx.ID_CANCEL,u"Fermer cette fenêtre")
btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
sizer.Fit(self)
def valide(self,evt):
if self.text.GetValue()=="":
dia=wx.MessageDialog(self, "Vous n'avez rien inscrit dans le champs d'enter", caption = u"Pas de nom", style = wx.OK|wx.ICON_ERROR,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
else:
try:
f=open("Loto-data\Utilisateur.txt","r")
except:
dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque le fichier Utilisateur.txt.", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
self.Destroy()
else:
l1=f.readline()
l1=eval(l1)
f.close()
i=0
l2=[]
while i<len(l1):
l2.append(l1[i].lower())
i=i+1
if self.text.GetValue().lower() in l2:
dia=wx.MessageDialog(self, "Ce nom existe déja. Chosiser en un autre", caption = u"Nom déja enregister", style = wx.OK|wx.wx.ICON_EXCLAMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
elif ' \ '.strip() in self.text.GetValue() or ' / '.strip() in self.text.GetValue() or ':' in self.text.GetValue() or '*' in self.text.GetValue() or '?' in self.text.GetValue() or '"' in self.text.GetValue() or '<' in self.text.GetValue() or '>' in self.text.GetValue() or '|' in self.text.GetValue():
dia=wx.MessageDialog(self, 'Ce nom comporte un carractère interdit.\nVoici la liste des carractères interdit : / \ : * ? " < > |', caption = u"Carractère interdit", style = wx.OK|wx.wx.ICON_EXCLAMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
else:
l1.append(self.text.GetValue())
l1=str(l1)
f=open("Loto-data\Utilisateur.txt","w")
f.write(l1.encode("windows-1252"))
f.close()
nom="Loto-data\info"+self.text.GetValue()
f=open(nom,"w")
f.write('0\n0\n0\n0')
f.close()
dia=wx.MessageDialog(self, "Le joueur " + self.text.GetValue().encode("windows-1252") + " à bien éait ajouter", caption = u"Confirmation", style = wx.OK|wx.ICON_INFORMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
self.text.Clear()
class Dialog_Suprime(wx.Dialog):
def __init__(
self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE
):
pre = wx.PreDialog()
pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
pre.Create(parent, ID, title, pos, size, style)
self.PostCreate(pre)
sizer = wx.BoxSizer(wx.VERTICAL)
text = wx.StaticText(self, -1, "ATTENTION : LA SUPPRESSION EST DÉFINITIVE ET LA RÉCUPÉRATION DES FICHIER SUPPRIMÉ EST IMPOSSIBLE")
text.SetSize(text.GetBestSize())
text.SetHelpText("La suppression entraine la destruction des fichiers de sauvegardes")
f=open("Loto-data\Utilisateur.txt","r")
l1=f.readline()
l1=eval(l1)
f.close()
self.joueur=l1[0]
self.ch = wx.Choice(self, -1, (400, 50), choices = l1)
self.ch.SetSelection(0)
self.ch.SetHelpText("Permet de sélectionner le joueur à supprimer")
b = wx.Button(self, -1, "Supprimer ce joueur")
b.SetHelpText("Permet de valider votre choix")
sizer.Add(text, 0, wx.ALIGN_CENTRE|wx.ALL|wx.TOP, 5)
sizer.Add(self.ch, 10, wx.ALIGN_CENTRE|wx.ALL|wx.GROW, 10)
sizer.Add(b, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
self.Bind(wx.EVT_CHOICE, self.choix, self.ch)
self.Bind(wx.EVT_BUTTON, self.valide, b)
btnsizer = wx.StdDialogButtonSizer()
if wx.Platform != "__WXMSW__":
btn = wx.ContextHelpButton(self)
self.box.Add(btn, 0, wx.ALL|wx.CENTER, 5)
btn = wx.Button(self, wx.ID_CANCEL,u"Annuler")
btn.SetHelpText("Permet de revenir à la fenêtre principale en quittant cette boite de dialogue")
btn.SetDefault()
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btnsizer, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
sizer.Fit(self)
def choix(self, event):
self.joueur = event.GetString()
def valide(self,evt):
dia=wx.MessageDialog(self, 'Êtes vous sûr de vouloir supprimer le joueur ' + self.joueur.encode("windows-1252") + ' ?', caption = u"Confirmation", style = wx.YES_NO|wx.NO_DEFAULT|wx.ICON_QUESTION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
if valeur == wx.ID_YES:
f=open("Loto-data\Utilisateur.txt","r")
l1=f.readline()
l1=eval(l1)
f.close()
l1.remove(self.joueur)
f=open("Loto-data\Utilisateur.txt","w")
l1=str(l1).encode("windows-1252")
f.write(l1)
f.close()
nom="Loto-data\info"+self.joueur
try:
os.remove(nom)
except:
pass
dia=wx.MessageDialog(self, "Le joueur " + self.joueur.encode("windows-1252") + ' a bien été supprimer', caption = u"Confirmation de suppression", style = wx.OK|wx.ICON_INFORMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
j=Frame.renvoie_joueur(frame)
if self.joueur.encode("windows-1252")==j:
Frame.nom_joueur(frame,'[Pas de joueur sélectionné]')
self.Destroy()
else:
dia=wx.MessageDialog(self, "La procédure de suppression a été annulé", caption = u"Opération annuler", style = wx.OK|wx.ICON_INFORMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
class Frame(wx.Frame):
"""Affiche une fenêtre"""
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, size=(800, 700))
self.SetIcon(wx.Icon("Loto-data\Icone.ico", wx.BITMAP_TYPE_ICO ))
self.Bind(wx.EVT_CLOSE, self.quitter)
menuBar = wx.MenuBar()
menu = wx.Menu()
menu.Append(11, "Nouveau\tCtrl+N", "Ouvrir une nouvelle fenêtre")
menu.Append(12, "Effectuer un tirage", "Joué au Loto")
menu.AppendSeparator()
menu.Append(13, "Quitter\tAlt-F4", "Quitter le programme")
joueur = wx.Menu()
joueur.Append(21, "Choisir un/Changer de joueur", "Chosir un joueur pour l'enregistrement des paramètres")
joueur.Append(22, "Ajouter un nouveau joueur", "Ajouter un joueur à la base de donnée")
joueur.Append(23, "Supprimer un joueur", "Supprimer un joueur à la base de donnée ainsi que ses sauvegardes")
joueur.AppendSeparator()
joueur.Append(24, "Voir les statistiques de ce joueur", "Voir ne nombre de jeux, de victoires et de défaites")
aide = wx.Menu()
aide.Append(31, "Aide\tF1", "Permet d'optenir de l'aide sur le jeu")
aide.Append(32, "À propos de ...\tF2","Information sur le programme")
self.Bind(wx.EVT_MENU, self.nouveau, id=11)
self.Bind(wx.EVT_MENU, self.pre_tirage, id=12)
self.Bind(wx.EVT_MENU, self.quitter, id=13)
self.Bind(wx.EVT_MENU, self.definir_joueur, id=21)
self.Bind(wx.EVT_MENU, self.nouveau_joueur, id=22)
self.Bind(wx.EVT_MENU, self.supprimer_joueur, id=23)
self.Bind(wx.EVT_MENU, self.info_joueur, id=24)
self.Bind(wx.EVT_MENU, self.aide, id=31)
self.Bind(wx.EVT_MENU, self.about, id=32)
menuBar.Append(menu, "Fichier")
menuBar.Append(joueur, "Action Joueur")
menuBar.Append(aide, "Aide")
self.SetMenuBar(menuBar)
self.CreateStatusBar()
self.joueur_actuel='[Pas de joueur sélectionné]'
self.nb_tirage=0
panel = wx.Panel(self)
text = wx.StaticText(panel, -1, "Tirage du Loto")
text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
text.SetSize(text.GetBestSize())
btn = wx.Button(panel, -1, "Quitter")
funbtn = wx.Button(panel, -1, "Effectuer un tirage")
self.t = wx.TextCtrl(panel, -1,"",size=(700, 400), style=wx.TE_MULTILINE|wx.TE_READONLY)
self.Bind(wx.EVT_BUTTON, self.quitter, btn)
self.Bind(wx.EVT_BUTTON, self.pre_tirage, funbtn)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(text, 0, wx.ALL|wx.CENTER, 10)
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 10)
sizer.Add(funbtn, 0, wx.ALL|wx.CENTER, 10)
sizer.Add(self.t, 0, wx.ALL|wx.CENTER, 10)
panel.SetSizer(sizer)
panel.Layout()
self.Center()
funbtn.SetDefault()
def quitter(self, evt):
dlg = wx.MessageDialog(self, 'Êtes vous sûr de voulloir quitter "Le trirage du Loto"' ,'Quitter ce programme', wx.YES_NO|wx.ICON_QUESTION)
reponse = dlg.ShowModal()
if reponse==wx.ID_YES:
self.Destroy()
def pre_tirage(self,evt):
if self.joueur_actuel== "[Pas de joueur sélectionné]":
a=self.definir_joueur(None)
if a!=wx.ID_CANCEL:
dlg = Dialog_Tirage(self, -1, "Sélection des numéros",self.joueur_actuel, size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
else:
dlg = Dialog_Tirage(self, -1, "Sélection des numéros",self.joueur_actuel, size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
def tirage(self,triche,boules_tire1,boules_tire2,evt=None):
self.nb_tirage=self.nb_tirage+1
texte="Boujours est bienvenu au tirage du loto !!!\n\n\nEt voici le premier tirage\n"
if triche==2:
Loto.tirage(boules_tire1)
boules_tire11=[]
i=0
while i<len(boules_tire1):
boules_tire11.append(boules_tire1[i])
i=i+1
del boules_tire1[6:len(boules_tire1)]
del boules_tire11[0:6]
elif triche==1:
Loto.tirage(boules_tire1)
boules_tire11=boules_tire1
del boules_tire11[6:len(boules_tire1)]
else:
boules_tire11=[]
Loto.tirage(boules_tire11)
i=0
texte1=""
while i<len(boules_tire11):
if i==len(boules_tire11)-1:
texte1=texte1 + " et le numéro complémentaire, le " + str(boules_tire11[i])
else:
texte1=texte1 + " le " + str(boules_tire11[i]) +','
i=i+1
texte=texte+"Les numéro gagnant pour ce premier tirage sont le :" + texte1 + "\n\n"
texte=texte+"Continuons avec le deuxième tirage\n"
if triche==2:
Loto.tirage(boules_tire2)
boules_tire22=[]
i=0
while i<len(boules_tire2):
boules_tire22.append(boules_tire2[i])
i=i+1
del boules_tire2[6:len(boules_tire2)]
del boules_tire22[0:6]
elif triche==1:
Loto.tirage(boules_tire2)
boules_tire22=boules_tire2
del boules_tire22[6:len(boules_tire2)]
else:
boules_tire22=[]
Loto.tirage(boules_tire22)
i=0
texte2=""
while i<len(boules_tire22):
if i==len(boules_tire22)-1:
texte2=texte2 + " et le numéro complémentaire, le " + str(boules_tire22[i])
else:
texte2=texte2+ " le " + str(boules_tire22[i]) +','
i=i+1
texte=texte+"Les numéro gagnant pour ce deuxième tirage sont le :" + texte2 + "\n\n"
texte=texte+"_______________________________________________________________________________________________________________\n\n"
self.t.SetInsertionPoint(len(self.t.GetValue())+8*self.nb_tirage)
self.t.WriteText(texte)
dlg = Dialog_Compare(self, -1, "Résultat et analyse",boules_tire1,boules_tire11,boules_tire2,boules_tire22,self.joueur_actuel, size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
def definir_joueur(self, evt):
try:
f=open("Loto-data\Utilisateur.txt","r")
f.close()
except:
dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque le fichier Utilisateur.txt", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
return wx.ID_CANCEL
else:
f=open("Loto-data\Utilisateur.txt","r")
l1=f.readline()
f.close()
if l1=='[]':
dia=wx.MessageDialog(self, """Il n'y a aucun joueur enregistré.\nPour enregistrer un joueur allez dans le menu "Action Joueur" et "Ajouter un nouveau joueur" """, caption = u"Pas de joueur", style = wx.OK|wx.ICON_INFORMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
return wx.ID_CANCEL
else:
dlg = Dialog_Joueur(self, -1, "Sélectionner un joueur", size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
return val
def nouveau_joueur(self, evt):
dlg = Dialog_Nouveau(self, -1, "Ajouter un nouveau joueur", size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
def supprimer_joueur(self, evt):
try:
f=open("Loto-data\Utilisateur.txt","r")
f.close()
except:
dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque le fichier Utilisateur.txt", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
else:
f=open("Loto-data\Utilisateur.txt","r")
l1=f.readline()
f.close()
if l1=='[]':
dia=wx.MessageDialog(self, """Il n'y a aucun joueur enregistré.\nPour enregistrer un joueur allez dans le menu "Action Joueur" et "Ajouter un nouveau joueur" """, caption = u"Pas de joueur", style = wx.OK|wx.ICON_INFORMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
else:
dlg = Dialog_Suprime(self, -1, "Supprimer un joueur", size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
def aide (self, evt):
aide = Aide(self,"Aide.htm")
aide.Show(True)
def about (self, evt):
dlg = Dialog_About(self, -1, "À propos de ...", size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
def nom_joueur(self,joueur):
if joueur == "[Pas de joueur sélectionné]":
self.SetTitle("Tirage du Loto - [Pas de joueur sélectionné]")
self.joueur_actuel="[Pas de joueur sélectionné]"
else :
self.SetTitle("Tirage du Loto - [Joueur : " + joueur + "]")
self.joueur_actuel=joueur
def renvoie_joueur(self):
return self.joueur_actuel
def info_joueur(self,evt):
if self.joueur_actuel== "[Pas de joueur sélectionné]":
dia=wx.MessageDialog(self, "Il n'y a pas de joueur sélectionné", caption = u"Information - Pas de joueur sélectionnée", style = wx.OK|wx.ICON_INFORMATION,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
else:
nom='Loto-data\info'+ self.joueur_actuel
try :
f=open(nom,"r")
except:
dia=wx.MessageDialog(self, "Une grave erreur s'est produite : il manque un fichier.", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
pos = wx.DefaultPosition)
valeur = dia.ShowModal()
else:
f.close()
dlg = Dialog_InfoJoueur(self, -1, "Information joueur",self.joueur_actuel, size=(350, 200),
style = wx.DEFAULT_DIALOG_STYLE)
dlg.CenterOnScreen()
val = dlg.ShowModal()
def nouveau(self,evt):
frame = Frame(None, "Tirage du Loto - [Pas de joueur sélectionné]")
frame.Show(True)
class SplashScreen(wx.SplashScreen):
def __init__(self):
bmp = wx.Image("Loto-data\Image.bmp").ConvertToBitmap()
wx.SplashScreen.__init__(self, bmp,
wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,
2000, None, -1)
self.Bind(wx.EVT_CLOSE, self.OnClose)
self.fc = wx.FutureCall(1500, self.ShowMain)
def OnClose(self, evt):
evt.Skip()
self.Hide()
if self.fc.IsRunning():
self.fc.Stop()
self.ShowMain()
def ShowMain(self):
global frame
frame = Frame(None, "Tirage du Loto - [Pas de joueur sélectionné]")
frame.Show(True)
return True
class MyApp(wx.App):
def OnInit(self):
splash = SplashScreen()
splash.Show()
return True
app = MyApp(redirect=True)
app.MainLoop()
Conclusion
Pour faire fonctionner le code, télécharger le zip et surtout, ne séparé pas "Loto-GUI.pyw" des autres fichiers ou dossier faute de quoi il ne fonctionnera pas ! Normalement le jeu est assez simple, mais j'ai tout de même mis une aide détailé au cas ou !
POUR CEUX QUI DÉSIR TÉLÉCHARGER WX.PYTHON :
Allez sur le site http://www.wxpython.org/download.php et sélectionner la version correspondant à votre version de Python et à votre système d'exploitation.
POUR CEUX QUI DÉSIR TÉLÉCHARGER WINZIP OU WINRAR :
Vous pouvez le télécharger entre autre à cette adresse http://www.clubic.com/telecharger-fiche9488-winzip .html
Historique
- 08 mai 2007 11:52:24 :
- Oublit de mettre la source
- 09 mai 2007 12:26:49 :
- Résolution d'un bug d'afficharge des résultats (cf commentaires)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
wxPython et DDE [ par DoudouBidou ]
Bonjour,j'utilise la liaison DDE pour dialoguer entre python et une application sous windows 2000j'ai trouvé (un peu par hasard) un module DDE pour gé
[wxPython] apperçu avant impression multipages [ par dj_djocker ]
au secour!!!!!!une semaine que je cherche partout mais rien a faire.a travers un logiciel crée en python je crée une impression d'au moins u
wxPython [ par MHI ]
Bonjour Je recherche une doc en français expliquant simplement comment créé une fenêtre, des boutons et une listebox avec wxPython
wxpython : afficher et effacer des images [ par steede ]
Bonjour,J'ai besoin dans mon application d'affiicher des images et de les remplacer par d'autres en fonction des clics de la souris.Je sais les affich
Un Canvas comme dans Tkinter, mais pour wxPython [ par samurize ]
Slt tout le monde. Voila tout est dans le titre (ou a peu pres ) : Je suis à la recherche d'un module pouvant s'integrer da
wxPython et Unicode [ par tomazi75 ]
Bonjour, J'aimerais afficher le caractère u'\u2661' (symbole 'pique' comme pour les cartes à jouer). Pas d'erreur, mais ça affich
Qu'est ce que le python permet de réaliser!! [ par Mansuz ]
Mansuz Salut! J'aurais aimé savoir ce qui peut être réalisé en Python. Par exemple Flash c'est les petites anims, des jeux funs. Le C pour fair des a
wxpython infobulle [ par zann12 ]
Bonjour à tous, Je suis débutant en Python, et actuellement, j'ai cherché comment faire une info bulle avec wxPython, et je n'ai rien trouvé. Enfa
Variable globale dans une application wxpython [ par tasnim86 ]
Bonsoir,j'utilise la bibliothèque wxpython comment pourais je déclarer une variable globale à toute une application wx.app? je veux avoir une variable
WXPYTHON et Base de données [ par dayiri ]
Salut,je débute en python. j'arrive à concevoir des interfaces graphiques, je voudrois mettre une base de données en arrière plan de l'interface et po
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
PYVISA PROBLèMEPYVISA PROBLèME par sandrine44
Cliquez pour lire la suite par sandrine44
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|