Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme Dictionnaire et Variable

    12 septembre 2021 à 20:01:27

    Bonjour j'ai petit problème j'ai réussi pour afficher une question et ou une réponse de mon jeu.

    Et j'ai deux problème le premier est que je n'arrive pas a redemander au joueur de rerepondre a une nouvelle question.

    Et le deuxième problème et de changer de question par rapport au choix du joueur a la question précédente.

    from ast import Str
    import random
    import tkinter
    from tkinter.constants import BOTH, BOTTOM, CENTER, CHAR, DISABLED,  NORMAL, LEFT, RIGHT, TOP, END
    from typing import Text
    import histoire
    tkinter.CallWrapper('wm', 'iconphoto', '/Users/maxime/Desktop/Python/Jeu\ Narratificone.png')
    
    # creer une premiere fenetre
    window = tkinter.Tk()
    
    #personnaliser cette fenetre
    window.title("Lemane")# Lemane pour Benoît Allemane voix francaise de Morgan Freeman
    window.geometry("1080x720")
    window.minsize(1080, 720) # taille minimum de la fenetre
    window.maxsize(1080, 720) # taille maximum de la fenetre
    #window.iconbitmap("/Users/maxime/Desktop/Python/Jeu\ Narratif/icone.ico")
    window.config(background='#292828') # couleur de fond avec le # de la couleur
    
    
    #ajouer un premier texte
    #label_title = tkinter.Label(window, text="Bienvenu sur le jeu Lemane", font=("Courrier", 40), bg='#292828', fg='white') # Permet de mettre du text de choisir la police et la taille et aussi le fond du texte
    #label_title.pack(side=TOP)
    
    
    def action():
        rep = zone_de_texte_joueur.get()
        if rep:
            zone_de_texte_joueur.delete(0, END)
            zone_de_texte_jeu.config(state=NORMAL)
            if rep == "1":
                    zone_de_texte_jeu.insert(END, histoire.questions[1]["title"] + '\n')
                    zone_de_texte_jeu.config(state=DISABLED)
            elif rep == "2":
                zone_de_texte_jeu.insert(END, histoire.questions[2]["title"] + '\n')
                zone_de_texte_jeu.insert(END, histoire.questions[2]["reponses"][1]["title"] + '\n')
                zone_de_texte_jeu.config(state=DISABLED)
                
     
                
            else:
                zone_de_texte_jeu.insert(END, "Veuillez choisir entre le choix (1) ou le choix (2)" + '\n')
                zone_de_texte_jeu.config(state=DISABLED)       
                
    
    
    
    
    
    
    
    
    #ajouter un premier bouton
    button = tkinter.Button(window, text="Entrer", font=("Courrier", 40),highlightbackground='#292828', fg='blue', command=action)
    button.place(x=950, y=650) 
    zone_de_texte_joueur = tkinter.Entry ()
    zone_de_texte_joueur.place(x=20, y=652,width=910, height=50)
    zone_de_texte_jeu = tkinter.Text (window, state=DISABLED)
    zone_de_texte_jeu.place(x=20, y=20,width=1040, height=610)
    
    
    # afficher
    window.mainloop()

    Voici mon code.

    Merci d'avance pour le temps passer à m'aider.


    12 septembre 2021

    -
    Edité par MaximeMauchamp1 12 septembre 2021 à 20:06:37

    • Partager sur Facebook
    • Partager sur Twitter
      13 septembre 2021 à 9:03:12

      Bonjour,

      Pour redemander de jouer, il faut poser la question dans une boucle, et la question sera "choix 1, choix 2 ou 3 pour quitter" de façon à sortir de la boucle en fin de jeu

      Pour changer de question, on n'a pas le module "histoire", donc on ne sait pas comment est câblée la variable "questions", mais il suffit d'incrémenter à chaque tour de boucle l'indice de cette variable ou même de tirer un nombre au hasard comme indice pour choisir une question au hasard

      -
      Edité par Phil_1857 13 septembre 2021 à 9:05:47

      • Partager sur Facebook
      • Partager sur Twitter
        13 septembre 2021 à 10:52:21

        même réponse qui est une question: comment est-structuré histoire ?

        il faudrait que chaque question connaisse la question suivante selon la réponse choisie

        • Partager sur Facebook
        • Partager sur Twitter
          15 septembre 2021 à 23:26:44

          questions = {
              1 : {
                  # description: 'Vous arrivez dans une pièce sombre, devant-vous une porte et sur la gauche fenêtre',
                  "title": 'Vous arrivez dans une pièce sombre, devant-vous une porte et sur la gauche une fenêtre \nChoissez si vous passez par la porte (1) ou par la fenêtre (2)',
                  "reponses": {
                      1: {
                          "title": 'je sors par la porte',
                          "questionsSuivantes": 2
                      },
                      2: {
                          "title": 'je sors par la fenêtre',
                          "questionsSuivantes": 2
                      }
                  }
              },
              2 : {
                  "title": "Vous sautez par la fênetre. Et vous tombez nez à nez avec un tigre. \nJuste à côté de vous se trouve les restes d'un feu qui semble allumable. Que faites-vous ?",
                  "reponses": {
                      1: {
                          "title" : 'J\'allume le feu (1)\n',
                          "questionsSuivantes": "3"
                      },
                      2: {
                          "title": "Je me sauve (2)\n",
                          "questionSuivantes": "4"
                      },
                      3: {
                          "title" : "je combat le tigre (3)\n",
                          "questionsSuivantes": ["99", "12"]
          
                      }
                  }
              }
          }

          Voila comment est construit histoire

          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2021 à 4:22:22

            Tu te retrouves avec un dictionnaire de dictionnaires de dictionnaires ...
            Comment vas-tu savoir à quel niveau tu te trouves?
            Je pense que ce serait plus simple à un seul niveau.
            Pour chaque réponse, on pourrait avoir un biais:
            Réponse 1 à la question 1: biais = 1000, si je répond 1, je vais à 1001
            Ou si tu veux aller en str, la réponse '1' à la question '1' sera à '1.1'

            La réponse serait une liste ou un dictionnaire de tupples:
             "reponse" : [("1", "Vous sautez par la fenetre", "1.1"), ("2", "Vous sortez par la porte", "1.2"), ...]
            On peut mettre entre parenthèses le choix associé à chaque réponse possible comme tu as fait.
            On peut vérifier si le choix est correct, c'est valable pour une liste ou un dictionnaire.
            C'est plus facile de passer à la question '2' quand on en a fini avec les sous-questions de la question '1'.

            Si je met les réponses dans un dictionnaire comme suit:
                "reponses" : {"1": ("Vous sautez par la fenetre", "1.1"), "2": ("Vous sortez par la porte", "1.2")}
            Voici ce que ça donne pour la boucle de base:   (Python 3.8 ou suivants)
            next = "1"
            while next != "999":
                print(questions[next]["title"])
                print(*[v[0]+" ("+k+")" for k,v in questions[next]["reponses"].items()], sep='\n')
                while new:=input("Reponse? ") not in questions[next]["reponses"].keys():
                    print("Choix invalide")
                next = questions[next]["reponses"][new][1]

            -
            Edité par PierrotLeFou 16 septembre 2021 à 5:36:09

            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              16 septembre 2021 à 10:18:56

              oula, mélange de type ligne 8 et 12, questionssuivantes sont des entiers, ensuite ligne 21, 25 ce sont des chaines de caractères, et enfin ligne 29, une liste de chaines (une réponse conduit vers 2 questions en même temps ???)
              • Partager sur Facebook
              • Partager sur Twitter

              Probleme Dictionnaire et Variable

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown