Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » de la solitude
Ti.du.du39 Hors ligne Membre de CreativeCalc Points: 1290 Défis: 0 Message

de la solitude

Posté le 26/06/2015 20:11

Alors voila, j'aimerai crée un programme (en basic hein ) où l'utilisateur discute avec une personne où a chaque fois, l'utilisateur à le choix entre 2 réponses ("oui/bof", "mouis../super ;)", "pourquoi pas / je n’attendais que sa ;)" , etc... ) voire 3 si je me débrouille bien -sa sera sous la forme getkey 29/79- , enfin bref, ensuite , selon la réponse que l'utilisateur entre, l'ordinateur répond selon les instructions du programme, cela donnerait un schéma comme cela:

(désolé pour le schéma fait a l'arrache )
Mais sur ce schéma, il y a 5 Questions (carré rouge) par "chemin" (et il y a 24 chemin) mais je ne sait pas de quel manière faire sa,
je pensais a une imbrication de if et de while getkey, sauf que du coup, je ne sais pas comment faire pour l'affichage (en text)

Merci pour toutes vos aides

PS: NON je ne suis pas un gros geek anti-social , dépressif, sans amis et suicidaire

Fichier joint


Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 26/06/2015 20:13 | #


Oh une loi binomiale !
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

Citer : Posté le 26/06/2015 20:18 | #


Schéma de Bernouilli serait plus juste
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 26/06/2015 20:24 | #


Bon, alors la structure de programme qui convient à ça est typiquement une structure While.

Je m'explique.
Le nombre d'itérations est potentiellement infini.
Les nombre de conditions est infini.
La récursivité n'est pas un choix acceptable.

Voilà donc la structure intéressante :
While 1
    Afficher le message de la question actuelle
    Afficher les réponses de la question actuelle
    Lire les entrées utilisateur
    Mettre à jour le numéro de la question actuelle
WhileEnd


Sachant que toute la complexité du programme revient à l'écriture de la loi de numérotation qui doit permettre un nombre suffisant de rassemblements pour éviter la croissance exponentielle du nombre d'issues.
Dark storm En ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 26/06/2015 20:27 | #


Utilise les strings et deux sous programme

"A" est l'étape actuelle (1 au début, puis 2 ou 3 en fonction du choix, puis 4 ou 5 ou 6 ou 7, etc., le tout en colonne sur ton image)

Le programme principal ressemble à ça :
Tant que y'a des questions
    Récupérer la question
    Récupérer les réponses possibles
    Traiter les réponses
    Afficher la question et les réponses
    Demander à l'utilisateur de choisir
    Calculer la nouvelle étape
Fin Tant que


Dans ton sous-programme "questions", tu met un truc du genre :
A=1=>"Salut, comment va-tu ?"->Str 1
A=2=>"Content que tu aille bien, tu sors ce soir ?"->Str 1
A=3=>"C'est dommage que tu sois triste, tu veux que je te chante une chanson ?"->Str1

Et dans réponses :
A=1=>"Bien|Bof bof"->Str 2
A=2=>"Oui|Non, je reste chez moi"->Str 2
A=3=>"Oui, une chanson !|Non, j'aime pas ta musique

Là du coup il te faudra un petit programme qui parse la string 2 pour afficher les deux réponses l'une en dessous de l'autre (lis un tuto sur les strings, c'est assez simple au final)

Ensuite, à chaque fois que l'utilisateur répond, la nouvelle question aura pour valeur A * 2 + réponse (0 ou 1)

A=1 je répond 0 => A = 2
A=1 je répond 1 => A = 3
A=2 je répond 0 => A = 4
A=2 je répond 1 => A = 5
A=3 je répond 0 => A = 6
A=3 je répond 1 => A = 7

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 27/06/2015 09:12 | #


Lephenixnoir a écrit :
Bon, alors la structure de programme qui convient à ça est typiquement une structure Goto - Lbl.

Je m'explique.
Le nombre d'itérations est potentiellement infini.
Les nombre de conditions est infini.
La récursivité n'est pas un choix acceptable.

Voilà donc la structure intéressante :
Lbl Q
    Afficher le message de la question actuelle
    Afficher les réponses de la question actuelle
    Lire les entrées utilisateur
    Mettre à jour le numéro de la question actuelle
Goto Q


Sachant que toute la complexité du programme revient à l'écriture de la loi de numérotation qui doit permettre un nombre suffisant de rassemblements pour éviter la croissance exponentielle du nombre d'issues.


Un while 1 serait plus acceptable
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 27/06/2015 09:15 | #


Je m'en suis rendu compte après. Trop d'assembleur ces derniers jours...

Edit : j'ai édité, merci.
Breizh_craft En ligne Modérateur Points: 1118 Défis: 7 Message

Citer : Posté le 27/06/2015 10:21 | #


Non tu n'est pas un geek, les geeks ne font pas ce genre de choses... (enfin ils le faisaient avant de devenir geek)
Breizh.pm – Un adminsys qui aime les galettes.
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 27/06/2015 10:55 | #


Ah oui, et dans cette partie-là :
Dark Storm a écrit :
Dans ton sous-programme "questions", tu met un truc du genre :
A=1⇒"Salut, comment va-tu ?"→Str 1
A=2⇒"Content que tu aille bien, tu sors ce soir ?"→Str 1
A=3⇒"C'est dommage que tu sois triste, tu veux que je te chante une chanson ?"→Str1

Oublie pas de rajouter quelque chose comme :
A≥100⇒Goto 1
A≥200⇒Goto 2

A=1⇒...
...
A=99⇒...
A<100⇒Return

Lbl 1
A=100⇒...
...
A=199⇒...
A<200⇒Return

Lbl 2
...

pour éviter qu'il parse tout le programme à chaque fois.
Dark storm En ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 27/06/2015 10:58 | #


Yep, mais avant qu'il fasse 300 questions, y'a de la marge
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 27/06/2015 11:00 | #


C'était surtout par principe, ce genre de programmes a ce gros défaut
Ti.du.du39 Hors ligne Membre de CreativeCalc Points: 1290 Défis: 0 Message

Citer : Posté le 29/06/2015 16:50 | #


Merci pour toutes vos réponses
Je vais lire tout sa et essayer vos différents conseils

En attendant, il n'y a pas une technique pour le "scrolling" quand on affiche les Q-R en text X,Y,"[texte]" pour que l'image monte d'une ligne (7pixels) à chaque fois ?
" L'Homme prouve son intelligence en innovant dans la connerie "
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 29/06/2015 16:51 | #


En Text ? Non, absolument rien. Tu es obligé de tout effacer.
Ti.du.du39 Hors ligne Membre de CreativeCalc Points: 1290 Défis: 0 Message

Citer : Posté le 29/06/2015 17:25 | #


Ah si , j'ai trouver :
Text ,1,1,Str 1
Text ,7,1,Str 2
Text ,13,1,Str 3
Text ,19,1,Str 4
Text ,25,1,Str 5
Text ,31,1,Str 6
Text ,37,1,Str 7
Text ,43,1,Str 8
Text ,49,1,Str 9
Text ,55,1,Str 10
Str 2->Str 1
Str 3->Str 2
Str 4->Str 3
Str 5->Str 4
Str 6->Str 5
Str 7->Str 6
Str 8->Str 7
Str 9->Str 8
Str 10->Str 9
Str 11[green][celle de la réponse à afficher][/green] -> Str 10

et on a plus qu'à rafraichir la page
" L'Homme prouve son intelligence en innovant dans la connerie "
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 29/06/2015 17:27 | #


Ah ben oui, mais du cout tu réaffiches tout

C'est vrai que point du vue manipulation du texte c'est pas mal... bien trouvé
Ti.du.du39 Hors ligne Membre de CreativeCalc Points: 1290 Défis: 0 Message

Citer : Posté le 29/06/2015 17:32 | #


mais je dois pouvoir optimiser sa
For 1->A to 10 [green]// 10 si la 11éme est celle de la reponse [/green]
Str A+1 -> Str A
Text 6*(A-1)+1,1,Str A
next

Voila
" L'Homme prouve son intelligence en innovant dans la connerie "
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 29/06/2015 17:37 | #


Eh bien... non.
L'opérateur Str ne prend pas de variable en argument.
Ti.du.du39 Hors ligne Membre de CreativeCalc Points: 1290 Défis: 0 Message

Citer : Posté le 29/06/2015 17:44 | #


En effet, sa ne marche pas.. Lephenixnoir peut vous dégouter du Basic en quelque secondes...

" L'Homme prouve son intelligence en innovant dans la connerie "
Dark storm En ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 29/06/2015 17:45 | #


En mode Locate, quelqu'un avait trouvé une astuce
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 22889 Défis: 149 Message

Citer : Posté le 29/06/2015 18:00 | #


Cela dit, en mode Locate, tu peux te contenter de jouer du scrolling pour faire remonter tout le texte d'une ligne...

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2023 | Il y a 79 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd