Forum Liberty Basic France
• Index
Reprise du message précédent
Christophe: Uune seule adresse:
https://www.virtualbox.org/wiki/Linux_Downloads
Christophe: Uune seule adresse:
https://www.virtualbox.org/wiki/Linux_Downloads
____________________
Roro
Roro
Voilà qui est fait. La précédente tentative était pas loin d'être un fiasco, et là ça s'est déroulé sans accroc, je sais pas pourquoi. C'est encore un peu compliqué pour partager les clef et disques usb (forcément, quand un système l'accapare, il n'est plus disponible pour l'autre), mais j'ai pu installer JB et lancer ton prog.
Maintenant ça fait bien pouet-pouet
Mais pour l'audio il manque des traits et des points, serait-ce à cause de la virtualisation ? Pourquoi pas des points et des traits calibrés en durée, un trait valant trois points, et terminer point et trait par un silence de la valeur d'un point, ça devrait être faisable avec Audacity ?
Maintenant ça fait bien pouet-pouet

Mais pour l'audio il manque des traits et des points, serait-ce à cause de la virtualisation ? Pourquoi pas des points et des traits calibrés en durée, un trait valant trois points, et terminer point et trait par un silence de la valeur d'un point, ça devrait être faisable avec Audacity ?
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
J'ai un peu nettoyé le zip
Je pense que le son "point " est trop court; en vertu du code, on devrait l'entendre et on ne l'entend pas
Je savais qu'il y aurait des réclamations au niveau du son
Mais c'est du morse écossais (cornemuse inside)
Je pense que le son "point " est trop court; en vertu du code, on devrait l'entendre et on ne l'entend pas
Je savais qu'il y aurait des réclamations au niveau du son
Mais c'est du morse écossais (cornemuse inside)

____________________
Roro
Roro
Tiens, puisque tu m'as fais passer sous VirtualBox, je me suis vengé !
J'ai créé trois fichiers audio :
point.wav : 1/10è de seconde de son et 1/10è de seconde de silence
trait.wav : 3/10è de seconde de son et 1/10è de seconde de silence
espace2pt.wav : 2/10è de seconde de silence (et pas 3, puisque qu'un espace vaut trois point, et qu'il y en a déjà un à la fin de point.wav et de trait.wav
J'ai modifié ton prog comme suit :
Code VB :
Pas la peine de recopier, tout est contenu dans le zip : Morse_RoStoff.zip
C'est sympa mais il y a parfois des claquements parasites qui dénaturent le message.
Maintenant qu'on sait bientôt faire un wav, (et donc du silence), pourquoi ne génèrerait-on pas, en début de programme, 36 wavs représentant autant de caractères, avec une vitesse et une hauteur de note qu'on choisirait ?
(j'avais dit que je me vengerais, hé hé hé niak niak
)
Edité par Christophe Le 28/02/2016 à 12h12
J'ai créé trois fichiers audio :
point.wav : 1/10è de seconde de son et 1/10è de seconde de silence
trait.wav : 3/10è de seconde de son et 1/10è de seconde de silence
espace2pt.wav : 2/10è de seconde de silence (et pas 3, puisque qu'un espace vaut trois point, et qu'il y en a déjà un à la fin de point.wav et de trait.wav
J'ai modifié ton prog comme suit :
Code VB :
for h=1 to p ' ------Son for d=1 to len(enr$(h)) 'on ressort les trucs du congélo ' print mid$(enr$(h),d,1) select case mid$(enr$(h),d,1) 'on analyse par caractères case "." playwave "point.wav" ',async 'playwave "" 'gosub [pause] case "-" playwave "trait.wav"',async 'playwave "" 'gosub [pause] 'case ".§" 'temp=700: playwave "": gosub [pause]: temp=200 end select print temp next d playwave "espace2pt.wav" next h
Pas la peine de recopier, tout est contenu dans le zip : Morse_RoStoff.zip
C'est sympa mais il y a parfois des claquements parasites qui dénaturent le message.
Maintenant qu'on sait bientôt faire un wav, (et donc du silence), pourquoi ne génèrerait-on pas, en début de programme, 36 wavs représentant autant de caractères, avec une vitesse et une hauteur de note qu'on choisirait ?
(j'avais dit que je me vengerais, hé hé hé niak niak

Edité par Christophe Le 28/02/2016 à 12h12
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Citation:
Bah parce que générer 36 wav, ça va prendre 36 heures
Mais l'idée n'est pas mauvaise.
Je vais voir ce que donne ton truc
A +
EDIT: Hey...C'est pas mal, on se croirait dans un film de guerre
Mais le silence entre les lettres est trop long
Dans un message en morse, ça enchaine (plus
36 wavs représentant autant de caractères
Bah parce que générer 36 wav, ça va prendre 36 heures
Mais l'idée n'est pas mauvaise.
Je vais voir ce que donne ton truc
A +
EDIT: Hey...C'est pas mal, on se croirait dans un film de guerre
Mais le silence entre les lettres est trop long
Dans un message en morse, ça enchaine (plus
____________________
Roro
Roro
Tatie, tatie tata ! Bon, les enfants, y'a du taf, du bread over the planche, comme pourraient dire les Britiches, je ne pensais pas qu'on pouvait autant disserter sur du morse : Morse sur Wikipedia
pmp, tu vois ce qui t'attend ^^
Roland:
Théoriquement non, je me suis basé sur ce doc pour confirmer mes souvenirs :
International Morse code:
...
2.1 A dash is equal to three dots.
2.2 The space between the signals forming the same letter is equal to one dot.
2.3 The space between two letters is equal to three dots.
2.4 The space between two words is equal to seven dots.
...
Par contre il est très possible que JB/LB n'ait pas été conçu pour gérer des wav aussi brefs, il y a peut-être des temps de latence quand il charge un wav. constatation qui va dans le sens d'un wav par lettre et non par tiret ou point.
J'ai oublié de générer l'espace entre deux mots. Au fait, je pensais que la barre de fraction qu'utilise pmp était une invention à lui, en fait non, je viens d'apprendre qu'il s'agit bien d'une notation pour séparer les mots (pas les lettres). C'est juste une notation, je ne crois pas qu'on envoie de "/"
pmp, tu vois ce qui t'attend ^^
Roland:
Mais le silence entre les lettres est trop long
Théoriquement non, je me suis basé sur ce doc pour confirmer mes souvenirs :
International Morse code:
...
2.1 A dash is equal to three dots.
2.2 The space between the signals forming the same letter is equal to one dot.
2.3 The space between two letters is equal to three dots.
2.4 The space between two words is equal to seven dots.
...
Par contre il est très possible que JB/LB n'ait pas été conçu pour gérer des wav aussi brefs, il y a peut-être des temps de latence quand il charge un wav. constatation qui va dans le sens d'un wav par lettre et non par tiret ou point.
J'ai oublié de générer l'espace entre deux mots. Au fait, je pensais que la barre de fraction qu'utilise pmp était une invention à lui, en fait non, je viens d'apprendre qu'il s'agit bien d'une notation pour séparer les mots (pas les lettres). C'est juste une notation, je ne crois pas qu'on envoie de "/"
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
En fait, tes 36 wav, il suffit de les générer une fois et de les mettre dans le dossier.
Mais la boucle de lecture va être plus longue (36 "if" ou 36 "case")
Les "if" sont tous lus; les "cases" non
Reste à savoir si la différence entre un "case" trouvé en début et en fin de boucle est perceptible à l'oreille.
Mais la boucle de lecture va être plus longue (36 "if" ou 36 "case")
Les "if" sont tous lus; les "cases" non
Reste à savoir si la différence entre un "case" trouvé en début et en fin de boucle est perceptible à l'oreille.
____________________
Roro
Roro
Il y aura en tout cas moins de différence que pour un wav par point ou trait. On pourrait aussi envisager un tableau.
Il devrait être possible de générer automatiquement les codes au lieu de se les coltiner à la main. Je n'ai pas l'algorithme en tête mais ça doit pas être insurmontable. On avait parlé d'une modulation d'un signal par l'autre quand on parlait du générateur BF, et du morse c'est une modulation en tout-ou-rien. On pourrait même créer directement la phrase sans passer par la création individuelles des lettres... Même si en cet instant je ne sais pas trop comment.
pmp, on est toujours dans dans ta discussion, et en attendant des nouvelles de ton menu à boutons, nous projetisons sur la comête
Il devrait être possible de générer automatiquement les codes au lieu de se les coltiner à la main. Je n'ai pas l'algorithme en tête mais ça doit pas être insurmontable. On avait parlé d'une modulation d'un signal par l'autre quand on parlait du générateur BF, et du morse c'est une modulation en tout-ou-rien. On pourrait même créer directement la phrase sans passer par la création individuelles des lettres... Même si en cet instant je ne sais pas trop comment.
pmp, on est toujours dans dans ta discussion, et en attendant des nouvelles de ton menu à boutons, nous projetisons sur la comête

____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
J'ai essayé un truc mais sa ne marche pas, déja le a$=Inkey$ ne marche pas, mais je pense que se n'est pas la seule erreur ^^
Merci de jetter un coup d'oeil
Code VB :
Edité par pmp Le 29/02/2016 à 20h37
Merci de jetter un coup d'oeil
Code VB :
[Recevoir] NOMAINWIN WindowHeight=800 WindowWidth=700 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Décoder " for graphics for graphics_nsb AS #a 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$ = "--.." Chiffre = INT(26*RND(1)) if ( Chiffre = 1 ) then Lettre$ = ".-" if ( Chiffre = 2 ) then Lettre$ = "-..." if ( Chiffre = 3 ) then Lettre$ = "-.-." if ( Chiffre = 4 ) then Lettre$ = "-.." if ( Chiffre = 5 ) then Lettre$ = "." if ( Chiffre = 6 ) then Lettre$ = "..-." if ( Chiffre = 7 ) then Lettre$ = "--." if ( Chiffre = 8 ) then Lettre$ = "...." if ( Chiffre = 9 ) then Lettre$ = ".." if ( Chiffre = 10 ) then Lettre$ = ".---" if ( Chiffre = 11 ) then Lettre$ = "-.-" if ( Chiffre = 12 ) then Lettre$ = ".-.." if ( Chiffre = 13 ) then Lettre$ = "--" if ( Chiffre = 14 ) then Lettre$ = "-." if ( Chiffre = 15 ) then Lettre$ = "---" if ( Chiffre = 16 ) then Lettre$ = ".--." if ( Chiffre = 17 ) then Lettre$ = "--.-" if ( Chiffre = 18 ) then Lettre$ = ".-." if ( Chiffre = 19 ) then Lettre$ = "..." if ( Chiffre = 20 ) then Lettre$ = "-" if ( Chiffre = 21 ) then Lettre$ = "..-" if ( Chiffre = 22 ) then Lettre$ = "...-" if ( Chiffre = 23 ) then Lettre$ = "-..-" if ( Chiffre = 24 ) then Lettre$ = "-..-" if ( Chiffre = 25 ) then Lettre$ = "-.--" if ( Chiffre = 26 ) then Lettre$ = "--.." print #a, "place ";X;" ";Y;Lettre$ #a "when characterInput [A]" #a, "TRAPCLOSE [closeHelp]" wait a$=Inkey$ If a$=Lettre$ then print #A, "place ";X;" ";Y+5;" ;| Juste ! " else print #A, "place ";X;" ";Y+5;" ;| Faux ! " wait Goto [MENU] end if Y=Y+15 Goto [Recevoir]
Edité par pmp Le 29/02/2016 à 20h37
pmp pour que le code soit mis en conteneur, il faut que tu mette :
code=vb entre crochets [...] une ligne avant le code
Et: /code entre crochets [ ...] une ligne après le code
code=vb entre crochets [...] une ligne avant le code
Et: /code entre crochets [ ...] une ligne après le code
____________________
Roro
Roro
Tu as tout mis dans un sac et tu as secoué ? Y'en a vraiment dans tous les sens, là dedans... pmp, faudrait peut-être un peu réfléchir par toi-même, c'est la base même du hobby. (ou faire une pause salvatrice)
Alors, dans l'ordre :
Code VB :
10 secondes pour trouver l'anomalie, coefficient 1
Code VB :
Tant qu'il n'y aura pas de sous-programme nommé [A] et finissant par wait (et de virgule après le #a) je doute que tu puisse entrer quoi que ce soit au clavier^^ . Sur la ligne au dessus il manque le "setfocus" pour dire à l'ordinateur que c'est dans cette fenêtre qu'on va écrire quelque chose...
Code VB :
Il n'y a pas de [closeHelp] dans ton listing, et le programme le cherchera à un moment ou un autre. Et comme il n'y a pas de end sur le cheminement du programme, je crois même qu'on ne peut pas en sortir sans un ctrl-alt-suppr.
Code VB :
Quelle est l'utilité de ces variables ?
Il y a d'ailleurs risque de confusion entre a$=".-" et plus bas, a$=Inkey$, ton a$ aura la valeur entrée au clavier alors que tu croyais qu'elle était ".-"
Code VB :
Ce serait pas plutôt : print #a, "place ";X;" ";Y;" ;|"+Lettre$
Code VB :
C'est normal, cette ligne qui commence par "then" ?
La condition ne fonctionnera pas, puisque a$ est ta frappe au clavier, alors que Lettre$ est le code morse : l'ordi ne sait pas que "a" est ".-", il te faut trouver le moyen de le lui dire.
Juste à la suite :
Code VB :
C'est quoi, ce wait / goto [MENU] / end if ?
Le programme attend au milieu d'une condition et va à [MENU] quand une action de l'utilisateur est détectée. Mais [MENU] n'existe pas.
Code VB :
Ta fenêtre s'appelle #a ou #A ?
J'ai un peu adapté ton programme, à toi de comprendre comment il marche
Code VB :
A+
Edité par Christophe Le 29/02/2016 à 23h32
Alors, dans l'ordre :
Code VB :
open "Décoder " for graphics for graphics_nsb AS #a
10 secondes pour trouver l'anomalie, coefficient 1
Code VB :
#a "when characterInput [A]"
Tant qu'il n'y aura pas de sous-programme nommé [A] et finissant par wait (et de virgule après le #a) je doute que tu puisse entrer quoi que ce soit au clavier^^ . Sur la ligne au dessus il manque le "setfocus" pour dire à l'ordinateur que c'est dans cette fenêtre qu'on va écrire quelque chose...
Code VB :
#a, "TRAPCLOSE [closeHelp]"
Il n'y a pas de [closeHelp] dans ton listing, et le programme le cherchera à un moment ou un autre. Et comme il n'y a pas de end sur le cheminement du programme, je crois même qu'on ne peut pas en sortir sans un ctrl-alt-suppr.
Code VB :
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$ = "--.."
Quelle est l'utilité de ces variables ?
Il y a d'ailleurs risque de confusion entre a$=".-" et plus bas, a$=Inkey$, ton a$ aura la valeur entrée au clavier alors que tu croyais qu'elle était ".-"
Code VB :
print #a, "place ";X;" ";Y;Lettre$
Ce serait pas plutôt : print #a, "place ";X;" ";Y;" ;|"+Lettre$
Code VB :
a$=Inkey$ If a$=Lettre$ then
C'est normal, cette ligne qui commence par "then" ?
La condition ne fonctionnera pas, puisque a$ est ta frappe au clavier, alors que Lettre$ est le code morse : l'ordi ne sait pas que "a" est ".-", il te faut trouver le moyen de le lui dire.
Juste à la suite :
Code VB :
print #A, "place ";X;" ";Y+5;" ;| Juste ! " else print #A, "place ";X;" ";Y+5;" ;| Faux ! " wait Goto [MENU] end if
C'est quoi, ce wait / goto [MENU] / end if ?
Le programme attend au milieu d'une condition et va à [MENU] quand une action de l'utilisateur est détectée. Mais [MENU] n'existe pas.
Code VB :
print #A, "place ";X;" ";Y+5;" ;| Juste ! "
Ta fenêtre s'appelle #a ou #A ?
J'ai un peu adapté ton programme, à toi de comprendre comment il marche

Code VB :
'29 fev 23h10 NOMAINWIN X=10 Y=10 WindowHeight=800 WindowWidth=700 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Décoder " for graphics_nsb AS #a #a, "setfocus" #a, "when characterInput [A]" #a, "TRAPCLOSE [closeHelp]" gosub [tirage_au_sort] wait [A] a$=Inkey$ print #a, "place ";X+50;" ";Y+40;" ;|"+UPPER$(a$) print #a, "place ";X;" ";Y+60;" " If UPPER$(a$)=UPPER$(Rep$) then print #a, "| Réponse juste ! " else print #a, "| Réponse fausse ! " end if Y=Y+90 gosub [tirage_au_sort] wait [tirage_au_sort] '(changé Chiffre par Nombre, un nombre contenant plusieurs chiffres...) Nombre = INT(26*RND(1)) if ( Nombre = 1 ) then Rep$="a":Lettre$ = ".-" if ( Nombre = 2 ) then Rep$="b":Lettre$ = "-..." if ( Nombre = 3 ) then Rep$="c":Lettre$ = "-.-." if ( Nombre = 4 ) then Rep$="d":Lettre$ = "-.." if ( Nombre = 5 ) then Rep$="e":Lettre$ = "." if ( Nombre = 6 ) then Rep$="f":Lettre$ = "..-." if ( Nombre = 7 ) then Rep$="g":Lettre$ = "--." if ( Nombre = 8 ) then Rep$="h":Lettre$ = "...." if ( Nombre = 9 ) then Rep$="i":Lettre$ = ".." if ( Nombre = 10 ) then Rep$="j":Lettre$ = ".---" if ( Nombre = 11 ) then Rep$="k":Lettre$ = "-.-" if ( Nombre = 12 ) then Rep$="l":Lettre$ = ".-.." if ( Nombre = 13 ) then Rep$="m":Lettre$ = "--" if ( Nombre = 14 ) then Rep$="n":Lettre$ = "-." if ( Nombre = 15 ) then Rep$="o":Lettre$ = "---" if ( Nombre = 16 ) then Rep$="p":Lettre$ = ".--." if ( Nombre = 17 ) then Rep$="q":Lettre$ = "--.-" if ( Nombre = 18 ) then Rep$="r":Lettre$ = ".-." if ( Nombre = 19 ) then Rep$="s":Lettre$ = "..." if ( Nombre = 20 ) then Rep$="t":Lettre$ = "-" if ( Nombre = 21 ) then Rep$="u":Lettre$ = "..-" if ( Nombre = 22 ) then Rep$="v":Lettre$ = "...-" if ( Nombre = 23 ) then Rep$="w":Lettre$ = "-..-" if ( Nombre = 24 ) then Rep$="x":Lettre$ = "-..-" if ( Nombre = 25 ) then Rep$="y":Lettre$ = "-.--" if ( Nombre = 26 ) then Rep$="z":Lettre$ = "--.." print #a, "place ";X;" ";Y;" ;|A quelle lettre correspond ce symbole ?" print #a, "place ";X+50;" ";Y+20;" ;|"+Lettre$ return [closeHelp] close #a end
A+
Edité par Christophe Le 29/02/2016 à 23h32
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
A oui effectivement ^^ Bon j'ai essayé de corriger tous les points et de ne pas trop regarder donc code pour ne pas copier ton travail.
Voila ou j'en suis, sa ne marche toujours pas, mais c'est déja mieux ^^
En tous cas merci beaucoup pour le temps passé a m'expliquer
Code VB :
Edité par pmp Le 02/03/2016 à 20h21
Voila ou j'en suis, sa ne marche toujours pas, mais c'est déja mieux ^^
En tous cas merci beaucoup pour le temps passé a m'expliquer

Code VB :
NOMAINWIN close #x X=10 Y=10 WindowHeight=800 WindowWidth=700 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Décoder " for graphics AS #a 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$ = "--.." Chiffre = INT(14*RND(1)) if ( Chiffre= 1 ) then Rep$="a":Lettre$ = ".-" if ( Chiffre = 2 ) then Rep$="b":Lettre$ = "-..." if ( Chiffre = 3 ) then Rep$="c":Lettre$ = "-.-." if ( Chiffre = 4 ) then Rep$="d":Lettre$ = "-.." if ( Chiffre = 5 ) then Rep$="e":Lettre$ = "." if ( Chiffre = 6 ) then Rep$="f":Lettre$ = "..-." if ( Chiffre = 7 ) then Rep$="g":Lettre$ = "--." if ( Chiffre = 8 ) then Rep$="h":Lettre$ = "...." if ( Chiffre = 9 ) then Rep$="i":Lettre$ = ".." if ( Chiffre = 10 ) then Rep$="j":Lettre$ = ".---" if ( Chiffre = 11 ) then Rep$="k":Lettre$ = "-.-" if ( Chiffre = 12 ) then Rep$="l":Lettre$ = ".-.." if ( Chiffre = 13 ) then Rep$="m":Lettre$ = "--" if ( Chiffre = 14 ) then Rep$="n":Lettre$ = "-." if ( Chiffre = 15 ) then Rep$="o":Lettre$ = "---" if ( Chiffre = 16 ) then Rep$="p":Lettre$ = ".--." if ( Chiffre = 17 ) then Rep$="q":Lettre$ = "--.-" if ( Chiffre = 18 ) then Rep$="r":Lettre$ = ".-." if ( Chiffre = 19 ) then Rep$="s":Lettre$ = "..." if ( Chiffre = 20 ) then Rep$="t":Lettre$ = "-" if ( Chiffre = 21 ) then Rep$="u":Lettre$ = "..-" if ( Chiffre = 22 ) then Rep$="v":Lettre$ = "...-" if ( Chiffre = 23 ) then Rep$="w":Lettre$ = "-..-" if ( Chiffre = 24 ) then Rep$="x":Lettre$ = "-..-" if ( Chiffre = 25 ) then Rep$="y":Lettre$ = "-.--" if ( Chiffre = 26 ) then Rep$="z":Lettre$ = "--.." print #a, "place ";X;" ";Y;" ;|"+Lettre$ #a, "setfocus" #a "when characterInput [C]" #a, "TRAPCLOSE [Christophe]" wait [C] Roland$=Inkey$ print #a, "place ";X;" ";Y+5;" ;|"+Roland$ If UPPER$(Roland$)= UPPER$(Rep$) then print #a, "place ";X;" ";Y+10;" ;| Juste ! " else print #a, "place ";X;" ";Y+10;" ;| Faux ! " Close #a Goto [Menu] end if Y=Y+15 Goto [Recevoir] [Christophe] Goto [Menu] Close #a
Edité par pmp Le 02/03/2016 à 20h21
Tu pouvais copier sur moi et sur Roland, il le fallait, c'était fait pour. Pas étonnant que tu aie du mal a avancer, que tu t'obstines à coder façon plat de spaghetti qu'on ne sait pas par quel bout prendre, et a utiliser massivement du goto ceci ou celà alors que des gosub/return sont plus souples, plus adaptés, plus "carrés" au niveau de la programmation.
Plat de spaghetti
Code VB :
Le même dans un souci de lisibilité :
Code VB :
C'est pas mieux comme ça ?
Reprend nos exemples, demande-toi pourquoi on a mis telle instruction à tel endroit, fais comme si tu étais toi-même le compilateur et exécute mentalement, ligne après ligne, le programme. C'est pas toujours facile, ni franchement agréable mais c'est formateur, bien plus que de partir à l'aventure avec le peu de choses qu tu sais du langage de programmation.
J'attend ton explication de texte ^^
Edité par Christophe Le 02/03/2016 à 23h55
Plat de spaghetti
Code VB :
print #a, "place ";X;" ";Y;" ;|"+Lettre$ #a, "setfocus" #a "when characterInput [C]" #a, "TRAPCLOSE [Christophe]" wait [C] Roland$=Inkey$ print #a, "place ";X;" ";Y+5;" ;|"+Roland$ If UPPER$(Roland$)= UPPER$(Rep$) then print #a, "place ";X;" ";Y+10;" ;| Juste ! " else print #a, "place ";X;" ";Y+10;" ;| Faux ! " Close #a Goto [Menu] end if
Le même dans un souci de lisibilité :
Code VB :
print #a, "place ";X;" ";Y;" ;|"+Lettre$ #a, "setfocus" #a "when characterInput [C]" #a, "TRAPCLOSE [Christophe]" wait [C] 'lorsque le programme détecte une frappe clavier Roland$=Inkey$ print #a, "place ";X;" ";Y+5;" ;|"+Roland$ If UPPER$(Roland$)= UPPER$(Rep$) then 'si le caractère entré est le caractère attendu, alors print #a, "place ";X;" ";Y+10;" ;| Juste ! " 'on affiche "juste" else print #a, "place ";X;" ";Y+10;" ;| Faux ! " 'sinon on affiche "faux" close #a goto [Menu] end if
C'est pas mieux comme ça ?
Reprend nos exemples, demande-toi pourquoi on a mis telle instruction à tel endroit, fais comme si tu étais toi-même le compilateur et exécute mentalement, ligne après ligne, le programme. C'est pas toujours facile, ni franchement agréable mais c'est formateur, bien plus que de partir à l'aventure avec le peu de choses qu tu sais du langage de programmation.
J'attend ton explication de texte ^^
Edité par Christophe Le 02/03/2016 à 23h55
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Bonjour la communauté,
Besoin d'un conseil pour avancer dans mon programme.
Je m'amuse a faire des stats sur le tennis.
Je me suis fais un petit prog qui fonctionne bien mais qui est un peu pénible à long terme lorsque je rentre des données.
Je m'explique:
Lorsque je rentre le nombre de sets d'un match ayant eu lieu entre 2 joueurs,je suis obligé de le faire touche par touche.
Si le résultat du match est 62 pour le 1er set 57 pour le second set et 63 pour le 3 ème set,je dois rentrer à l'aide de 6 inputs différents,et donc 6 variables différentes la valeur de chaque set.Ainsi la manip au clavier se traduit par 6 (entrée),2 (entrée),5 (entrée),ect ... jusqu'a la dernière 3 (entrée).Donc beaucoup de manip lorqu'il y a beaucoup de match à rentrer et un risque d'erreur plus important.
L'idéal serait de rentrer au clavier 625763 puis (entrée),puis de pouvoir faire exploiter au programme chaque nombre séparemment pour qu'il puisse le mettre dans 6 variables différentes.Or je ne trouve pas la fonction qui permette de faire cela.
Si par exemple j'ecris l'ordre suivant dans mon programme:
input" Rentrer le résultat du match",resmatch,la variable resmatch contiendra bien 625763,mais comment dire au programme que le 6 doit aller dans la variable A,le 2 dans la variable B,le 5 dans la variable C ect ...
.En espérant ne pas avoir été trop brouillon quant à l'exposé de mon problème.
Si quelqu'un pouvait me donner un conseil ce serait sympathique,car j'ai essayé de mon coté de trouver une solution,mais sans succès.
Merci et au plaisir
Franck.
Besoin d'un conseil pour avancer dans mon programme.
Je m'amuse a faire des stats sur le tennis.
Je me suis fais un petit prog qui fonctionne bien mais qui est un peu pénible à long terme lorsque je rentre des données.
Je m'explique:
Lorsque je rentre le nombre de sets d'un match ayant eu lieu entre 2 joueurs,je suis obligé de le faire touche par touche.
Si le résultat du match est 62 pour le 1er set 57 pour le second set et 63 pour le 3 ème set,je dois rentrer à l'aide de 6 inputs différents,et donc 6 variables différentes la valeur de chaque set.Ainsi la manip au clavier se traduit par 6 (entrée),2 (entrée),5 (entrée),ect ... jusqu'a la dernière 3 (entrée).Donc beaucoup de manip lorqu'il y a beaucoup de match à rentrer et un risque d'erreur plus important.
L'idéal serait de rentrer au clavier 625763 puis (entrée),puis de pouvoir faire exploiter au programme chaque nombre séparemment pour qu'il puisse le mettre dans 6 variables différentes.Or je ne trouve pas la fonction qui permette de faire cela.
Si par exemple j'ecris l'ordre suivant dans mon programme:
input" Rentrer le résultat du match",resmatch,la variable resmatch contiendra bien 625763,mais comment dire au programme que le 6 doit aller dans la variable A,le 2 dans la variable B,le 5 dans la variable C ect ...
.En espérant ne pas avoir été trop brouillon quant à l'exposé de mon problème.
Si quelqu'un pouvait me donner un conseil ce serait sympathique,car j'ai essayé de mon coté de trouver une solution,mais sans succès.
Merci et au plaisir
Franck.
Bon voila sa marche, j'ai repris ton code et j'ai compris comment sa marchait
Voila tous le code du jeu, par contre il y a un problème dans décoder, sa ne revienne pas au menu sa met une erreur.
Code VB :
Edité par pmp Le 03/03/2016 à 19h51

Voila tous le code du jeu, par contre il y a un problème dans décoder, sa ne revienne pas au menu sa met une erreur.
Code VB :
[Menu] v=0 CLS button #x, "Décoder", [Recevoir], UL, 40, 100 button #x, "Coder", [transmettre], UL, 200, 100 button #x, "Alphabet", [Alphabet], UL, 40, 200 button #x, "Quitter", [stop], UL, 200, 200 WindowHeight=320 WindowWidth=350 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Menu " for graphics for graphics_nsb AS #x print #x, "place ";120;" ";60;" ;| - Morse - " wait Cls NOMAINWIN WindowHeight=800 WindowWidth=700 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Alphabet " for graphics for graphics_nsb AS #A print #A, "place ";100;" ";15;" ;| Lettre Morse Moyen Mnémotechnique* " print #A, "place ";100;" ";35;" ;\ A .- Arnold, allo, Arlon, Arnaud" print #A, "place ";100;" ";50;" ;\ B -... Bonaparte " print #A, "place ";100;" ";65;" ;\ C -.-. Contemporain, Coca-Cola " print #A, "place ";100;" ";80;" ;\ D -.. Do-ré-mi, document " print #A, "place ";100;" ";95;" ;\ E . Eh " print #A, "place ";100;" ";110;" ;\ F ..-. Farandole, fanfaronne " print #A, "place ";100;" ";125;" ;\ G --. Gondole, Gloutonne " print #A, "place ";100;" ";140;" ;\ H .... Hilarité, hystérique, " print #A, "place ";100;" ";155;" ;\ I .. Ici, Idriss, Ibis " print #A, "place ";100;" ";170;" ;\ J .--- Jablonovo, j’ai gros bobo " print #A, "place ";100;" ";185;" ;\ K -.- Kohinor, Korridor,Koalo " print #A, "place ";100;" ";190+10;" ;\ L .-.. Limonade " print #A, "place ";100;" ";205+10;" ;\ M -- Moto " print #A, "place ";100;" ";220+10;" ;\ N -. Noël " print #A, "place ";100;" ";235+10;" ;\ O --- Oh bobo, Opporto " print #A, "place ";100;" ";250+10;" ;\ P .--. Phylosophe , philosophie " print #A, "place ";100;" ";265+10;" ;\ Q --.- Quoquorico " print #A, "place ";100;" ";280+10;" ;\ R .-. Ricoré " print #A, "place ";100;" ";295+10;" ;\ S ... Sardine, salade " print #A, "place ";100;" ";310+10;" ;\ T - Thon, tôt " print #A, "place ";100;" ";325+10;" ;\ U ..- Union " print #A, "place ";100;" ";340+10;" ;\ V ...- Valparaiso, végétation " print #A, "place ";100;" ";355+10;" ;\ W .-- Xagon-post(e), wagon long " print #A, "place ";100;" ";370+10;" ;\ X -..- Xochimilco, oxydation " print #A, "place ";100;" ";385+10;" ;\ Y -.-- Yoshimoto " print #A, "place ";100;" ";400+10;" ;\ Z --.. Zorro est là " print #A, "place ";100;" ";415+10;" ;\ . .-.-.- AAA (.-+.-+.-) " print #A, "place ";100;" ";430+10;" ;\ , --..-- MIM (--+..+--) " print #A, "place ";100;" ";445+10;" ;\ ? ..--.. IMI (..+--+..) " print #A, "place ";100;" ";460+10;" ;\ ! -.-.-- AAM (.-+.-+--) " print #A, "place ";100;" ";475+10;" ;\ ( -.--. KN (-.-+-. ) " print #A, "place ";100;" ";490+10;" ;\ ) -.--.- KK (-.-+-.-) " print #A, "place ";100;" ";505+10;" ;\ " print #A, "place ";100;" ";520+10;" ;\ " print #A, "place ";50;" ";600;" ;\ *Le code morse est facilement mémorisable à l’aide des codes courts et longs " print #A, "place ";50;" ";615;" ;\ remplacés par des syllabes. Le code long (-) remplacé par une syllabe en [o]." print #A, "place ";50;" ";630;" ;\ Le code court (.) remplacé par une des autres voyelles " print #A, "place ";50;" ";645;" ;\ Si tu souhaites avoir la liste complète du code morse, c'est ici : " print #A, "place ";50;" ";660;" ;\ https://fr.wikipedia.org/wiki/Morse_(alphabet)#Tables_d.E2.80.99encodage " Print "" Print "" Print " Appui sur entrée" input ""; A goto [Menu] [Recevoir] X=10 Y=10 WindowHeight=800 WindowWidth=700 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Décoder " for graphics AS #a [Recevoir2] 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$ = "--.." Chiffre = INT(14*RND(1)) if ( Chiffre= 1 ) then Rep$="a":Lettre$ = ".-" if ( Chiffre = 2 ) then Rep$="b":Lettre$ = "-..." if ( Chiffre = 3 ) then Rep$="c":Lettre$ = "-.-." if ( Chiffre = 4 ) then Rep$="d":Lettre$ = "-.." if ( Chiffre = 5 ) then Rep$="e":Lettre$ = "." if ( Chiffre = 6 ) then Rep$="f":Lettre$ = "..-." if ( Chiffre = 7 ) then Rep$="g":Lettre$ = "--." if ( Chiffre = 8 ) then Rep$="h":Lettre$ = "...." if ( Chiffre = 9 ) then Rep$="i":Lettre$ = ".." if ( Chiffre = 10 ) then Rep$="j":Lettre$ = ".---" if ( Chiffre = 11 ) then Rep$="k":Lettre$ = "-.-" if ( Chiffre = 12 ) then Rep$="l":Lettre$ = ".-.." if ( Chiffre = 13 ) then Rep$="m":Lettre$ = "--" if ( Chiffre = 14 ) then Rep$="n":Lettre$ = "-." if ( Chiffre = 15 ) then Rep$="o":Lettre$ = "---" if ( Chiffre = 16 ) then Rep$="p":Lettre$ = ".--." if ( Chiffre = 17 ) then Rep$="q":Lettre$ = "--.-" if ( Chiffre = 18 ) then Rep$="r":Lettre$ = ".-." if ( Chiffre = 19 ) then Rep$="s":Lettre$ = "..." if ( Chiffre = 20 ) then Rep$="t":Lettre$ = "-" if ( Chiffre = 21 ) then Rep$="u":Lettre$ = "..-" if ( Chiffre = 22 ) then Rep$="v":Lettre$ = "...-" if ( Chiffre = 23 ) then Rep$="w":Lettre$ = "-..-" if ( Chiffre = 24 ) then Rep$="x":Lettre$ = "-..-" if ( Chiffre = 25 ) then Rep$="y":Lettre$ = "-.--" if ( Chiffre = 26 ) then Rep$="z":Lettre$ = "--.." print #a, "place ";X;" ";Y;" ;|"+Lettre$ #a, "setfocus" #a "when characterInput [C]" #a, "TRAPCLOSE [Christophe]" wait [C] 'lorsque le programme détecte une frappe clavier Roland$=Inkey$ print #a, "place ";X+20;" ";Y;" ;|"+Roland$ If UPPER$(Roland$)= UPPER$(Rep$) then 'si le caractère entré est le caractère attendu, alors print #a, "place ";X;" ";Y+20;" ;| Juste ! " 'on affiche "juste" Y=Y+35 Goto [Recevoir2] else print #a, "place ";X;" ";Y+10;" ;| Faux ! " 'sinon on affiche "faux" close #a goto [Menu] end if [Christophe] Goto [Menu] Close #a [transmettre] WindowWidth=1100 WindowHeight=500 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Fenêtre" for graphics AS #w 'GRAPHICBOX #w.m 0, 0, 280, 460 print #w, "setfocus" x=20: y=50 a=550: b=50 #w "when characterInput [A]" #w, "TRAPCLOSE [closeHelp]" wait [A] a$=Inkey$ If asc(a$)=00 then print #w, "place ";a;" ";b;"/" If asc(a$)=8 then 'si on a appuyé sur "del" : 'on efface le dernier caractère entré x=x-24 '2 fois l'écart entre caractère, à cause du fonctionnement de inkey$ (explications dans le post) print #w, "place ";x;" ";y;" ;| " 'et on efface le code morse correspondant a=a-40 print #w, "place ";a;" ";b;" ;| " else 'pour tous les autres caractères : if len(a$)=1 then print #w, "place ";x;" ";y;" ;|";a$ if ( a$="a" ) then L$=".-/" if ( a$="b" ) then L$="-.../" if ( a$="c" ) then L$="-.-./" if ( a$="d" ) then L$="-../" if ( a$="e" ) then L$="./" if ( a$="f" ) then L$="..-./" if ( a$="g" ) then L$="--./" if ( a$="h" ) then L$="..../" if ( a$="i" ) then L$="../" if ( a$="j" ) then L$=".---/" if ( a$="k" ) then L$="-.-/" if ( a$="l" ) then L$=".-../" if ( a$="m" ) then L$="--/" if ( a$="n" ) then L$="-./" if ( a$="o" ) then L$="---/" if ( a$="p" ) then L$=".--./" if ( a$="q" ) then L$="--.-/" if ( a$="r" ) then L$=".-./" if ( a$="s" ) then L$= ".../" if ( a$="t" ) then L$="-/" if ( a$="u" ) then L$="..-/" if ( a$="v" ) then L$="...-/" if ( a$="w" ) then L$="-..-/" if ( a$="x" ) then L$="-..-/" if ( a$="y" ) then L$="-.--/" if ( a$="z" ) then L$="--../" print #w, "place ";a;" ";b;" ;|";L$ a=a+20 x=x+12 end if L$="" a$="" If x=500 then x=20: y=y+20 If a=1050 then a=550: b=b+20 wait [closeHelp] Close #w goto [Menu] [stop] stop
Edité par pmp Le 03/03/2016 à 19h51
Citation:
Rien d'insurmontable, à mon avis, on verra ça demain.
A+
par contre il y a un problème dans décoder, sa ne revienne pas au menu sa met une erreur.
Rien d'insurmontable, à mon avis, on verra ça demain.
A+
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Finalement il y a des choses à revoir
En ce qui concerne la fenêtre [Menu] tu as bien rédigé le code (cependant v=0 et CLS ne servent à rien)
Par contre pour la fenêtre suivante, alphabet, tu as oublié l'étiquette [Alphabet] que l'ordinateur cherchera lorsqu'on cliquera sur le bouton adéquat, et tu termine cette section non pas par un wait, mais par un "Goto' qui te ramène a [menu], et te fera donc ouvrir la fenêtre #x déjà ouverte...
A cet instant je ne sais pas s'il suffit simplement de fermer #A pour que tu retrouve ton menu toujours ouvert, mais j'ai l'impression que tu va trop vite, sans réfléchir ou au moins sans valider ce que tu as déjà écrit avant de passer à l'étape suivante.
Par exemple, il y a deux bourdes manifestes dans cet extrait :
Code VB :
Et on a déjà vu les deux points suivants, non réglés : à quoi te servent les chaînes a$ à z$, et que fais-tu du conflit possible entre a$=".-" et a$=Inkey$ ?
Termine déjà tes programmes séparément, et quand ils fonctionneront "aux petits oignons", on pourra les intégrer dans un système de fenêtre qui amènera une complexité supplémentaire...
Autrement, voici à quoi ça pourrait ressembler (les fenêtres sont vides, c'est juste le mécanisme)
Code VB :
Si tu as des questions au sujet du fonctionnement, tu fais signe
En ce qui concerne la fenêtre [Menu] tu as bien rédigé le code (cependant v=0 et CLS ne servent à rien)
Par contre pour la fenêtre suivante, alphabet, tu as oublié l'étiquette [Alphabet] que l'ordinateur cherchera lorsqu'on cliquera sur le bouton adéquat, et tu termine cette section non pas par un wait, mais par un "Goto' qui te ramène a [menu], et te fera donc ouvrir la fenêtre #x déjà ouverte...
A cet instant je ne sais pas s'il suffit simplement de fermer #A pour que tu retrouve ton menu toujours ouvert, mais j'ai l'impression que tu va trop vite, sans réfléchir ou au moins sans valider ce que tu as déjà écrit avant de passer à l'étape suivante.
Par exemple, il y a deux bourdes manifestes dans cet extrait :
Code VB :
[Christophe] Goto [Menu] Close #a 'tu ne passera jamais par close #a [transmettre] 'et c'est tant mieux car tu continuerais dans {transmettre], et ce n'est pas ce que tu voulais faire... WindowWidth=1100 ...
Et on a déjà vu les deux points suivants, non réglés : à quoi te servent les chaînes a$ à z$, et que fais-tu du conflit possible entre a$=".-" et a$=Inkey$ ?
Termine déjà tes programmes séparément, et quand ils fonctionneront "aux petits oignons", on pourra les intégrer dans un système de fenêtre qui amènera une complexité supplémentaire...
Autrement, voici à quoi ça pourrait ressembler (les fenêtres sont vides, c'est juste le mécanisme)
Code VB :
'06 mars 00h35 'on génère une fenêtre principale, avec 4 boutons : '"décoder","coder", "alphabet", qui ouvrent chacun une fenêtre, et 'un bouton "quitter". 'les fenêtres peuvent être ouvertes en même temps nomainwin 'fenetre principale UpperLeftX = 20 UpperLeftY = 20 WindowWidth = 280 WindowHeight = 260 button #principale, "Décoder", [Recevoir], UL, 20, 50, 100, 60 button #principale, "Coder", [transmettre], UL, 140, 50, 100, 60 button #principale, "Alphabet", [Alphabet], UL, 20, 120, 100, 60 button #principale, "Quitter", [stop], UL, 140, 120, 100, 60 open "Menu " for graphics for graphics_nsb AS #principale 'graphics_nsb print #principale, "place ";100;" ";30;" ;| - Morse - " #principale, "TRAPCLOSE [stop]" wait [Recevoir] 'si la fenêtre est déjà ouverte, on ferme la fenêtre 'je n'ai pas vu d'instructions permettant de savoir si une fenêtre est ouverte ou fermée 'grâce à fenetreDecoder, on saura si la fenêtre est ouverte ou fermée : 'fenetreDecoder=1 -> fenêtre ouverte 'fenetreDecoder=0 -> fenêtre fermée if fenetreDecoder=1 then close #decode else fenetreDecoder=1 UpperLeftX = 320 UpperLeftY = 20 WindowWidth = 400 WindowHeight = 300 open "Décoder " for graphics AS #decode #decode, "TRAPCLOSE [quitte_decode]" wait [quitte_decode] fenetreDecoder=0 close #decode wait [transmettre] if fenetreCoder=1 then close #code else fenetreCoder=1 fenetreCoder=1 UpperLeftX = 340 UpperLeftY = 40 WindowWidth = 400 WindowHeight = 300 open "Coder " for graphics AS #code #code, "TRAPCLOSE [quitte_code]" wait [quitte_code] fenetreCoder=0 close#code wait [Alphabet] if fenetreAlphabet=1 then close #alphabet else fenetreAlphabet=1 UpperLeftX = 360 UpperLeftY = 60 WindowWidth = 400 WindowHeight = 300 open "Alphabet " for graphics AS #alphabet #alphabet, "TRAPCLOSE [quitte_alpha]" wait [quitte_alpha] fenetreAlphabet=0 close #alphabet wait [stop] if fenetreDecoder=1 then close #decode if fenetreCoder=1 then close #code if fenetreAlphabet=1 then close #alphabet close #principale end '(ou stop, au choix)
Si tu as des questions au sujet du fonctionnement, tu fais signe
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Voilà je crois que j'ai fin tous marche voilà le code :
Code VB :
Code VB :
[Menu] v=0 CLS button #x, "Décoder", [Recevoir], UL, 40, 100 button #x, "Coder", [transmettre], UL, 200, 100 button #x, "Alphabet", [Alphabet], UL, 40, 200 button #x, "Quitter", [stop], UL, 200, 200 WindowHeight=320 WindowWidth=350 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Menu " for graphics for graphics_nsb AS #x print #x, "place ";120;" ";60;" ;| - Morse - " wait [Alphabet] Cls NOMAINWIN WindowHeight=800 WindowWidth=700 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Alphabet " for graphics for graphics_nsb AS #A print #A, "place ";100;" ";15;" ;| Lettre Morse Moyen Mnémotechnique* " print #A, "place ";100;" ";35;" ;\ A .- Arnold, allo, Arlon, Arnaud" print #A, "place ";100;" ";50;" ;\ B -... Bonaparte " print #A, "place ";100;" ";65;" ;\ C -.-. Contemporain, Coca-Cola " print #A, "place ";100;" ";80;" ;\ D -.. Do-ré-mi, document " print #A, "place ";100;" ";95;" ;\ E . Eh " print #A, "place ";100;" ";110;" ;\ F ..-. Farandole, fanfaronne " print #A, "place ";100;" ";125;" ;\ G --. Gondole, Gloutonne " print #A, "place ";100;" ";140;" ;\ H .... Hilarité, hystérique, " print #A, "place ";100;" ";155;" ;\ I .. Ici, Idriss, Ibis " print #A, "place ";100;" ";170;" ;\ J .--- Jablonovo, j’ai gros bobo " print #A, "place ";100;" ";185;" ;\ K -.- Kohinor, Korridor,Koalo " print #A, "place ";100;" ";190+10;" ;\ L .-.. Limonade " print #A, "place ";100;" ";205+10;" ;\ M -- Moto " print #A, "place ";100;" ";220+10;" ;\ N -. Noël " print #A, "place ";100;" ";235+10;" ;\ O --- Oh bobo, Opporto " print #A, "place ";100;" ";250+10;" ;\ P .--. Phylosophe , philosophie " print #A, "place ";100;" ";265+10;" ;\ Q --.- Quoquorico " print #A, "place ";100;" ";280+10;" ;\ R .-. Ricoré " print #A, "place ";100;" ";295+10;" ;\ S ... Sardine, salade " print #A, "place ";100;" ";310+10;" ;\ T - Thon, tôt " print #A, "place ";100;" ";325+10;" ;\ U ..- Union " print #A, "place ";100;" ";340+10;" ;\ V ...- Valparaiso, végétation " print #A, "place ";100;" ";355+10;" ;\ W .-- Xagon-post(e), wagon long " print #A, "place ";100;" ";370+10;" ;\ X -..- Xochimilco, oxydation " print #A, "place ";100;" ";385+10;" ;\ Y -.-- Yoshimoto " print #A, "place ";100;" ";400+10;" ;\ Z --.. Zorro est là " print #A, "place ";100;" ";415+10;" ;\ . .-.-.- AAA (.-+.-+.-) " print #A, "place ";100;" ";430+10;" ;\ , --..-- MIM (--+..+--) " print #A, "place ";100;" ";445+10;" ;\ ? ..--.. IMI (..+--+..) " print #A, "place ";100;" ";460+10;" ;\ ! -.-.-- AAM (.-+.-+--) " print #A, "place ";100;" ";475+10;" ;\ ( -.--. KN (-.-+-. ) " print #A, "place ";100;" ";490+10;" ;\ ) -.--.- KK (-.-+-.-) " print #A, "place ";100;" ";505+10;" ;\ " print #A, "place ";100;" ";520+10;" ;\ " print #A, "place ";50;" ";600;" ;\ *Le code morse est facilement mémorisable à l’aide des codes courts et longs " print #A, "place ";50;" ";615;" ;\ remplacés par des syllabes. Le code long (-) remplacé par une syllabe en [o]." print #A, "place ";50;" ";630;" ;\ Le code court (.) remplacé par une des autres voyelles " print #A, "place ";50;" ";645;" ;\ Si tu souhaites avoir la liste complète du code morse, c'est ici : " print #A, "place ";50;" ";660;" ;\ https://fr.wikipedia.org/wiki/Morse_(alphabet)#Tables_d.E2.80.99encodage " Print "" Print "" Print " Appui sur entrée" input ""; A goto [Menu] [Recevoir] close #x X=10 Y=10 WindowHeight=800 WindowWidth=700 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Décoder " for graphics AS #a [Recevoir2] 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$ = "--.." Chiffre = INT(14*RND(1)) if ( Chiffre= 1 ) then Rep$="a":Lettre$ = ".-" if ( Chiffre = 2 ) then Rep$="b":Lettre$ = "-..." if ( Chiffre = 3 ) then Rep$="c":Lettre$ = "-.-." if ( Chiffre = 4 ) then Rep$="d":Lettre$ = "-.." if ( Chiffre = 5 ) then Rep$="e":Lettre$ = "." if ( Chiffre = 6 ) then Rep$="f":Lettre$ = "..-." if ( Chiffre = 7 ) then Rep$="g":Lettre$ = "--." if ( Chiffre = 8 ) then Rep$="h":Lettre$ = "...." if ( Chiffre = 9 ) then Rep$="i":Lettre$ = ".." if ( Chiffre = 10 ) then Rep$="j":Lettre$ = ".---" if ( Chiffre = 11 ) then Rep$="k":Lettre$ = "-.-" if ( Chiffre = 12 ) then Rep$="l":Lettre$ = ".-.." if ( Chiffre = 13 ) then Rep$="m":Lettre$ = "--" if ( Chiffre = 14 ) then Rep$="n":Lettre$ = "-." if ( Chiffre = 15 ) then Rep$="o":Lettre$ = "---" if ( Chiffre = 16 ) then Rep$="p":Lettre$ = ".--." if ( Chiffre = 17 ) then Rep$="q":Lettre$ = "--.-" if ( Chiffre = 18 ) then Rep$="r":Lettre$ = ".-." if ( Chiffre = 19 ) then Rep$="s":Lettre$ = "..." if ( Chiffre = 20 ) then Rep$="t":Lettre$ = "-" if ( Chiffre = 21 ) then Rep$="u":Lettre$ = "..-" if ( Chiffre = 22 ) then Rep$="v":Lettre$ = "...-" if ( Chiffre = 23 ) then Rep$="w":Lettre$ = "-..-" if ( Chiffre = 24 ) then Rep$="x":Lettre$ = "-..-" if ( Chiffre = 25 ) then Rep$="y":Lettre$ = "-.--" if ( Chiffre = 26 ) then Rep$="z":Lettre$ = "--.." print #a, "place ";X;" ";Y;" ;|"+Lettre$ #a, "setfocus" #a "when characterInput [C]" #a, "TRAPCLOSE [Christophe]" wait [C] 'lorsque le programme détecte une frappe clavier Roland$=Inkey$ print #a, "place ";X+20;" ";Y;" ;|"+Roland$ If UPPER$(Roland$)= UPPER$(Rep$) then 'si le caractère entré est le caractère attendu, alors print #a, "place ";X;" ";Y+20;" ;| Juste ! " 'on affiche "juste" Y=Y+35 Goto [Recevoir2] else print #a, "place ";X;" ";Y+10;" ;| Faux ! " 'sinon on affiche "faux" close #a goto [Menu] end if [Christophe] Goto [Menu] Close #a [transmettre] close #x WindowWidth=1100 WindowHeight=500 UpperLeftX=INT((DisplayWidth-WindowWidth)/2) UpperLeftY=INT((DisplayHeight-WindowHeight)/2) open "Fenêtre" for graphics AS #w 'GRAPHICBOX #w.m 0, 0, 280, 460 print #w, "setfocus" x=20: y=50 a=550: b=50 #w "when characterInput [A]" #w, "TRAPCLOSE [closeHelp]" wait [A] a$=Inkey$ If asc(a$)=00 then print #w, "place ";a;" ";b;"/" If asc(a$)=8 then 'si on a appuyé sur "del" : 'on efface le dernier caractère entré x=x-24 '2 fois l'écart entre caractère, à cause du fonctionnement de inkey$ (explications dans le post) print #w, "place ";x;" ";y;" ;| " 'et on efface le code morse correspondant a=a-40 print #w, "place ";a;" ";b;" ;| " else 'pour tous les autres caractères : if len(a$)=1 then print #w, "place ";x;" ";y;" ;|";a$ if ( a$="a" ) then L$=".-/" if ( a$="b" ) then L$="-.../" if ( a$="c" ) then L$="-.-./" if ( a$="d" ) then L$="-../" if ( a$="e" ) then L$="./" if ( a$="f" ) then L$="..-./" if ( a$="g" ) then L$="--./" if ( a$="h" ) then L$="..../" if ( a$="i" ) then L$="../" if ( a$="j" ) then L$=".---/" if ( a$="k" ) then L$="-.-/" if ( a$="l" ) then L$=".-../" if ( a$="m" ) then L$="--/" if ( a$="n" ) then L$="-./" if ( a$="o" ) then L$="---/" if ( a$="p" ) then L$=".--./" if ( a$="q" ) then L$="--.-/" if ( a$="r" ) then L$=".-./" if ( a$="s" ) then L$= ".../" if ( a$="t" ) then L$="-/" if ( a$="u" ) then L$="..-/" if ( a$="v" ) then L$="...-/" if ( a$="w" ) then L$="-..-/" if ( a$="x" ) then L$="-..-/" if ( a$="y" ) then L$="-.--/" if ( a$="z" ) then L$="--../" print #w, "place ";a;" ";b;" ;|";L$ a=a+20 x=x+12 end if L$="" a$="" If x=500 then x=20: y=y+20 If a=1050 then a=550: b=b+20 wait [closeHelp] Close #w goto [Menu] [stop] stop nomainwin run "winhlp32 justbasic.hlp" end
Ah, ce sentiment de parler dans le vide... Je renonce 
Je renonce à te demander l'utilité des chaînes a$-z$ et comment tu gère l'éventuelle interférence entre a$="._", et a$=Inkey$, et toutes autres choses déjà (et re-, voire re-re-) signalées. Tu auras toute la discussion à relire quand tu te décideras à faire du nettoyage dans ton code.
Ne t'ai-je pas demandé aussi que tes codes fonctionnent nickel, avant de chercher à les mettre ensemble ?
Pour le fonctionnement de ta dernière version, voici ce que j'ai constaté :
Lancement :
On arrive bien sur quatre boutons : "Décoder", "Coder", "Alphabet" et "Quitter". -> OK
La barre de titre de la fenêtre affiche "Menu" et la fenêtre affiche "- Morse -" Il serait logique que ce soit l'inverse : la barre de titre affiche "Morse" (ou mieux, "apprendre le Morse" et la fenêtre "- Menu -" -> pour info
Bouton Décoder :
On arrive sur une fenêtre affichant un symbole morse.
Si on entre au clavier la lettre correspondant au code, on a l'affichage du mot "juste" puis un nouveau symbole à deviner s'affiche en dessous. Si ce n'est pas la bonne lettre, la fenêtre "Décoder" se ferme. -> A revoir.
Un premier clic sur son gadget de fermeture semble sans autre effet que d'afficher au premier plan la fenêtre "Menu". Quel est donc ce tour de force ? Le second clic sur le gadget de fermeture plante le programme, les messages sont "#a #x, these handles closed by JustBASIC. Please add the appropriate CLOSE commands", puis "Runtime Error : Handle #x already in use" -> A revoir.
Bouton Coder :
On arrive sur la fenêtre... "Fenêtre". Certes, c'est une fenêtre, mais le nom est-il bien choisi ? -> pour info
Ce qu'on tape au clavier s'affiche en caractères alphabétiques sur la gauche, en morse sur la droite -> -> OK
Lorsque le code morse passe à la ligne suivante, l'affichage alpha continue sur la même ligne... -> A revoir.
Le code morse ne contient pas de symbole "/" entre les lettres ni entre les mots, je suppose qu'on ne l'utilise que lorsqu'on transcrit à la main ce qu'on entend, et dans ce cas il ne sépare que les mots : voir pour cela les liens que j'ai placé un peu plus haut dans la discussion. -> -> pour info
fermeture par le gadget : -> OK
Bouton Alphabet :
On arrive sur la fenêtre "Alphabet". Rien à signaler, tout s'affiche conformément aux attentes. Fermeture par le gadget en haut à droite. -> OK
il y a un "E2.80.99" qui s'est invité dans le lien internet affiché -> pour info
Si on re-clique sur Alphabet, on a un plantage. Les messages sont "#A #x, these handles closed by JustBASIC. Please add the appropriate CLOSE commands" puis "Runtime Error : Handle #A already in use". -> A revoir.
Comme quoi ton programme, quoi que tu en dises, ne fonctionne pas.
Reprend chacun de tes sous-programmes [Recevoir], [transmettre] et [Alphabet], et transforme-les en programmes individuels pleinement fonctionnels : tu lance ton prog Recevoir, la fenêtre s'ouvre correctement, le comportement est celui attendu, et la fenêtre se ferme normalement sur ton initiative. Pareil pour les autres.
On verra après ce qu'on en fait. Hop, au taf !
Edité par Christophe Le 10/03/2016 à 20h23

Je renonce à te demander l'utilité des chaînes a$-z$ et comment tu gère l'éventuelle interférence entre a$="._", et a$=Inkey$, et toutes autres choses déjà (et re-, voire re-re-) signalées. Tu auras toute la discussion à relire quand tu te décideras à faire du nettoyage dans ton code.
Ne t'ai-je pas demandé aussi que tes codes fonctionnent nickel, avant de chercher à les mettre ensemble ?
Pour le fonctionnement de ta dernière version, voici ce que j'ai constaté :
Lancement :
On arrive bien sur quatre boutons : "Décoder", "Coder", "Alphabet" et "Quitter". -> OK
La barre de titre de la fenêtre affiche "Menu" et la fenêtre affiche "- Morse -" Il serait logique que ce soit l'inverse : la barre de titre affiche "Morse" (ou mieux, "apprendre le Morse" et la fenêtre "- Menu -" -> pour info
Bouton Décoder :
On arrive sur une fenêtre affichant un symbole morse.
Si on entre au clavier la lettre correspondant au code, on a l'affichage du mot "juste" puis un nouveau symbole à deviner s'affiche en dessous. Si ce n'est pas la bonne lettre, la fenêtre "Décoder" se ferme. -> A revoir.
Un premier clic sur son gadget de fermeture semble sans autre effet que d'afficher au premier plan la fenêtre "Menu". Quel est donc ce tour de force ? Le second clic sur le gadget de fermeture plante le programme, les messages sont "#a #x, these handles closed by JustBASIC. Please add the appropriate CLOSE commands", puis "Runtime Error : Handle #x already in use" -> A revoir.
Bouton Coder :
On arrive sur la fenêtre... "Fenêtre". Certes, c'est une fenêtre, mais le nom est-il bien choisi ? -> pour info
Ce qu'on tape au clavier s'affiche en caractères alphabétiques sur la gauche, en morse sur la droite -> -> OK
Lorsque le code morse passe à la ligne suivante, l'affichage alpha continue sur la même ligne... -> A revoir.
Le code morse ne contient pas de symbole "/" entre les lettres ni entre les mots, je suppose qu'on ne l'utilise que lorsqu'on transcrit à la main ce qu'on entend, et dans ce cas il ne sépare que les mots : voir pour cela les liens que j'ai placé un peu plus haut dans la discussion. -> -> pour info
fermeture par le gadget : -> OK
Bouton Alphabet :
On arrive sur la fenêtre "Alphabet". Rien à signaler, tout s'affiche conformément aux attentes. Fermeture par le gadget en haut à droite. -> OK
il y a un "E2.80.99" qui s'est invité dans le lien internet affiché -> pour info
Si on re-clique sur Alphabet, on a un plantage. Les messages sont "#A #x, these handles closed by JustBASIC. Please add the appropriate CLOSE commands" puis "Runtime Error : Handle #A already in use". -> A revoir.
Comme quoi ton programme, quoi que tu en dises, ne fonctionne pas.
Reprend chacun de tes sous-programmes [Recevoir], [transmettre] et [Alphabet], et transforme-les en programmes individuels pleinement fonctionnels : tu lance ton prog Recevoir, la fenêtre s'ouvre correctement, le comportement est celui attendu, et la fenêtre se ferme normalement sur ton initiative. Pareil pour les autres.
On verra après ce qu'on en fait. Hop, au taf !
Edité par Christophe Le 10/03/2016 à 20h23
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Bah alors, pmp, on te revoit quand ? Faut pas te décourager pour si peu

____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie