Un p'tit problème.
Je fais un programme en utilisant la SDL pour afficher.
Le "joueur", on va dire, doit taper un nombre et qui oh miracle s'affiche à l'écran. Cela je sais faire.
En gros c'est ça
tc_du_nombre [i] = event.key.keysym.unicode ;
Avec ça je récupère dans un char la touche frappée mais je veux aussi la valeur de la touche pour la mettre dans un int.
Tout bêtement je me suis dit , je vais faire
int numero = event.key.keysym.unicode; et hop en tapant la touche 1, numeo faudra 1 et hop c'est totalement faux, numero vaut 49.
Et hop je me suis dit t'es pas un peu idiot mon garçon...ce qui m'a vexé.
La question comment faire que numero est la valeur de la touche avec event.key.keysym.unicode
Je suis sur que c'est tout con comme truc.
Comme je vous ai sous la main j'ai une autre question du même genre.
Pour que le joueur ne puisse utiliser que les lettres de a à z; j'ai fais ceci
if ( event.key.keysym.unicode > a && z < event.key.keysym.unicode)
{...code....}
et cela marche...Et je comprends pas pourquoi... Le principe je comprends (c'est moi qui l'ai fait) mais pourquoi même la touche a fonctionne car c'est > et non pas >= ?
Dans le même ordre d'idée j'ai voulu que le joueur ne puisse utilisé que les chiffres donc j'ai fait
if ( event.key.keysym.unicode > 0 && 9 < event.key.keysym.unicode)
Et là j'ai tout le clavier qui fonctionne !
donc si vous pouvez améliorer le chose je suis preneur.
Pourquoi je me suis lancé dans l'apprentissage du c++ ? piouuuu
En fait, le numero que event.key.keysym.unicode te renvoit est la valeur ASCII de la touche presser. Puisqu'il y a un peu plus de 100 touche sur un clavier, un peut facilement assigner un chiffre entre 32 et 127 pour chaque charactere de cette facon(les nombres en bas de 32 sont réserver pour les touches special comme Enter et Backspace ect...). Regarde ce tableau, et tu comprendera.
Pour ce qui est de recuperer ton nombre, 0 = 48, 1 = 49 ect donc tu fait simplement:
tc_du_nombre [i] = event.key.keysym.unicode - 48;
Pour ce qui est des lettres, suffit de faire ceci(remarque les '):
if ( event.key.keysym.unicode > 'a' && event.key.keysym.unicode <= 'z')
Honte sur moi. J'avais essayer les ' mais cela n'avait pas marcher et je sais pourquoi (la honte) mais je tiendrais cette information pour moi pour éviter d'être ridicule une deuxième fois.
Merci pour ton aide, je vais pouvoir passer à autre chose