import random import tkinter as tk from tkinter import messagebox class Machine_a_sous: """classe principale gérant le casino""" 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""" print('saisie') 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" else: 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): print(self.mise, self.argent, self.bank) print(self.nombres) 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): """affiche le les trois rouleaux""" 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"\nIl vous reste {self.argent} jetons, et il reste {self.bank} jetons dans le bac de la machine.\n") class Game_gui: """Interface graphique du casino""" 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'] # liste des cadres des infos 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] #liste des infos self.info = [tk.Label(self.frame[i], background=self.bg_color, text=self.name_info[i], width=8, font=('Helvetica', 36, 'bold')) for i in range(3)] self.column = [1, 2, 5] # grid des cadres 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.rouleaux = [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.rouleaux[i].grid(column=i+2, row=2) self.fen.bind('', self.play) self.fen.mainloop() def play(self, event): """méthode qui gère le fonctionnement du jeu grace à la classe Machine_à_sous""" machine.mise = int(self.entry_mise.get()) mise_state = machine.saisie() if mise_state == "quit": self.fen.quit() elif mise_state != False: machine.nbAlea() machine.gain() self.name_info = [machine.bank, machine.mise, machine.argent] print(self.name_info) self.maj_graph() if machine.bank <= 500 or machine.argent == 0: self.fen.destroy() def maj_graph(self): """Rafraîchi l'affichage des infos et rouleaux""" for rouleau in range(3): self.rouleaux[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: """Interface graphique du menu (règles et argent)""" 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('', self.get_argent) self.fen.mainloop() def get_argent(self, event): """récupère l'argent saisie par l'utilisateur""" machine.argent = int(self.entry_mise.get()) self.fen.destroy() class Fdj: """#Test pour savoir si le joueur est majeur et à 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('', 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.\nSi les trois chiffres sont des 9, vous gagnez tout le bac!\nSi vous tombez sur 3 chiffres identiques différents de 9\n, alors vous gagnez 6 fois votre mise.\nSi vous avez 2 identiques, alors vous gagnez 3 fois la mise que vous avez mis.\nSi 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()