Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Passer de Getkey aux lettres de l'alphabet rapidement !
Drakalex007 Hors ligne Membre Points: 688 Défis: 0 Message

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


Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Drakalex007 Hors ligne Membre Points: 688 Défis: 0 Message

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.
Ne0tux Hors ligne Membre d'honneur Points: 3525 Défis: 265 Message

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...

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message

Citer : Posté le 23/05/2016 18:58 | #


Dans le tutoriel sur le Basic Casio, partie Pendu :
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"→Str 9
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



Ne0tux Hors ligne Membre d'honneur Points: 3525 Défis: 265 Message

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.
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

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...
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message
Drakalex007 Hors ligne Membre Points: 688 Défis: 0 Message

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 )
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

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
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

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.
Ne0tux Hors ligne Membre d'honneur Points: 3525 Défis: 265 Message

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 !
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 154 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