IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Réalisation d'un Cluedo


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut Réalisation d'un Cluedo
    Bonjour à toutes et à tous !

    J'ai commencé en cours il y a moins de 3 mois la joie qu'est la programmation Python. En projet personnel, nous devons réaliser un jeu et j'ai décidé de faire un Cluedo. Cependant, je rencontre quelques problèmes : lors de mon "if", si le coupable proposé n'est pas le bon, Python est censé m'afficher que ce n'est pas le bon coupable et donner également un alibi au hasard (dont j'ai fait une liste au tout début du programme). Cela dit, j'ai beau avoir tenté plusieurs combinaisons, rien ne fonctionne, et j'obtiens seulement ceci : <function choix_alibis at 0x111f4a0e0>. Je n'arrive pas à comprendre pourquoi cela, et j'ai cherché sur Internet sans avoir vraiment trouvé de réponses (qui doit exister j'en suis sûre !)

    J'espère vraiment que quelqu'un ici saurait m'aider sur ce problème, je lui en serais vraiment reconnaissante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    coupables=["Madame Leblanc", "Madame Pervenche", "Colonel Moutarde", "Mademoiselle Rose", "Docteur Olive", "Professeur Violet"]
    alibi=["au téléphone avec un collègue lors du meurtre","était sorti dans un bar lors du meurtre","discutait avec le jardinier lors du meurtre","était avec son enfant lors du meurtre", "était dans un restaurant lors du meurtre"]
     
    def choix_coupables():
        for c in coupables:
            coupable_final=choice(coupables)
     
    from random import *
    coupable_final= sample(coupables, k=1)
     
    def choix_alibis():
        for a in alibi:
            N=choice(alibi)
     
    print("Dr Lenoir a été retrouvé assassiné dans le bureau de son manoir. Vous êtes l’enquêteur appelé pour résoudre ce meurtre. Saurez-vous retrouver le coupable, l’arme du crime et le motif ?")
    print("Six suspects étaient présents au manoir lors du meurtre : ")
    liste=["Madame Leblanc - frustrée et jalouse", "Madame Pervenche - puissante et impassible", "Colonel Moutarde - fort et athlétique", "Mademoiselle Rose - manipulatrice et charmeuse", "Docteur Olive - rusé et professionnel", "Professeur Violet - intelligent et astucieux"]
    print(*liste,sep="\n")
    print("Six armes possibles ont déjà été trouvées sur les lieux du crime :")
    liste2=["Une fiole de poison", "Un pistolet", "Un chandelier", "Un couteau", "Une épée", "Une corde"]
    print(*liste2,sep="\n")
    print("Chacun des suspects avait une bonne raison de vouloir tuer Dr Lenoir :")
    liste3=["La jalousie", "Le goût du pouvoir", "La vengeance", "L'amour", "L'argent", "La gloire"]
    print(*liste3,sep="\n")
    print("Vous avez toutes les clés en main... à vous de résoudre le mystère !")
    print("ÉTAPE 1 : TROUVEZ LE COUPABLE")
     
    liste_coupables_proposes=[]
    print("Liste des coupables déjà proposés:", liste_coupables_proposes)
    suspect=input("À votre avis, qui est le suspect?")
     
    if (suspect!=coupable_final):
        print("Cela ne peut pas être ",suspect, "car ", str(choix_alibis))
        liste_coupables_proposes.append(suspect)
        print(liste_coupables_proposes)
    else:
        print("Bravo, vous avez devinez que ", coupable_final, "est le coupable. Vous pouvez passer à l'étape suivante.")

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par elea25170 Voir le message
    Cela dit, j'ai beau avoir tenté plusieurs combinaisons, rien ne fonctionne, et j'obtiens seulement ceci : <function choix_alibis at 0x111f4a0e0>. Je n'arrive pas à comprendre pourquoi cela, et j'ai cherché sur Internet sans avoir vraiment trouvé de réponses (qui doit exister j'en suis sûre !)
    Vous avez écris ceci : str(choix_alibis) or ceci n'exécute pas la fonction choix_alibis comme vous le penser, le nom d'une fonction c'est une référence... Pour éxécuter une fonction il faut ajouter les parenthèses après le nom de la fonction...

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Attention :

    1. il ne faut confondre une fonction et son résultat : choix_alibis et choix_alibis()
    2. sample(coupables, k=1) retourne une liste

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Oui il y a certaines chose à revoir, par exemple dans la fonction choix_alibis il n'y a pas de return donc même si on corrige en ajoutant les parenthèses pour l’exécuter eh bien cela retournera None...

    Citation Envoyé par elea25170 Voir le message
    et donner également un alibi au hasard (dont j'ai fait une liste au tout début du programme).
    La fonction en question ne fait pas cela... Pour vous aider je vous donne un exemple :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def choix_alibis():
        n = randrange(len(alibi))
        return (alibi[n])

  5. #5
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Merci à tous les deux, j'ai modifié mon programme avec vos indications et, miracle, cela fonctionne !

    Il y a encore évidemment des erreurs, dont le sample (que j'ai vu sur internet mais qui ne convient pas pour ce que je veux faire), mais cela est déjà une bonne avancée !

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par elea25170 Voir le message
    Il y a encore évidemment des erreurs, dont le sample (que j'ai vu sur internet mais qui ne convient pas pour ce que je veux faire), mais cela est déjà une bonne avancée !
    Je viens de comprendre que vous vouliez utiliser la fonction choice ce qui est peut-être mieux, en tous cas c'est effectivement plus concis :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def choix_alibis():
        return choice(alibi)
    Vous pouvez faire pareil pour le choix du coupable : coupable_final = choice(coupables)...

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    J'aurais une suggestion : c'est lourd de devoir à chaque fois taper les noms des personnes, des armes...

    Il suffit d'un caractère différent et hope cela ne fonctionnera pas...

    Peut-être ce serait plus simple de proposer un code à taper pour chaque cas, genre pour les personnes P1, P2, P3... Et pour les armes A1, A2...

  8. #8
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    J'aurais une suggestion : c'est lourd de devoir à chaque fois taper les noms des personnes, des armes...

    Il suffit d'un caractère différent et hope cela ne fonctionnera pas...

    Peut-être ce serait plus simple de proposer un code à taper pour chaque cas, genre P1, P2, P3... Pour les personnes. A1, A2...Pour les armes...
    Je n'y avais pas pensé ! Effectivement, cela simplifierait le jeu. Merci beaucoup

  9. #9
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Cela dit, j'ai un autre problème qui se pose...

    Je me rends compte que Python choisit bien un alibi au hasard lorsque le nom proposé est incorrect (jusqu'ici tout va bien !). Mais cet alibi est "remis" dans la liste, ce qui fait que deux personnages peuvent avoir le même alibi, exemple :

    - Cela ne peut pas être Violet car était au bar lors du meurtre
    - Cela ne peut pas être Pervenche car était au bar lors du meurtre

    Y'aurait-il moyen qu'une fois un élément dans une liste utilisée, il soit "supprimé" ?

  10. #10
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par elea25170 Voir le message
    Y'aurait-il moyen qu'une fois un élément dans une liste utilisée, il soit "supprimé" ?
    Oui on peut, il y a la fonction remove...

    https://docs.python.org/fr/3/tutoria...tructures.html

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Il y a autre chose si je choisi toto il me répond et le met dans la liste des choix, ce qui pose problème pour la suite...

    Il faudrait à chaque fois tester si le choix qui est tapé existe vraiment et si il n'existe pas le signaler à l'utilisateur...

    Il faudrait aussi mettre plusieurs saut de ligne dans la présentation pour que ce soit plus simple à lire, perso je le fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    print("Dr Lenoir a été retrouvé assassiné dans le bureau de son manoir. Vous êtes l’enquêteur appelé pour résoudre ce meurtre. Saurez-vous retrouver le coupable, l’arme du crime et le motif ?")
    print("Six suspects étaient présents au manoir lors du meurtre :\n")
     
    liste = ["Madame Leblanc - frustrée et jalouse", "Madame Pervenche - puissante et impassible", "Colonel Moutarde - fort et athlétique",
             "Mademoiselle Rose - manipulatrice et charmeuse", "Docteur Olive - rusé et professionnel", "Professeur Violet - intelligent et astucieux"]
     
    print(*liste, sep="\n")
     
    print("\nSix armes possibles ont déjà été trouvées sur les lieux du crime :\n")
    liste2 = ["Une fiole de poison", "Un pistolet",
              "Un chandelier", "Un couteau", "Une épée", "Une corde"]
    print(*liste2, sep="\n")
     
    print("\nChacun des suspects avait une bonne raison de vouloir tuer Dr Lenoir :\n")
    liste3 = ["La jalousie", "Le goût du pouvoir",
              "La vengeance", "L'amour", "L'argent", "La gloire"]
    print(*liste3, sep="\n")
     
    print("\nVous avez toutes les clés en main... à vous de résoudre le mystère !")
    print("\nÉTAPE 1 : TROUVEZ LE COUPABLE")
     
    liste_coupables_proposes = []
    print("Liste des coupables déjà proposés:", liste_coupables_proposes, "\n")
     
    suspect = input("À votre avis, qui est le suspect? ")

  12. #12
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Pour les espaces c'était prévu, je m'occuperai de la présentation à la fin.
    Effectivement, je pensais compter sur la bonne volonté du joueur pour ne pas taper n'importe quoi, mais après réflexion, une vérification des mots proposés ne serait pas de trop. Pour l'instant je planche encore sur un autre problème : je n'arrive pas à demander de nouveau qui est le coupable après le premier tour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for i in coupable_final:
        while(suspect!=coupable_final):
            print("Cela ne peut pas être ",suspect, "car ", choix_alibis())
            liste_coupables_proposes.append(suspect)
            print(liste_coupables_proposes)
            break
    #FAIRE EN SORTE QUE REPOSE QUESTION A CHAQUE TOUR
    if(suspect==coupable_final):
        print("Bravo, vous avez devinez que ", coupable_final, "est le coupable. Vous pouvez passer à l'étape suivante.")
    Je suis certaine que je n'ai pas utilisé la bonne fonction, je suis encore en train de chercher le bon code ! (comme je vous l'ai dit je suis débutante, et mes erreurs doivent vous sembler bien idiotes )

    Encore une fois merci pour vos aides et vos suggestions, je vous en suis vraiment reconnaissante !

  13. #13
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par elea25170 Voir le message
    Pour les espaces c'était prévu, je m'occuperai de la présentation à la fin.
    Effectivement, je pensais compter sur la bonne volonté du joueur pour ne pas taper n'importe quoi, mais après réflexion, une vérification des mots proposés ne serait pas de trop.
    Oui il faut vérifier, une autre raison c'est que lorsque l'on tape un nom qui n'est pas dans la liste eh bien il est quand même ajouté à la liste des noms déjà proposés...

    Pour l'instant je planche encore sur un autre problème : je n'arrive pas à demander de nouveau qui est le coupable après le premier tour :
    La boucle for est de trop, la boucle while suffit... Exemple :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    from random import *
     
    coupables = ["Madame Leblanc", "Madame Pervenche", "Colonel Moutarde",
                 "Mademoiselle Rose", "Docteur Olive", "Professeur Violet"]
    alibi = ["au téléphone avec un collègue lors du meurtre", "était sorti dans un bar lors du meurtre",
             "discutait avec le jardinier lors du meurtre", "était avec son enfant lors du meurtre", "était dans un restaurant lors du meurtre"]
     
     
    def choix_coupables():
        return choice(coupables)
     
     
    coupable_final = choix_coupables()
    print('-------------------', coupable_final)
     
     
    def choix_alibis():
        return choice(alibi)
     
     
    print("Dr Lenoir a été retrouvé assassiné dans le bureau de son manoir. Vous êtes l’enquêteur appelé pour résoudre ce meurtre. Saurez-vous retrouver le coupable, l’arme du crime et le motif ?\n")
    print("Six suspects étaient présents au manoir lors du meurtre :\n")
     
    liste = ["Madame Leblanc - frustrée et jalouse", "Madame Pervenche - puissante et impassible", "Colonel Moutarde - fort et athlétique",
             "Mademoiselle Rose - manipulatrice et charmeuse", "Docteur Olive - rusé et professionnel", "Professeur Violet - intelligent et astucieux"]
     
    print(*liste, sep="\n")
     
    print("\nSix armes possibles ont déjà été trouvées sur les lieux du crime :\n")
    liste2 = ["Une fiole de poison", "Un pistolet",
              "Un chandelier", "Un couteau", "Une épée", "Une corde"]
    print(*liste2, sep="\n")
     
    print("\nChacun des suspects avait une bonne raison de vouloir tuer Dr Lenoir :\n")
    liste3 = ["La jalousie", "Le goût du pouvoir",
              "La vengeance", "L'amour", "L'argent", "La gloire"]
    print(*liste3, sep="\n")
     
    print("\nVous avez toutes les clés en main... à vous de résoudre le mystère !")
    print("\nÉTAPE 1 : TROUVEZ LE COUPABLE")
     
    liste_coupables_proposes = []
     
    while True:
        suspect = input("\nÀ votre avis, qui est le suspect? ")
     
        if (suspect != coupable_final):
            print("Cela ne peut pas être ", suspect, "car ", choix_alibis())
            liste_coupables_proposes.append(suspect)
     
            print("\nListe des coupables déjà proposés:\n",
                  liste_coupables_proposes)
        else:
            print("\nBravo, vous avez devinez que ", coupable_final,
              "est le coupable. Vous pouvez passer à l'étape suivante.")
            break

  14. #14
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    À partir de votre aide et de ce que j'ai trouvé sur Internet, j'ai pour l'instant réussi à faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    rom random import *
     
    coupables=["Leblanc", "Pervenche", "Moutarde", "Rose", "Olive", "Violet"]
    alibi=["au téléphone avec un collègue lors du meurtre","était sorti dans un bar lors du meurtre","discutait avec le jardinier lors du meurtre","était avec son enfant lors du meurtre", "était dans un restaurant lors du meurtre"]
     
     
    def choix_coupables():
        return choice(coupables)
    coupable_final=choix_coupables()
     
    def choix_alibis():
        return choice(alibi)
        alibi.remove(choix_alibis())
     
    print("Dr Lenoir a été retrouvé assassiné dans le bureau de son manoir. Vous êtes l’enquêteur appelé pour résoudre ce meurtre. Saurez-vous retrouver le coupable, l’arme du crime et le motif ?")
    print("\nSix suspects étaient présents au manoir lors du meurtre : ")
    liste=["Madame Leblanc - frustrée et jalouse", "Madame Pervenche - puissante et impassible", "Colonel Moutarde - fort et athlétique", "Mademoiselle Rose - manipulatrice et charmeuse", "Docteur Olive - rusé et professionnel", "Professeur Violet - intelligent et astucieux"]
    print(*liste,sep="\n")
    print("Tout les 6 étaient présents au manoir, car Dr Lenoir les avaient convié pour leur présenter sa nouvelle grande découverte. Malheureusement, il n'en a pas eu le temps...")
    print("\nSix armes possibles ont déjà été trouvées sur les lieux du crime :")
    liste2=["Une fiole de poison", "Un pistolet", "Un chandelier", "Un couteau", "Une épée", "Une corde"]
    print(*liste2,sep="\n")
    print("\nChacun des suspects avait une bonne raison de vouloir tuer Dr Lenoir :")
    liste3=["La jalousie", "Le goût du pouvoir", "La vengeance", "L'amour", "L'argent", "La gloire"]
    print(*liste3,sep="\n")
    print("\nVous avez toutes les clés en main... à vous de résoudre le mystère !")
    print("\nÉTAPE 1 : TROUVEZ LE COUPABLE")
    print("/!\ Merci de n'utiliser que les diminutifs des personnages (c'est-à-dire Leblanc, Pervenche, Moutarde, Rose, Olive et Violet) lorsque vous rentrerez le nom du suspect.")
    print("\n")
     
    liste_coupables_proposes=[]
    print("Liste des coupables déjà proposés:", liste_coupables_proposes,"\n")
     
    while True:
        suspect=input("À votre avis, qui est le coupable?")
        if(suspect!=coupable_final):
            print("\n", "Cela ne peut pas être ",suspect, "car ", choix_alibis(), "\n")
            alibi.remove(choix_alibis())
            liste_coupables_proposes.append(suspect)
            print("Liste des coupables déjà proposés:", liste_coupables_proposes,"\n")
        else:
            print("\n", "Bravo, vous avez devinez que ", choix_coupables(), "est le coupable. Vous pouvez passer à l'étape suivante.")
            break
    Comme vous pouvez le voir j'ai placé des espaces, j'ai placé la fonction remove et j'ai corrigé la boucle while. Il me reste encore la vérification des noms à coder, et j'ai déjà ma petite idée sur comment faire, là n'est pas le problème (qui plus est nous avions fait un exercice de ce genre en cours, donc je vais pouvoir me baser là-dessus !)

    Mais c'est le Remove qui ne fonctionne pas. je l'ai placé dans la fonction et dans la boucle, mais lorsque je run le programme, il me ressort quand même deux fois le même alibi. Si vous pouviez m'aider juste pour ceci, ça serait vraiment super !

  15. #15
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par elea25170 Voir le message

    Mais c'est le Remove qui ne fonctionne pas.
    C'est normal il est placé après le return il n'est donc jamais exécuté...

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def choix_alibis():
        choix = choice(alibi)
        alibi.remove(choix)
        return choix

  16. #16
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    C'est normal il est placé après le return il n'est donc jamais exécuté...
    Quand je vous dis que je débute je ne plaisante vraiment pas !

    J'ai donc modifié le remove (et ça marche, les alibis ne sont donnés qu'une fois, merci !). J'ai également mis en place une vérification des noms entrés, empêchant le joueur de rentrer n'importe quoi.

    Le seul problème qui me reste, et j'ai beau réfléchir cela m'échappe : je vous fait un copier-coller, ce sera bien plus parlant que des explications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    À votre avis, qui est le coupable?Olive
     
     Cela ne peut pas être  Olive car  était avec son enfant lors du meurtre 
     
    Liste des coupables déjà proposés: ['Olive'] 
     
    À votre avis, qui est le coupable?Pervenche
     
     Bravo, vous avez devinez que  Olive est le coupable. Vous pouvez passer à l'étape suivante.
    Pourquoi, lorsque je rentre le coupable, python me dit que ce n'est pas lui pour le sortir le tour d'après ? C'est quand même bien embêtant lol

  17. #17
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par elea25170 Voir le message
    Pourquoi, lorsque je rentre le coupable, python me dit que ce n'est pas lui pour le sortir le tour d'après ? C'est quand même bien embêtant lol
    Ben sans le code je ne peux pas vous dire... Postez le code pour que je puisse tester...

  18. #18
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Ben sans le code je ne peux pas vous dire... Postez le code pour que je puisse tester...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    from random import *
     
    coupables=["Leblanc", "Pervenche", "Moutarde", "Rose", "Olive", "Violet"]
    alibi=["au téléphone avec un collègue lors du meurtre","était sorti dans un bar lors du meurtre","discutait avec le jardinier lors du meurtre","était avec son enfant lors du meurtre", "était dans un restaurant lors du meurtre"]
     
     
    def choix_coupables():
        choix1=choice(coupables)
        coupables.remove(choix1)
        return choix1
    coupable_final=choix_coupables()
     
    def choix_alibis():
        choix2=choice(alibi)
        alibi.remove(choix2)
        return choix2
     
    print("Dr Lenoir a été retrouvé assassiné dans le bureau de son manoir. Vous êtes l’enquêteur appelé pour résoudre ce meurtre. Saurez-vous retrouver le coupable, l’arme du crime et le motif ?")
    print("\nSix suspects étaient présents au manoir lors du meurtre : ")
    liste=["Madame Leblanc - frustrée et jalouse", "Madame Pervenche - puissante et impassible", "Colonel Moutarde - fort et athlétique", "Mademoiselle Rose - manipulatrice et charmeuse", "Docteur Olive - rusé et professionnel", "Professeur Violet - intelligent et astucieux"]
    print(*liste,sep="\n")
    print("Tout les 6 étaient présents au manoir, car Dr Lenoir les avaient convié pour leur présenter sa nouvelle grande découverte. Malheureusement, il n'en a pas eu le temps...")
    print("\nSix armes possibles ont déjà été trouvées sur les lieux du crime :")
    liste2=["Une fiole de poison", "Un pistolet", "Un chandelier", "Un couteau", "Une épée", "Une corde"]
    print(*liste2,sep="\n")
    print("\nChacun des suspects avait une bonne raison de vouloir tuer Dr Lenoir :")
    liste3=["La jalousie", "Le goût du pouvoir", "La vengeance", "L'amour", "L'argent", "La gloire"]
    print(*liste3,sep="\n")
    print("\nVous avez toutes les clés en main... à vous de résoudre le mystère !")
    print("\nÉTAPE 1 : TROUVEZ LE COUPABLE")
    print("/!\ Merci de n'utiliser que les diminutifs des personnages (c'est-à-dire Leblanc, Pervenche, Moutarde, Rose, Olive et Violet) lorsque vous rentrerez le nom du suspect.")
    print("\n")
     
    liste_coupables_proposes=[]
    print("Liste des coupables déjà proposés:", liste_coupables_proposes,"\n")
     
    while True:
        suspect=input("À votre avis, qui est le coupable?")
        if(suspect!=coupable_final):
            if suspect in coupables:
                print("\n", "Cela ne peut pas être ",suspect, "car ", choix_alibis(), "\n")
                liste_coupables_proposes.append(suspect)
                print("Liste des coupables déjà proposés:", liste_coupables_proposes,"\n")
            else:print("Attention, le nom que vous avez rentré ne correspond pas. Veuillez réessayez.")
        else:
            print("\n", "Bravo, vous avez devinez que ", choix_coupables(), "est le coupable. Vous pouvez passer à l'étape suivante.")
            break

  19. #19
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ok c'est parce que vous avez modifié une partie du code que j'avais posté :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else:
            print("\n", "Bravo, vous avez devinez que ", choix_coupables(),
                  "est le coupable. Vous pouvez passer à l'étape suivante.")
            break

    Ici avec ceci choix_coupables() vous exécutez une deuxième fois la fonction du coup il va rechercher aléatoirement un autre coupable et celui-ci sera différent* du coupable qui a été choisi la première fois...

    La première fois que la fonction choix_coupables a été exécutée comme cela : coupable_final = choix_coupables() le résultat (le coupable choisi) a été stocké dans la variable coupable_final c'est donc cette variable que vous devez utiliser :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else:
            print("\n", "Bravo, vous avez devinez que ", coupable_final,
                  "est le coupable. Vous pouvez passer à l'étape suivante.")
            break

    C'est d'ailleurs cette même variable que vous utilisez dans la condition juste avant : if(suspect!=coupable_final):...

    * différent car le premier coupable choisi a été supprimé de la liste ce qui d'ailleurs n'est pas nécessaire, la fonction choix_coupables peut être comme ça (sans la suppression) :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def choix_coupables():    
        return choice(coupables)

  20. #20
    Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Ah d'accord ! J'ai donc modifié, et tout marche comme il faut, j'ai même fait jouer d'autres membres de ma famille (et certains ont essayé de mettre des noms autres que "Pervenche, Leblanc, etc", heureusement qu'il y a le système de vérification finalement !

    Il ne me reste que les étapes 2 et 3 (armes et motifs) - ce qui devrait aller vite puisqu'il me suffit de reprendre l'étape 1.

    Encore merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. msi ou comment réaliser un installeur?
    Par herzleid dans le forum Delphi
    Réponses: 11
    Dernier message: 09/04/2007, 19h27
  2. Réaliser un Chat avec support IP
    Par Sub0 dans le forum Développement
    Réponses: 12
    Dernier message: 14/07/2006, 10h59
  3. Comment réaliser des modèles de documentations avec XML ?
    Par Dams76 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 29/08/2003, 02h15
  4. [Radio fréquence] réalisation d'une application
    Par WriteLN dans le forum Développement
    Réponses: 14
    Dernier message: 05/06/2003, 14h36
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo