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
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
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"]
}
}
}
}
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
Le Tout est souvent plus grand que la somme de ses parties.
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 ???)
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.
Le Tout est souvent plus grand que la somme de ses parties.