Comment créer une interface graphique simple pour mon jeu
AO._17 Messages postés 4 Date d'inscription dimanche 10 mars 2024 Statut Membre Dernière intervention 10 mars 2024 - 10 mars 2024 à 22:33
- Comment créer une interface graphique simple pour mon jeu
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Créer une adresse hotmail - Guide
- Créer un lien pour partager des photos - Guide
6 réponses
Bonsoir.
Un truc simple que tu devrais comprendre et pouvoir compléter.
# On garde les modules dans leurs boites (namespace) import random import tkinter as tk from tkinter import font as tkfont def generate_secret(size): """ int ---> str La fonction genere_secret permet de générer les codes secrets valides """ # Bien plus simple et ainsi pas besoin de transtyper return ''.join(random.sample('0123456789', size)) # tire 4 chiffres différents au hasard parmi {0,...,9} # liste = random.sample(range(10), 4) # transforme la liste en texte # secret = "".join([str(n) for n in liste]) # return secret def validate_code(value): # Fonction autorisant la saisie d'un car. # dans l'entry, value (%P) représente la # valeur de l'entry + dernier car. saisi button_code['state'] = tk.DISABLED if not value: return True if not value.isdigit(): return False length = len(value) if length == 1: return True if length == 5: # On ne valide pas le car. mais activation # du bouton, car la valeur est toujours correcte button_code['state'] = tk.ACTIVE return False if length <= 4 and len(set(value)) == length: if length == 4: button_code['state'] = tk.ACTIVE return True return False def play(): # démarrage partie game['secret_code'] = generate_secret(4) insert_text('coucou') insert_text('coucou') insert_text('coucou') def replay(): text_result['state'] = tk.NORMAL text_result.delete(1.0, tk.END) # Clear text text_result['state'] = tk.DISABLED button_replay['state'] = tk.DISABLED game['current_try'] = 0 play() def entry_process(): # C'est ici que tout se passe # traitement de la valeur saisie à faire # Nul besoin de la contrôler puisque déjà # fait en amont print(entry_code.get()) # str print(game['secret_code']) entry_code.delete(0, tk.END) # clear def insert_text(value, value_sep='\n' * 3): text_result['state'] = tk.NORMAL text_result.insert(tk.END, f'{value}{value_sep}') text_result['state'] = tk.DISABLED window = tk.Tk() FONTS = dict( title=tkfont.Font(family='serif', size=14, weight='bold'), text=tkfont.Font(family='serif', size=12), ) # Si besoin d'autres valeurs au jeu # les stocker dans game game = dict( secret_code='', try_max=5, current_try=0, ) window.title('Bulls and Cows') window.resizable(False, False) window.columnconfigure(0, weight=1) window.columnconfigure(1, weight=1) window.columnconfigure(2, weight=1) label_title = tk.Label( window, text="BIENVENUE DANS LE JEU BULLS AND COWS !", font=FONTS['title'], ) label_title.grid( row=0, column=0, columnspan=3, sticky=tk.EW, pady=(15, 10), ) label_code = tk.Label(window, text='Entrez un code valide',) label_code.grid(row=1, column=0, sticky=tk.E, pady=5,) check_code = window.register(validate_code) entry_code = tk.Entry( window, validate='key', # %P représente la valeur de l'entry + car. saisi validatecommand=(check_code, '%P'), ) entry_code.grid(row=1, column=1, sticky=tk.EW, padx=5, pady=5,) button_code = tk.Button( window, text='OK', state=tk.DISABLED, command=entry_process, font=FONTS['text'], ) button_code.grid(row=1, column=2, sticky=tk.W, pady=5,) label_tentatives = tk.Label( window, text='tentatives :', font=FONTS['text'], ) label_tentatives.grid( row=2, column=0, sticky=tk.E, padx=(0, 5), pady=5, ) # C'est le texte de ce label qui sera à changer # pour indiquer le nombre de tentatives label_tentatives_count = tk.Label(window, text='0', font=FONTS['text'],) label_tentatives_count.grid(row=2, column=1, sticky=tk.W, pady=5) text_result = tk.Text( window, highlightthickness=0, takefocus=False, state=tk.DISABLED, bg='white', fg='black', font=FONTS['text'], height=(game['try_max'] + 1) * 3, ) text_result.grid(row=3, column=0, columnspan=3, padx=10, pady=5) label_result = tk.Label( window, height=3, text='résultat partie ici', font=FONTS['text'] ) label_result.grid(row=4, column=0, columnspan=3, padx=5, pady=5) button_replay = tk.Button( window, text='Nouvelle partie', command=replay, state=tk.DISABLED, font=FONTS['text'], ) button_replay.grid(row=5, column=0, columnspan=3, pady=(5, 25),) play() window.mainloop()
Tout est réalisé et indiqué dans le code pour que tu puisses insérer dans les widgets tkinter dédiés tes valeurs..
Bonne continuation.
10 mars 2024 à 17:34
bonjour, je pense que tkinter est le bon choix pour faire cela.
Ce n'est cependant pas évident pour un débutant, il te faudra un peu de temps et d'énergie pour te former.
10 mars 2024 à 17:59
mais est-ce que tu as une idée sur comment le faire, car je dois faire ça avant demain
Bonjour,
Avant demain .... ça fait court quand même ... trop court
Ca ressemble un peu au Mastermind:
4 couleurs
tant de bien placées, tant de mal placées, et tant qui n'y sont pas
Dans le temps, j'avais fait ça en 100 lignes avec Tkinter:
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question10 mars 2024 à 20:32
oui justement le Mastermind est l'ancêtre du "Bulls and Cows" mais avec des chiffres. mais j'aarive pas à coder ce que je veux. Je suis bloqué depuis des heures. Je veux juste quelque chose comme mon modèle, un truc simple.
10 mars 2024 à 22:33
Merci énormément pour ton aide, c'est vraiment gentil de ta part !