Projet Isn

Signaler
-
Messages postés
14880
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
4 juin 2020
-
Bonjour,
Je suis en terminale S et j'ai choisie la spécialité ISN ( malgré un niveau très faible en informatique). Avec mes camarades nous avons décidé pour notre projet de créer un jeu du petit bac. nous avons déjà réalisé une partie du programme mais nous bloquons sur le chronomètre ( qui doit s’arrêter au bout de 30 sec pour mettre fin au jeu) et sur comment vérifier les réponses du joueur ( fonction vérification). Cela fait plusieurs semaine que nous bloquons dessus, pourriez vous nous aider ? je vous mets notre programme.

(Nb : excusez moi pour les fautes si il y en a )


# Import des modules

from random import *
from tkinter import *
from time import *

# fonctions pour la création du petit bac


def initialisation():

    liste =['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
    'P','Q','R','S','T','U','V','W','X','Y','Z']
    letter = choice(liste)
    liste2 =['Metier','Capital','Departement','Etats des etats unis','Animaux','Fruit',
    'Legume','Pays','Sport','Moyen de transport','Arbre','Auteur.e','Element de chimie',
    'Couleur','Fleur','Instrument de musique','Outil','Verbe irregulier anglais']
    liste3 = []
    for i in range(3):
        categorie=choice(liste2)
        liste3.append(categorie)
        liste2.remove(categorie)
    return letter,liste3

def verification():
     """ permet de verrifier les reponse du joueur"""
     points = 0
     for i in range(3):
         categorie = listecat[i]
         mon_fichier = open(categorie, "r")
         contenu = mon_fichier.read()
         liste = contenu.split("\n")
         mon_fichier.close()
         i = 0
         listemot=reponse.get
         mot=listemot[i]
         while i != len(liste) :
             if liste[i] == mot :
                 points = points + 1
             else :
                 i = i + 1
     return points



##def chrono():
## global actu,fin
## reste = int(round(fin-actu))
## if stop == True :
##        bouton.config(text=" bien jouer !!")
## else :
##        if reste>0 :
##            temps.config(text='Compte à rebour : '+str(reste)+' s')
##         actu=time()
##         fenetre.after(1000,chrono)
##        else :
##         temps.config(text='Compte à rebour : '+str(reste)+' s')
##         bouton.config(text="dommage !!")
##def desamorce() :
## global  stop
## stop=True


def affichecategories(liste):
    cat1 = Label(frame4, text = liste[0], relief = GROOVE, fg = 'black')
    cat2 = Label(frame4, text = liste[1], relief = GROOVE, fg = 'black')
    cat3 = Label(frame4, text = liste[2], relief = GROOVE, fg = 'black')
    cat1.grid(column=1,row=1)
    cat2.grid(column=1,row=2)
    cat3.grid(column=1,row=3)


# Fonctions de gestion de l'interface graphique
def retour_accueil():
    """ fonction qui permet de reinstaller la page d'accueil """

    for widget in frame.winfo_children():
        widget.pack_forget()
    frame1.pack_forget()
    frame2.pack_forget()
    frame3.pack_forget()
    frame4.pack_forget()

    frame.pack(side=TOP,padx=10,pady=10)
    bouton1 = Button(frame, text='Jeu 1 : Le Petit Bac', command = installe_jeu1_consignes)
    bouton2 = Button(frame, text='Quitter', command = fenetre.destroy)
    bouton1.pack(side = TOP, padx = 1, pady = 1)
    bouton2.pack(side = TOP, padx = 1, pady = 3)

def installe_jeu1_consignes():
    """ fonction qui permet d'installer la page des consignes du petit bac """

    for widget in frame.winfo_children():
        widget.pack_forget()
    frame4.pack_forget()
    frame1.pack(side=TOP,padx=10,pady=10)
    frame2.pack(side=TOP,padx=11,pady=11)
    frame3.pack(side=TOP,padx=12,pady=12)

def installe_jeu1():
    """ fonction qui permet d'installer le jeu 1 """

    for widget in frame.winfo_children():
        widget.pack_forget()
    frame1.pack_forget()
    frame2.pack_forget()
    frame3.pack_forget()

    frame4.pack(side=TOP,padx=10,pady=10)

# Construction de l'interface graphique

fenetre = Tk()

# configuration de la fenetre
w, h = fenetre.winfo_screenwidth(), fenetre.winfo_screenheight()
largeur = str(w)
hauteur = str(h)
fenetre.geometry(largeur + "x" + hauteur)
fenetre.title("Mini jeu")

frame = Frame(fenetre,relief=GROOVE)
frame.pack(side=TOP,padx=10,pady=10)

bouton1 = Button(frame, text='Jeu 1 : Le Petit Bac', command = installe_jeu1_consignes)
bouton2 = Button(frame, text='Quitter', command = fenetre.destroy)
bouton1.pack(side = TOP, padx = 1, pady = 1)
bouton2.pack(side = TOP, padx = 1, pady = 3)

# création de la page consignes petit bac
frame1 = Frame(frame,borderwidth=2,relief=GROOVE)
Label(frame1,text="But du jeu :").pack(padx=450,pady=10)
Label(frame1,text=" Une catégorie vous sera proposée (mammifère, fruit,\
 légume, sport,...) ainsi qu'une lettre de l'alphabet. Le but du jeu est de\
 trouver un mot appartenant à la catégorie proposée et commencant par la\
 lettre demandée").pack(padx=10,pady=1)
Label(frame1,text="Consignes :").pack(padx=450,pady=10)
Label(frame1,text= "-Ecrire un mot qui commence par la lettre du dessus et\
 qui correspond à la catégorie de gauche").pack(padx=10,pady=1)
Label(frame1,text="-Mettre une réponse par case").pack(padx=10,pady=1)
Label(frame1,text="-/!\ Ne pas mettre de majuscules", fg = 'red').pack(padx=10,pady=1)
Label(frame1,text="-Laisser un espace entre les noms composés", fg = 'red').pack(padx=10,pady=1)

frame2 = Frame(frame,borderwidth=2,relief=GROOVE)
bouton1 = Button(frame2, text='Jouer', command = installe_jeu1)
bouton1.pack()

frame3 = Frame(frame,borderwidth=2,relief=GROOVE)
bouton2 = Button(frame3, text='Accueil', command = retour_accueil)
bouton2.pack()

# création du petit bac
frame4 = Frame(frame,relief=GROOVE)
reponse1 = Entry(frame4)
reponse2 = Entry(frame4)
reponse3 = Entry(frame4)
reponse1.grid(column=2, row=1)
reponse2.grid(column=2, row=2)
reponse3.grid(column=2, row=3)

bouton1 = Button(frame4, text='valider', command = verification)
bouton2 = Button(frame4, text='Consignes', command = installe_jeu1_consignes)
bouton3 = Button(frame4, text='Accueil', command = retour_accueil)
bouton1.grid(column=2, row=4)
bouton2.grid(column=2, row=5)
bouton3.grid(column=2, row=6)

### timer
##temps=Label(frame4,text="COMPTE A REBOUR ",fg='red')
##temps.grid(column=1, row=0)
##stop=False
##actu = time()
##fin= time()+30
##chrono()

# lettre
lettre = initialisation()[0]
lettre = Label(frame4, text=lettre, relief=RIDGE)
lettre.grid(column=2, row=0)

# categorie
listecat = initialisation()[1]
affichecategories(listecat)

fenetre.mainloop()

3 réponses

Messages postés
14880
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
4 juin 2020
413
Bonjour

en Python, il y a un truc primordial => l'indentation.
CodesSourceS, comme tous les sites de code qui se respectent, dispose d'un outil permettant de la conserver: les balises de code.
Voici un petit tuto sur leur bonne utilisation https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Tu as encore le temps de modifier ton message et le rendre exploitable pour ceux qui pourraient t'aider
Messages postés
14880
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
4 juin 2020
413
Merci à @karamel d'avoir rendu ton code lisible.

Je ne suis pas assez calé en Python pour t'aiguiller de façon précise.

Pour ton chronomètre, je pense que tu devrais utiliser un timer
voir ce post https://www.developpez.net/forums/d166419/autres-langages/python/general-python/utilisation-timer-python/#post1070923


Pour la vérification, je n'ai pas d'éditeur Python chez moi et les 2 online que j'ai essayé n'acceptent pas ton code.
Comme je n'ai jamais codé avec tkinter, je ne sais pas trop d'où ça vient.

Cependant, ici déjà je m'interroge (voir le commentaire dans le code
def verification():
     """ permet de verrifier les reponse du joueur"""
     points = 0
     for i in range(3):
         categorie = listecat[i] #elle sort d'où la collection listecat
         mon_fichier = open(categorie, "r")
         contenu = mon_fichier.read()
         liste = contenu.split("\n")
         mon_fichier.close()
         i = 0
         listemot=reponse.get
         mot=listemot[i]
         while i != len(liste) :
             if liste[i] == mot :
                 points = points + 1
             else :
                 i = i + 1
     return points


Messages postés
1
Date d'inscription
dimanche 26 avril 2020
Statut
Membre
Dernière intervention
28 avril 2020

Merci beaucoup pour votre aide !
Pour la collection listecat[i] je ne sais pas vraiment car c'est mon prof qui m'a donné cette partie du programme.
Messages postés
14880
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
4 juin 2020
413
Ha, et l'as tu bien recopiée? Ou aurais tu pu supprimer par mégarde un bout?

Car, il me semble qu'il faudrait passer la liste en paramètre, comme c'est le cas pour affichecategories.