import random
import tkinter as tk
from tkinter import messagebox
class Machine_a_sous :
def __init__ ( self ) :
self . argent = 0
self . nombres = [ ]
self . bank = 1000
self . mise = - 1
self . gains = 0
def saisie ( self ) :
""" demande à l ' utilisateur une mise """
if not 100 > self . mise > = 0 or not self . mise < = self . argent : # tant que mise n'est pas compris entre 0-100 et > mise
return False
if self . mise > self . argent or self . mise == 0 :
return " quit "
self . bank + = self . mise
self . argent - = self . mise
return self . mise
def nbAlea ( self ) :
""" renvoie une liste de 3 nombre aléatoires entre 0 et 9 """
self . nombres = [ random . randint ( 0 , 9 ) for i in range ( 3 ) ]
return self . nombres
def gain ( self ) :
if len ( set ( self . nombres ) ) == 1 and 9 in self . nombres :
self . gains = self . bank + self . mise
self . argent + = self . gains
self . bank = 0
elif len ( set ( self . nombres ) ) == 1 :
self . gains = self . mise * 6
self . argent + = self . gains
self . bank - = self . gains
elif len ( set ( self . nombres ) ) == 2 :
self . gains = self . mise * 3
self . argent + = self . gains
self . bank - = self . gains
else :
self . gains = 0
return self . gains
def affiche ( self ) :
print ( f " premier rouleau : { self . nombres [ 0 ] } ,deuxième rouleaux : { self . nombres [ 1 ] } ,troisième rouleaux { self . nombres [ 2 ] } " )
print ( f " Vous avez gagné { self . gains } jetons " )
print ( f " \n Il vous reste { self . argent } jetons, et il reste { self . bank } jetons dans le bac de la machine. \n " )
class Game_gui :
def __init__ ( self ) :
self . bg_color = ' #777777 '
self . fen = tk . Tk ( )
self . fen . geometry ( ' 900x600 ' )
self . fen . title ( ' Bellagio ' )
self . fen . config ( background = self . bg_color )
self . name_frame = [ ' banque ' , ' mise ' , ' argent ' ]
self . frame = [ tk . LabelFrame ( self . fen , background = self . bg_color , labelanchor = ' n ' , text = i ) for i in self . name_frame ]
self . name_info = [ machine . bank , 0 , machine . argent ]
self . info = [ tk . Label ( self . frame [ i ] , background = self . bg_color , text = self . name_info [ i ] , width = 9 , font = ( ' Helvetica ' , 36 , ' bold ' ) ) for i in range ( 3 ) ]
self . column = [ 1 , 2 , 5 ]
for i in range ( 3 ) :
if i != 1 :
self . frame [ i ] . grid ( column = self . column [ i ] , row = 1 , padx = 24 )
else :
self . frame [ i ] . grid ( columnspan = 3 , column = self . column [ i ] , row = 1 )
self . info [ i ] . grid ( )
self . entry_mise = tk . Entry ( self . fen , width = 40 )
self . entry_mise . insert ( 0 , ' Entrez votre mise entre 0 et 100 ' )
self . entry_mise . grid ( columnspan = 3 , column = 2 , row = 3 )
self . rouleaus = [ tk . Label ( self . fen , width = 4 , pady = 150 , text = 0 , background = self . bg_color , fg = ' #db0000 ' , font = ( ' Helvetica ' , 36 , ' bold ' ) ) for i in range ( 3 ) ]
for i in range ( 3 ) :
self . rouleaus [ i ] . grid ( column = i + 2 , row = 2 )
self . fen . bind ( ' <Return> ' , self . play )
self . fen . mainloop ( )
def play ( self , event ) :
machine . mise = int ( self . entry_mise . get ( ) )
if machine . saisie ( ) == " quit " :
self . fen . quit ( )
elif machine . saisie ( ) != False :
machine . nbAlea ( )
machine . gain ( )
self . name_info = [ machine . bank , machine . mise , machine . argent ]
self . maj_graph ( )
if machine . bank < = 500 :
self . fen . destroy ( )
def maj_graph ( self ) :
for rouleau in range ( 3 ) :
self . rouleaus [ rouleau ] . config ( text = machine . nombres [ rouleau ] )
for i in range ( len ( self . info ) ) :
self . info [ i ] . config ( text = self . name_info [ i ] )
class Menu_gui :
def __init__ ( self ) :
self . fen = tk . Tk ( )
self . bg_color = ' #777777 '
self . fen . geometry ( ' 900x600 ' )
self . fen . title ( ' Bellagio ' )
self . fen . config ( background = self . bg_color )
self . pres = tk . Label ( self . fen , text = ' Bienvenue au casino ' , font = ( ' Helvetica ' , 36 , ' bold ' ) , background = self . bg_color )
self . pres . pack ( )
self . regle = tk . Label ( self . fen , text = regles ( ) , pady = 50 , font = ( ' Helvetica ' , 16 , ' bold ' ) , background = self . bg_color )
self . regle . pack ( )
self . entry_mise = tk . Entry ( self . fen , width = 100 )
self . entry_mise . insert ( 0 , ' Entrez votre somme de départ ' )
self . entry_mise . pack ( )
self . fen . bind ( ' <Return> ' , self . get_argent )
self . fen . mainloop ( )
def get_argent ( self , event ) :
machine . argent = int ( self . entry_mise . get ( ) )
self . fen . destroy ( )
class Fdj :
# Test pour savoir si le joueur à le droit de rentrer dans le casino
def __init__ ( self ) :
self . est_majeur = False
self . fen = tk . Tk ( )
self . bg_color = ' #777777 '
self . fen . geometry ( ' 900x600 ' )
self . fen . title ( ' Bellagio ' )
self . fen . config ( background = self . bg_color )
self . question = tk . Label ( self . fen , text = ' Etes-vous majeur? ' , font = ( ' Helvetica ' , 36 , ' bold ' ) , background = self . bg_color )
self . question . pack ( )
self . entry = tk . Entry ( self . fen , width = 100 )
self . entry . insert ( 0 , ' repondez oui ou non ' )
self . entry . pack ( )
self . fen . bind ( ' <Return> ' , self . get_rep )
self . fen . mainloop ( )
def get_rep ( self , event ) :
# indique si le joueur est majeur
if self . entry . get ( ) == " oui " :
self . est_majeur = True
self . fen . destroy ( )
else :
tk . messagebox . showinfo ( " Aurevoir " , " Vous êtes mineurs, vous n ' avez pas l ' âge de jouer! " )
self . fen . destroy ( )
def regles ( ) :
text = " La machine 1000 jetons au départ. \n Si les trois chiffres sont des 9, vous gagnez tout le bac! \n Si vous tombez sur 3 chiffres identiques différents de 9 \n , alors vous gagnez 6 fois votre mise. \n Si vous avez 2 identiques, alors vous gagnez 3 fois la mise que vous avez mis. \n Si aucun chiffres ne sont identiques vous ne gagnez rien. "
return text
fdj = Fdj ( )
if fdj . est_majeur :
machine = Machine_a_sous ( )
menu = Menu_gui ( )
gui = Game_gui ( )