Passer de Getkey aux lettres de l'alphabet rapidement !
Posté le 23/05/2016 17:58
Salut à tous !
Aujourd'hui, pendant une heure peu intéressante de cours je me suis amusé à essayer de créer une formule permettant, grâce à la valeur GetKey pressée, de retourner un chiffre de 1 à 26 correspondant à la lettre pressée.
Et c'est chose réussie !
Voici le code "brut" pour ceux que ça intéresse :
Getkey[b]->[/b]G
(6-Frac (G/10)*10)(5+(Frac (G/10)*10>=[maroon]4[/maroon]))+8-Int G/10[b]->[/b]L
Et le code en plus clair (A correspond aux chiffres des dizaines de Getkey et B aux chiffre des unités)
Getkey[b]->[/b]G
Int G/10[b]->[/b]A
Frac (G/10)*10[b]->[/b]B
(6-B)(5+(B>=[maroon]4[/maroon]))+8-A[b]->[/b]L
Dans les deux cas, L correspond à la position dans l'alphabet de la lettre pressée. Si vous voulez récupérer directement la lettre et non le chiffre, il suffit d'exécuter un code comme ceci :
[gray]"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[/gray][b]->[/b]Str [maroon]1[/maroon]
Getkey[b]->[/b]G
Int G/10[b]->[/b]A
Frac (G/10)*10[b]->[/b]B
(6-B)(5+(B>=[maroon]4[/maroon]))+8-A[b]->[/b]L
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]1[/maroon],StrRight(StrLeft(Srt [maroon]1[/maroon],L),[maroon]1[/maroon])
Je ne sais pas si une formule de la sorte existe déjà, mais je suis fier de vous faire partager ma découverte qui peut s'avérer utile pour plusieurs programmes
!
Drakalex
Edit : Je tiens à préciser que si vous voulez utiliser cette formule il faut bien penser à vérifier que L se situe entre 1 et 26, car pour les touches autres que les lettres ça va renvoyer des valeurs bizarres !
Et le seul "bémol" sur cette formule est le faite que si la touche "DEL" est enfoncée, ça va renvoyer le chiffre correspondant à "P". Il y a donc deux moyens d'afficher "P". Sinon tout le reste est nickel
Citer : Posté le 23/05/2016 17:59 | #
Ok, j'ajoute ça à ce tuto : http://www.planet-casio.com/Fr/programmation/tutoriels.php?id=21
Citer : Posté le 23/05/2016 18:01 | #
Ah excellent, j'ai rajouté la pièce manquante apparemment ! J'ai également créé une formule pour les chiffres de 1 à 9 mais après je me suis rabattu sur les 26 lettres de l'alphabet.
Citer : Posté le 23/05/2016 18:45 | #
Sympa !
Je n'arrive plus à trouver de programme ou de topic qui en parle (c'était pour entrer un pseudo en un minimum de code je me souviens), mais il y a une autre façon de faire, assez similaire cependant, qui consiste à juste faire un "StrMid(" dans une chaîne qui contient tous les caractères de chaque touche (avec des espaces par-ci par-là.
L'avantage c'est que si le programme enregistre l'appui sur "alpha" ou "Shift", il suffit de changer la chaîne. Donc en gros avec ces 3 chaînes on peut récupérer toutes les touches au sein d'un programme. Du coup ça permet de récupérer les touches du style "+" ou "log" et même "→", pas seulement les lettres ou les chiffres. Et c'est assez léger niveau code, il n'y a que les fameuses chaines qui pèsent.
En plus je sais que je l'utilise dans l'un de mes programmes perso mais puisque je n'ai pas mon matériel avec moi je ne peux pas le retrouver...
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 23/05/2016 18:58 | #
Dans le tutoriel sur le Basic Casio, partie Pendu :
Do //Début de la boucle 3
Do //Début de la boucle 4
.1Getkey // raccourci pour « 0.1 * Getkey » ou « Getkey / 10 »
LpWhile Not Ans //Fin de la boucle 4
6-10Frac Ans→R //Algorithme pour convertir la valeur du Getkey en une valeur correspondant à la position de la lettre dans l'alphabet (ex : A = 1 ; B = 2 ... Z = 26)
8-Int Ans+5R+R(R<3→G //Fin de l'algorithme. Vous reconnaitrez l'utilisation d'un booléen (R<3)
LpWhile G<1 Or G>26 //Fin de la boucle 3. On vérifie que la touche appuyée soit valide, donc que G soit compris entre 1 et 26
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 23/05/2016 19:24 | #
@Totoyo : si c'est en réponse à mon message, ça n'est pas ce que je cherche. Ce dont je parle permet vraiment de récupérer tous les caractères de toutes les touches. Mais peut-être disais-tu ça pour Drakalex.
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 23/05/2016 19:55 | #
Oui, je m'en rappelle aussi de ce topic, ma ais impossible de me souvenir du nom...
Citer : Posté le 23/05/2016 19:56 | #
@Ne0tux : je répondais à Hackcell
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 23/05/2016 20:29 | #
Ah, bon je ne suis pas le premier à faire un algo de ce genre alors, mais j'en avais jamais vu sur le forum en cherchant donc voilà, au moins maintenant il y en a un (sauf si je sais pas chercher )
Citer : Posté le 23/05/2016 20:34 | #
Ne0tux, tu parles de mon ami Tsunéo qui avait posté ça il y a quelques années déjà
Lien
Ajouté le 23/05/2016 à 20:35 :
Voir quelques postes plus bas pour les lettres
Citer : Posté le 23/05/2016 20:38 | #
C'est encore un autre tutoriel que j'avais vue, ou la personne expliquait petit à petit ça démarche pour arriver a son code.
Citer : Posté le 23/05/2016 22:48 | #
Ahhh merci 9* !!!
Je savais bien que j'avais vu ça quelquepart !
C'est chouette de l'avoir retrouvé, j'ai cherché avec pas mal de mots clés mais je n'avais pas trouvé ! Merci !
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !